天高工房

キーキャップに印字して遊んだり電子工作して遊んだりしたことを書くかもしれません。

コンスルーまとめ

本記事はキーボードに関する記事です。

コンスルーは便利なのですが、取り扱いに関して正しく理解している人間が少なく、都市伝説的に語り継がれています。

毎度説明するのが非常にめんどくさいのでまとめます。

取り扱いの話は2019/6/7に追記しました。もともとはデータシートを毎度探すのがめんどいので最低限の数字と資料への参照をまとめた記事でした。

コンスルーとキーボード

スプリングピンヘッダことコンスルーという部品があります。

Helixで遊舎工房のないん氏が使い始めた部品で、microUSBが弱いpromicroの交換を容易にするために用いられています。オプション部品です*1

そのため、12ピンのもののみが小ロットで入手可能でした。BLE micro proに対応するため、13ピンのコンスルーが遊舎工房で取り扱いが始まりました。店頭だけでなく通販でも選択可能です。どちらもプラ高2.5mmのようです。

コンスルーの調達先と種類

yushakobo.jp

www.switch-science.com

さて、このコンスルーですが、各小売りページにおいて2019/01/31現在 型番が明記されていません。また、カタログページへのリンクが切れています

そのため人づてにしか情報を得られないような情報が続いていて基板設計のときにとてもめんどくさいのでまとめます。

追記

Switch Scienceは2mm高で確定とのこと。遊舎工房は2.5mmと予想されています。0.5mmはpromicroを裏向きで取り付ける際の、実装部品の高さの兼ね合いです。

裏返しでpromicroを取り付ける場合は遊舎工房のほうを、表向きでつける場合やもげにくいマイクロを使う場合はSwitch Scienceのものがよさそうです。

discordapp.com discordapp.com

コンスルーと基板設計

コンスルーはどんな基板でも利用可能なわけではありません。コンスルーは2枚の基板を繋ぐ部品です。それぞれの基板がコンスルーに対応しているかしていないかで4通りの組み合わせがあります。このときの利用条件は以下のようになります。

対応 非対応
対応 利用可能 条件付き
非対応 条件付き 利用不可
利用条件 説明
利用可能 刺すだけで利用可能
条件付き 非対応基板にはんだ付けをすることで利用可能
利用不可 コンスルーでは接点を作れない・刺さらない

コンスルーのデータシートによると、0.8mmφ~0.9mmφが対応径で、0.85mmφが推奨穴径です。特に実験はしていませんが、この径より小さい場合は穴に入らず、この径より大きい場合はガバガバで通常のピンヘッダを使うのと変わらなくなる、と予想されます。

promicroのスルーホールは2.54mm間隔です。2.54mm間隔用のピンヘッダの対角は約0.8~0.9mmです。この"棒"を抜き差しするために穴径は余裕が必要なので、通常は1mmφ程度で設計をします。そのため、promicroや多くのpromicro対応のキーボード基板はコンスルー非対応です。両側が非対応の場合ただの高いピンヘッダとなってしまいます。ブレッドボードを使った「仮留め」ができなくなる分いいことは何もないかもしれません。

Helixをはじめとしたビルドガイドにコンスルーの利用に関して書かれているキーボードキットの基板は穴径をコンスルー対応にしているため、promicroにはんだ付けをすることで利用可能です。主に国内の一部キーボードが該当します。国外ではコンスルーの入手が困難なため、今後も対応がされることはないでしょう*2

また、国内の開発者がキーボード向けに作成したpromicroとピン配置を同様にしたマイコンボードの基板はコンスルーに対応しています。SwitchScience版promicroとBLE micro proです。これらのマイコンボードとコンスルー対応キーボード基板を利用する場合は、どちらにもはんだづけをすることなく利用ができます。また、これらの基板を使うことでコンスルー非対応キーボード基板であってもキーボード基板側にコンスルーをはんだ付けをすることで交換可能な状態を維持したまま利用することができます。

向き

実は向きがあります。上下だけでなく、左右もあるそうです。詳しくないので、データシート見てください。

左右の向きは「窓を同じ方向に向いた状態にする」です。

コンスルーと寿命

コンスルーには寿命があります。正確には、コンスルーを抜き差しされる基板側に寿命があります。コンスルーはピンヘッダのピン部分をばね構造にしてスルーホール内に押し付けることによって接点を作っています。そのため、抜き差し時には摩耗するので挿抜回数に制限があります。

国内キットではpromicroを利用することからpromicroにはんだづけをしてキーボードから抜き差しをしていますが、この場合はキーボード側のスルーホールが摩耗し、最終的にはんだづけをしないと利用できなくなります。promicroが壊れたときに交換するためのコンスルーですが、あまり気軽に抜き差しをし過ぎるとキーボード基板側が原因で接触不良を起こしてしまうという、実は望ましい利用方法ではないのです。

だいじそうなとこ

以下マルツのカタログページから参照されていたデータシートよりコピーした内容です。 f:id:skyhigh_works:20190131214548p:plain f:id:skyhigh_works:20190131214604p:plain

とりあえずpromicroのフットプリントは推奨値に従ってランド1.5mmφ、TH0.85mmφにしましょう。

資料

ググったら何故かマルツからカタログを参照することができました。マックエイトのカタログシステム刷新のため、検索エンジンから到達できないためです。

www.marutsu.co.jp

https://www.marutsu.co.jp/contents/shop/marutsu/datasheet/XB.pdf

現在では遊舎工房カタログページから参照されているURLから、公式のものが調達できます。

https://www.mac8sdk.co.jp/uploads/entry_meta/file_value/1117/mac8_2018a_jp-xb2.pdf

*1:promicroを買うと普通にピンヘッダが必ず付いてくる

*2:マックエイトが国内の会社のため

分割キーボードを定義する

通常のキーボード定義の話は本稿では省略します。

環境

この記事を書いているとき、QMKバージョンは 0.6.242 でした。

新しい分割キーボードの定義

分割キーボードを新しく定義する際にやるべきことは3つです。

rule.mk

以下を追加して分割キーボードに関するライブラリの読み込みを有効にします。

SPLIT_KEYBOARD=yes

config.h

TRSを用いた単線通信の場合は以下を定義します。使えるピンは D0, D1, D2, D3, E6 の5ピンです。

#define SOFT_SERIAL_PIN DX

TRRSを用いたI2Cを使う場合は以下を定義します。

#define USE_I2C

キーマップの定義

キーマップを定義する前にレイアウトマクロを定義します。この際に、そのまま行を2倍にします。

前半行が左手、後半行が左手になります。

分かりやすさのため、前半はprefixをKでなくL、後半のprefixをRとする人もいます。

キーマップはレイアウトマクロを使って過不足なく定義してください。

ファームウェアのビルドと書き込み

ファームウェアのビルド方法は変わりません。

書き込みは両デバイスマイコンに書き込んでください。

オプション

マスタデバイスの向きを切り替える

ここでいうマスタデバイス(マスタ)とは、分割キーボードのうちUSBケーブルでPCと接続された側のデバイスのことをいいます。 逆に、マスタデバイスとオーディオ4極ケーブル等で接続されたデバイスをスレーブデバイス(スレーブ)とします。

デフォルトではマスタは左手です。そのため、USBが接続されたデバイスは必ず左手として認識されます。

ハードウェアの変更なしにUSBを右手に接続したい場合は以下を定義します。

#define MASTER_RIGHT

それぞれのデバイスが内部に両方のキーマップを持っていますので、キーコードで一時的に左右の手を切り替えることもできます。

skyhigh-works.hatenablog.com

ハードウェアに変更を加えて

ハードウェアに変更を加えることが可能な場合は、空いているGPIOを一つ用意します。

#define SPLIT_HAND_PIN your_choose_pin

そして、左手になるデバイスのこのピンをVCCに接続してください。右手になるデバイスはこのピンをGNDに接続してください。

これで、左右の役割が固定されるのでどちらのUSBに接続しても役割が変わらず利用できます。

左右の手で異なるマトリクスを使う

追加で接続されるデバイスは右手扱いになります。以下の定義をすることで異なるピンアサインを定義できます。

#define MATRIX_ROW_PINS_RIGHT {X,X,X.,..,X}
#define MATRIX_COL_PINS_RIGHT {X,X,X,...,X}

注意事項として、現在は MATRIX_ROW_PINSMATRIX_ROW_PINS_RIGHT は同じ長さにしなくてはならない、とあります。

ピン数さえ揃えれば動作します。

確かオタクスプリットで使いました。

RGBLED

QMK用語でとても分かりにくいものにLEDがあります。

  • BACKLIGHT(普通のLED)
  • RGBLED(neopixel系)
  • RGBMATRIX(普通のLED+LEDドライバだったけど最近neopixel系も盛り込まれた)

これらはすべて別個です。 ここではRGBLEDもしくはLEDという語句を使ったとき、ws2812やsk6812といったneopixel系の単線通信マイコン内蔵のフルカラーLEDのことを指します。

まずLEDの信号を吐き出すピンを定義します。左右とも同じピンを使います。

define RGB_DI_PIN YOUR_LED_PIN

次に、左右それぞれのLEDの数を指定してください。

define RGBLED_SPLIT {LEFT_NUM, RIGHT_NUM}

以上です。RGBLIGHT_SPLIT という定数もありますが、これはRGBLED_SPLITを定義したときに暗黙に定義されるので設計者が定義する必要はありません。定義するとコードレビュー時に「意味ないから消せ」っていわれます。

参考ページ

@mtei 氏の連続ツイートを主に参考にしました。

また、Discordでまとまっているという情報があったので以下のドキュメントを参照しました。

github.com

おまけ

QMKの標準スプリットキーボードは、スレーブデバイスのLEDはサポートしてないそうです。

どうやら、TRRSで片方を単線通信用、片方をLED信号用にすることで実現できるようです。品質の良くないケーブルを使うと動かなくなりそうですね。

光らせたい&OLEDを点灯させたいというのはよくわからないので、Helix回路/コードを流用するのがよいのではないでしょうか。

正確な日付は覚えていませんが、現在は単線通信でもRGBLEDがサポートされています。

分割キーボードで右手用デバイスにUSBを刺す(左右のデバイスの役割を交換する)

QMKでは分割キーボード(スプリットキーボード)をサポートしています。現在のキットで一般的な構成は以下の通りです。

  • 左右基板にそれぞれpromicroを取り付ける
  • 左右基板にそれぞれTRRSジャックを取り付ける*1
  • 左右基板の通信をTRRSケーブルで行う*2

この際、両方ともにpromicroがあるのでどちらでもマスターにできるように見えますが、デフォルトでは左がマスターです。

左手にUSBケーブルを指せば使えますが、右手にUSBケーブルを指したいこともあると思います。その場合どうすればいいかを調査しました。

一時的に交換する

SH_から始まるkeycodeを使うことで一時的に左右の手の切り替えができます。トグルや交換の有効無効、長押し中のみ切り替えなどがあります。「キーを押し続けている場合は手を交換」は片手キーボードを実現するための機能かもしれません。

この交換は電源を切った場合交換しない状態に戻ります。

詳細は以下URLを参照ください。

beta.docs.qmk.fm

恒久的に交換する

デフォルトではUSBを差したデバイスが左手扱いされます。これを右手扱いに変更したい場合はkeymapフォルダ内の your_keyboard_name.c に以下の定数宣言を追加します。

#define MASTER_RIGHT

*1:単線通信のみサポートする場合はTRSでも可

*2:単線通信のみサポートする場合はTRSでも可

キーボードわいわい会を開催しました

ほとんど勢いでキーボードmeetup「キーボードわいわい会」を開催しました。

connpass.com

すでにshela_氏により2年ほど前に「HHKB hacking会」が開催されていたことを観測しているので愛知で開催されるキーボードイベントとしてはおそらく2回目です。

背景

NGK2018BでLTしましたけど反応がいまいちでした。twitter見る限りぼちぼちいたようなのですけれど、音楽性の違いが露骨にでるので難しいですね。

しかし、来栖川電算さまから提供いただけることになりました。思い立ったら吉日ということで初週開催です。

振り返り

どんな人が集まるかわからなかったので適当にLT(Longtime Talk)と休憩/わいわいを交互にやろう、と決めていました。

開始予定は13時15分くらいだったのですが、13時5分くらいには全員そろっていたのでちょっと早めに始めました。

私は「キーボード、普段使ってると思うけど思ったより知らないこと多いから色々構成要素見てみようぜ」みたいなスライドを作りました。規格系の配列はこんな感じでこんな違いがあるよ、そこから最近の拡張はこんなのがあるよ、みたいなのを雑に20分くらいで話しました。

次に、@shela_氏により、HHKB hacking会のスライドベースでざくっと説明がありました。過去の会では2時間くらいかかったそうで、結構流したはずなのに今回は50分くらいはかかっていたかと思います。

このあたりで14時半とかでした。

その後自分がkinesisなど見たかったので1時間くらいあれやこれやわいわいしました。

一応もうひとつ「もっとゆるくやっていこう」みたいなネタがあったので脱線しつつざっと話しました。

その後荷物をまとめつつ適当にわいわい、18時頃解散しました。

開催の様子

やらかしをしたので写真は一枚もありません。

キーボードわいわい会 に誰かあげている可能性はあります。

次回?

今回会場提供いただいた来栖川電算様から引き続き開催されるようであれば提供できます、という申し出をいただきました。 また、参加者の方からも弊社使えますとご提案いただけましたので、開催場所はなんとかなりそうです。

あくまでも勉強会などではなく集まってわいわいするmeetupとしてゆるゆるやっていきたいな、とは思いますが、だらだら目的もなく集まっても締まりがないと思うので何かしらまとまる方法がないかなーと考えています。

やるとすると、15分くらいの持ち時間で語りたいことを語る枠を最大3枠くらい用意するのがまず良いかな、と考えています。

また、これは賛否が分かれると思うのですが、当日LT指名とか、発表聞いてみたい人投票とかやってみたいなぁという気持ちもあります。

とりあえず意見ください。

無変換/変換でIMEのON/OFFを切り替える

この記事をみて「そういえば試してみるかー」と思ったら面白いことがわかったので書きます。

www.itmedia.co.jp

前書き(読み飛ばしてください)

OADG109AベースのキーボードはANSIに比べてスペースキーが短くなる代わりに「無変換」「変換」「カタカナひらがな漢字」といったキーが追加されています。

そしてIMEのON/OFFは左上のやや遠い位置にある「半角/全角」で実施すると信じられています。このトグル式の評判がよくないです。引き合いに出されるのはMacOSのキーボードです。MacOSではOADG109Aではない配列のキーボードが採用されています。そのため無変換/変換といったキーは存在しません。代わりに「英数」「かな」があります。これは書いてある通りに入力モードを切り替えるボタンです。どうも「脊髄で理解させるため」の設定だそうです。

従来の手法

WindowsでもMacOS方式を実現したいという声は少なくないです。OS/IMEの機能として持っていないわけではないのでIMEの設定を変更することで従来より実現できます。

スクリーンショットを撮影して説明しようと思いましたが、ほぼそのままのサイトがあったのでやり方はそちらを見てください。

www.onebizlife.com

公式アナウンス

冒頭で紹介した記事でデフォルト設定が従来の手法で紹介した記事の最終的な設定になることが決まったようです。

www.itmedia.co.jp

オチ

IMEの設定を見ていたら、「Shift+無変換」で英数入力に切り替わることが分かりました。 試しに英数入力状態で「変換」を押したら日本語入力に切り替わりました。

無変換単独ではカタカナ変換に使いたいのでなんかこれでもういいじゃん、となりました。

つまり、我々はなにも追加の設定をしなくても、僅かな好奇心さえあれば無変換のカタカナ変換を維持したままMacOS方式に近いIME切り替え方式を得ることがすでにできていたのです!!!!

まとめ

  • 「Shift+無変換」で英数入力
  • 「変換」で日本語入力

なおサンプル数1(自分のみ)です。再現したら教えてください。

無変換/変換でIMEのON/OFFを切り替える

この記事をみて「そういえば試してみるかー」と思ったら面白いことがわかったので書きます。

www.itmedia.co.jp

前書き(読み飛ばしてください)

OADG109AベースのキーボードはANSIに比べてスペースキーが短くなる代わりに「無変換」「変換」「カタカナひらがな漢字」といったキーが追加されています。

そしてIMEのON/OFFは左上のやや遠い位置にある「半角/全角」で実施すると信じられています。このトグル式の評判がよくないです。引き合いに出されるのはMacOSのキーボードです。MacOSではOADG109Aではない配列のキーボードが採用されています。そのため無変換/変換といったキーは存在しません。代わりに「英数」「かな」があります。これは書いてある通りに入力モードを切り替えるボタンです。どうも「脊髄で理解させるため」の設定だそうです。

従来の手法

WindowsでもMacOS方式を実現したいという声は少なくないです。OS/IMEの機能として持っていないわけではないのでIMEの設定を変更することで従来より実現できます。

スクリーンショットを撮影して説明しようと思いましたが、ほぼそのままのサイトがあったのでやり方はそちらを見てください。

www.onebizlife.com

公式アナウンス

冒頭で紹介した記事でデフォルト設定が従来の手法で紹介した記事の最終的な設定になることが決まったようです。

www.itmedia.co.jp

オチ

IMEの設定を見ていたら、「Shift+無変換」で英数入力に切り替わることが分かりました。 試しに英数入力状態で「変換」を押したら日本語入力に切り替わりました。

無変換単独ではカタカナ変換に使いたいのでなんかこれでもういいじゃん、となりました。

つまり、我々はなにも追加の設定をしなくても、僅かな好奇心さえあれば無変換のカタカナ変換を維持したままMacOS方式に近いIME切り替え方式を得ることがすでにできていたのです!!!!

まとめ

  • 「Shift+無変換」で英数入力
  • 「変換」で日本語入力