xd87キーボードの組み立て

概要

xd87 PCBキットをようやく組み立てた話。

xd87 スイッチプレートにスイッチとキーキャップを装着
  • xd87 PCBキットの組立てを始めるにあたって、まずはキーのレイアウトを決めた。そして、スイッチプレートにスイッチを装着し、キーキャップもはめて叩いたときの感触を試してみた。
  • 次にPCBにスタビライザーを装着した。キーキャップをスタビライザーとスイッチの双方にはめたときの、キーの動きや打鍵感を確認した。
  • スイッチとしては、Gateronブランドの3種類の軸色 (白、赤、黄)を組み合わせて使った。
  • 最後にスイッチを装着したスイッチプレートをPCBにのせて位置決めし、スイッチのピンをハンダ付けした。この時点で前回作ったキースイッチ確認用スケッチを使い、スイッチを押したときに意図通りの番号が出力されることを確認した。
  • また、キーキャップをかぶせたときの様子を見ながら、いくつかのキー位置にバックグラウンドLED (BGLED) をハンダ付けした。

最初の話で書いたように、xd87 PCBにはマイコンやチップダイオード、LED用の抵抗などの必須の小部品がすべて実装済なので、組み立てはとても簡単である。

キーのレイアウト

xd87 PCBは、基本的にはUSキーボードレイアウト (おおむねANSI配列)のキーボードを作るためのものだが、ほぼ日本語キーボードレイアウトも実現できるようになっている。そして、大きなスペースバーの代わりに中くらいの幅の2つのキーを配置できるから、ほぼNICOLAキーボード(親指シフトキーボード)のレイアウトも実現できる。

今回のレイアウトの候補は以下の3つ。

USキーボード案

USキーボードレイアウト (xd87_us1.json)

当初考えていたのは上図のような、スペースバーを分割しただけのほぼUSキーボードレイアウト(88キー)だった。中国から安価に購入できるキーキャップセットが、ほとんどUSキーボード(ANSI配列)用だからというのと、JISカナ入力をするわけではないから、日本語キーボードに比べていくつか図形キーが足りなくても問題なかろう、というのが理由。

ただ、Windows10で英語キーボードレイアウトを選択していると、日本語キーボードの無変換、変換、ひらがな など、DOS/Vで追加されたキーのコードを送信しても、存在しないキーとして無効にされてしまう。そのため、こういったキーをIMEの操作に利用できない (この話は、Windows10 の修正に応じて変わるかもしれない) 。

世の中にはUSキーボードで日本語入力している方も大勢いらっしゃるはずなので、何かうまいやり方もあるのだと思うのだけど、今回は日本語キーボードレイアウトで使うこととし、同じだけ数の図形キーを並べることにした。

日本語キーボード案1

このPCBとスイッチプレートのセットでは、下図のようにほぼ日本語キーボードレイアウト(90キー)とすることもできる。

日本語キーボードレイアウト案1 (xd87_jp1.json)

よくある日本語キーボード (RealForce 91Uなど) との相違は、右Shiftキーのさらに右にアンダーライン用のキーが来ることと、空白キーの右側あたりのキーが1つ少なくなることくらい。Appキーなどあまり押さないキーは、Fnキーと併用して入力できればいいので、あまり気にすることもないだろう。

スイッチプレートにスイッチとキーキャップを並べるとこんな具合になった。

xd87_jp1

きわめてふつう。自分で書いたファームウェアを入れることと、左右の親指キーの打ちやすさが主たる目的なので、平凡なキーボードでよいのです。

日本語キーボード案2

案1のつもりで作業を進めていたら、ちょっとした問題があることが分かり、USキーボード案に近づけたレイアウトも考えた。問題点については後述する。

日本語キーボードレイアウト2 (xd87_jp2.json)

ISOスタイルの大きなEnterキー(7-shape Enter Key) を使わないことと、Enterキーの上のキーが1.5uとなるのが相違点でキーの個数 (90キー) は同じ。

こちらはこんな感じ。

xd87_jp2

右ShiftキーやEnterキー周りのスイッチをプレートに固定できないという問題もあり、この時点ではキーがガタガタに並んだ。

日本語キーボードレイアウトでの注意点

レイアウト図に示したキーキャップ印字は、Windows10の設定にある ハードウェアキーボードレイアウト日本語キーボード(106/109キー) にして使うことを前提として記載した。
キーボード自体は押されたキーに対応するコード (HID UsageID) を出力するだけで、文字数字や記号を直接送り出すわけではない。キーボードから来たコードに対応して入力される文字や記号は、ホスト(PC)側の設定で決まる。USキーボードと日本語キーボードのレイアウトでは、文字や数字の配置同じなのだが、記号については違っているものが多い。

USとJPの相違

上記のxd87_jp2レイアウトで文字や記号の割り当てが異なるキーを色分けしてみると、こんな感じになった。黄色がShift側のみ異なっているキー、オレンジ色がShift/Un-shiftともに異なっているキー、灰色がUSキーボードには存在しない図形キーを示している。

今回は、キーキャップとしてUSキーボード用を使う予定なので、キーキャップに書かれている記号と、実際に入力できる記号は一致しないことになるが、とりあえずはキートップを見ないので問題ないだろう。気になってきたら、印字のないものや日本語キーボード用のキーキャップセットに交換すればよい。

Keyboard Layout Editorを利用

これらの図は、Keyboard Layout Editor を使った作成した。キーの大きさや位置、印字などを記述するRAWデータ (jsonファイル) をアップロードすることで、上の2つの図をブラウザ上に再現して編集することも可能。これらの jsonファイルをまとめた xd87_layout.zip はこちらからダウンロードできます

スイッチプレートに若干問題あり

スイッチをバチバチとはめていく中で、スイッチ用の穴の寸法に問題があり、カチッと固定できないところがいくつかあった。

xd87 スイッチプレートのゆるい部分

特にゆるいのは親指右キー右側のFn1キーの位置で、スイッチをカチッとはめたい部分が写真のように上下に削られている。欧米人が好む大きなスペースバーを使う場合、ちょうどこの位置にスタビライザーのポストを取り付けることになるから、削らざるをえないのだろう。

ほかにも、Enterキーの周りやスペースバーの左側、右Shiftキーあたりもスイッチを固定できない位置がいくつかあった。場所によっては、プレートを裏返すとスイッチが落っこちてしまう。

スイッチのピンをPCBにハンダ付けするとき、きちんと整列できていないと困る。対策として5ピンのキースイッチを使い、プレートではなくPCBにパチッとはめ込んで固定することにした。

キーキャップセット

キーキャップは、87キー分がセットになっている OEMプロファイルのものを使った (材質はPBT) 。当初は87キーのUSキーボードレイアウトにしようと思っていたので87キーのセットを注文したのだけど、値段は大して違わないのだから104キーのセットにしておけばよかった。余りが出たとしては困ることももないし、足りなくなったときの穴埋めにも使えるから。

xd87 装着したキーキャップ
xd87 スイッチプレートにスイッチとキーキャップを装着
OEMプロファイル キーキャップ

真横から見るとキーの表面が平らに見えるが、中央部が若干くぼんでおり、指を乗せるとしっくりくる。OEMプロファイルの OEM が、この場合に何を意味しているのか不明だが、ごくふつうのよくある形状と思う。

Laser engraved keycap.

キートップはあまり見ないとはいえ、あまり目立つのもイヤなので側面に印字のあるものにした。印字はレーザーマーキングのようで、字を焼き込みましたという感じ。

追加したキー

ほぼ日本語キーボードレイアウトとするために、以下のキーを追加した。

  • ISO Enterキー (7 Shape Enter key)
    日本語キーボードによく使われているでかいEnterキー。
  • 3uスペースキー
    左右の親指キーとするため “xda Convex Spacebar” という製品を買った。親指キーの手前に角があると指が痛くなるので、上部に丸みがある “Convex = 凸型” がほしかった。
  • 1.75u Shiftキー (R2用)
    右Shiftキーとして使う。キーボードの行(ROW)番号を表すR1、R2といった表記は、キーのプロファイル (形状、高さ)や販売している店によって違うようなので注意が必要と感じた。

こういった、ふつうのキーキャップセットにない製品がけっこういい値段するのである。色や質感は実際に入手してみないと分からないし。
3uスペースキーについは、専用のスタビライザー (ワイヤ) も必要なことに入手してから気づき、追加注文したりしたので余計に時間がかかった。

スタビライザーとその取付け

スイッチプレートにスイッチとキーキャップを装着して叩いてみると、2つの親指キー(3uサイズ)や左Shiftキー(2.25u)など、ちょっと幅の広いものは中央を叩かないと大きく傾いてしまう。幅の広いキートップのどこを叩いてもほぼ均一に沈み込ませるためにはスタビライザーが必須だろう。

xd87 PCB Kitに付属してきたスタビライザーは、Cherry MXスイッチ用のスナップイン型と呼ばれるもので、PCBに取り付けて使うから完成時にはスイッチプレートの下になる。そのためスイッチをハンダ付けする前に忘れずに装着しておく必要がある。

スタビライザーについて

xd87 スタビライザー

スタビライザーは上の写真のように1つのセットが5つの部品から構成されていて、両端の部品をハウジングまたはポスト、中央の2つをステム、金属部品をコネクトワイヤー (あるいは単にワイヤー) と呼んでいる。2u用、3u用、6u用などがあるが、異なるのはワイヤーの長さだけであとの部品は共通だった。
2つのステムの先端は、Cherry MXスイッチのステムの先端と同じ形状をしておりキーキャップの裏に刺さる。キーが上下するとステムがポスト中で摺動し、ワイヤーによって左右のステムの動きが同期する。

組み立てるときにはまずポストの中にステムを差し込む。

xd87 スタビライザー

差し込むときには、この写真のようにステム側の切欠きとポスト側の出っ張った角を合わせる方向に行う。

xd87 スタビライザー

ワイヤの先をステムの中に突っ込んでから、上の写真の左手前に出っ張っている空隙にワイヤをカチッとはめ込む。はまったところがワイヤの回転を支える軸受になる。

できあがると以下のようになる。ワイヤを転がすようにして回転させると、左右のステムが上下に動いてくれる。

xd87 スタビライザー

左右のポスト+ステムをPCBにはめてからワイヤをセットすることもできるが、写真のように組み立てて動きを確認してからPCBに装着する方がベターだった。

その理由は、ポストにワイヤをはめる空隙部分の隙間が大きく、ワイヤが回転するときブレるというかガタつくものがいくつかあったから。xd87キットに含まれていた6セットと、3uスペースキー用に追加した4セットのうち、あまり好ましくないポストが2つあった。安いパーツなので、ちょっと多めに頼んで選別して使った方が良さそうである。

PCBへの取り付け

xd87 スタビライザーの取り付け

分割スペースバーを使うときのスタビライザー取付け穴は上の写真の位置になり、3uサイズのものを使う。

取り付ける際には、PCBの大きい方の穴にポストの先が曲がっている足 (ワイヤが装着されている側の足) を、小さい方の穴にもう一方の (スナップボタンの凸側のような) 足を差し込む。そして上から押し込んでやれば、ちょうど衣服のスナップボタンのようにパチッとはまる。

xd87 スタビライザーの取り付け

はめた後で裏から見るとこんな具合になる。このPCBは厚さが1.5~1.6mmあるので、ぎりぎりのハマり具合といったところか。

PCBにスイッチをハンダ付けしてしまうと、スタビライザーはスチールプレートの下になってアクセスし難くなるので、容易には抜けないことを確認した。ネジ止めタイプのスタビライザーの方が安心かもしれないが、試せなかった。

xd87 PCBにスタビライザーを取り付けたところ

スタビライザーを取り付けたあと、ワイヤを軸として左右のステムが自由に動くことを確認した。そして、スイッチと共に左右の親指キーを取り付けてみて、スムーズに押せることを確認した。
本来ならばスイッチはプレートの上に装着するのだけど、この動画ではプレート無しでもガタガタしないよう、PCBマウント用のスイッチ(5ピン) を使っている。
この動画では右親指キーがちょっと傾いているが、プレートと合体してスイッチをハンダ付けしたあとは、端を押しても傾かなくなった。

スタビライザーが抜ける問題

ISOタイプの大きなEnterキーを取り付ける位置には、スタビライザーを下の写真のようにセットする。そして、スイッチは中央部分にBGLEDが左側にくるようセットする。

xd87 PCBにスタビライザーを取り付けたところ

この位置に5ピンのPCBマウント用スイッチをはめ、大きなEnterキーをつけて打鍵感を確認してからキーキャップを抜いたところ、なんとスタビライザーのポストも一緒に抜けてしまった。
なんで?と思ってよく見るとスタビライザー取付け穴に問題があることが分かった。

xd87 Enterキー用スタビライザ取付け位置

緑色の枠がISOタイプのEnterキー用、赤い枠がUSキーボード用の2.25u Enterキーのためのスタビライザー装着位置になる。緑色の○で示した穴が、スイッチを取り付けるための穴の影響で大きくなっているのが分かる。これでは安心してキーキャップの変更もできないし、ふつうに使っているうちにスタビライザーが抜けてしまうかもしれない。さまざまなレイアウトに対応するための弊害というところだろうか。

しょうがないので、ISOタイプのEnterキーはあきらめ、USタイプの幅広Enterキーを使うことにした。この時点までは、最初の方に載せた日本語レイアウト1案のつもりだったのだけど、ここで日本語レイアウト2案に変更。余ったISO Enterキーの使いみちを考えないと。

キースイッチの選択

Gateron スイッチ

xd87 PCBは、Cherry MXスイッチとALPSスイッチに対応していると謳われているのだけど、ASKeyboardにも入っていて馴染みのあるALPSスイッチは何処かで売っているのだろうか。こだわりのマニアでもないので、ごくふつうのCherry MXまたは互換品を使うことにした。

PCBをチェックしながら10種類程度のスイッチを入手して打鍵した感触を確かめてみたところ、底までスムーズに押せるリニアタイプが好印象だった。
ただ、Cherryの茶軸スイッチもわりと好みで、もうちょっと軽く押せ、なおかつ、ひっかかり(Tactile / タクタイル) が、より押し込んだときに来ればいいのになと思った。底打ち前にわずかに抵抗する、というか。

結論としては、安さが人気?の Gateronスイッチのリニアタイプを3種類(黄、赤、クリア) 組み合わせて使うことにした。スイッチはプレートに固定するので SMD 3ピン を選択。Aliexpress では110個で$25程度 (送料込み) だった。

いちおう分解

特に理由はないのだけど習慣として分解した。

Gateron スイッチ

写真左側の透明な部分が上、スイッチの接点が差し込まれている乳白色部分が下になるよう、はめ込み式で組まれている。ピンセットを使って透明な方から伸びている爪を浮かせてやることで簡単にばらけた。元の姿に戻すのも容易。上下に動くステム (写真の黄色い部品)の側面には、潤滑油が塗ってあるような光沢があった。

サイレントスイッチ

サイレントスイッチを分解してみると、ステムの上下に白い樹脂が装着されており、衝撃を緩和するためのブッシュのような役割を果たすのだろう。

Gateron サイレントスイッチ

上側はキーを離したときの音を緩和する。

Gateron サイレントスイッチ

下側は念入り。

Gateronスイッチ

サイレントではないスイッチは、一体構造になっている。

スイッチを分解してマクロレンズで近寄ってみると、肉眼では確認しにくい細かい繊維くずが付着していくのがよく見える。キーの叩き心地に影響するのかどうかは分からないが、あまり分解しない方がよさそうである。

PCBマウント用とプレートマウント用

PCBマウント用とプレートマウント用スイッチの足

写真左側がPCBマウント用(5ピン)で右側がプレートマウント用(3ピン)。PCBマウント用には固定用の足が3本出ているが、プレートマウント用では中央の太い足しかない。xd87 PCBには、PCBマウント用スイッチを使うための穴もしっかり開けてある。

スイッチの配置

キーのレイアウトにしたがって、スイッチプレートにスイッチを配置しPCBにのせた。

xd87 スイッチの配置

図形キー配置部分の中央は赤、周辺はクリアとし、ファンクションキーや編集機能キーは黄軸のスイッチを使った。Shiftキーや親指キー、Enterキーなどスタビライザーを使うキーはある程度の反発力がないと困るので赤とし、その他の修飾キーやTabキーなどはクリア軸のスイッチを使った。
また、スイッチプレートの問題部分やその周辺には、赤およびクリアの5ピンバージョン (サイレント) を採用。通常のものとサイレントスイッチとでは、打鍵したときの感触がけっこう違うのだが、キーの並びが不ぞろいになっても困るのである程度まとめて使った。

種類ごとに使った個数をまとめると以下のようになる。

種類 個数
SMD 3pin Clear 25
SMD 3pin Red 25
SMD 3pin Yellow 22
PCB 5pin Silent Clear 13
PCB 5pin Silent Red 5
合計 90

プレートをPCBにのせてハンダ付け

プレートをPCBに載せるときには90個あるスイッチのピンがすべてスルーホールをきれいに抜けている必要があるから、けっこう気を使う。PCBの裏面を指でなでることで、ピンが出ていない(ピンがPCB表側で折れ曲がっている) スイッチを探したところ、3つばかりそういうところを発見したので、プレートから抜いて差し直した。

xd87 PCBとプレートの結合

この写真はハンダ付け前にスペースバー側から見たところだが、手前側はPCBマウント用スイッチ(5ピン)の足で、奥にあるのはプレートマウント用スイッチ(3ピン)の足。5ピンのスイッチはPCBにしっかり差し込む必要がある。

ハンダ付けは端のスイッチから始めて、スイッチのはまり具合を直したりしながら1時間もかからず終了。

LEDのハンダ付け

LED関係の動作確認に使ったのと同じLEDをハンダ付けした。

xd87 CAPSLED
xd87 BGLED

CapsLockインジケータとして赤色LEDを、PrintScreen、ScrollLock、Pause の3つのキー位置にBGLEDとして青色LEDをハンダ付けした。その際には、おのおのキーキャップをはめてみて接触しないことを確かめた。

xd87 BGLED
xd87 BGLED

点灯させるとこんな感じで、キースイッチのクリアな筐体全体が光ってくれる。

xd87 BGLED

キーキャップを被せるとこんな具合。BGLEDは装飾用としてではなく、親指キー同時打鍵が有効になるNICOLAモードのインジケータとして使う予定なので、透過型のキーキャップでなくても目的を果たしてくれる。

xd87 CAPSLED

CapsLockインジケータも本来の役割は果たすだろう。

組み立て終了

ケースの上蓋をかぶせてバシバシッとはめ込み、キーキャップをセットして完成。

xd87 組み立て完了

ケースをかぶせてみると、プレートとPCBがしっかり固定されて、どのキーを打っても緩さやビビリを感じることはないし、押し込んだキーキャップが隣のキーやスイッチと接触したり、ケースに干渉される箇所もない。ただ、最初に想像したようにアンダーグロー用のRGBLEDを光らせてもほとんど効果を感じない。

xd87 リセット用のランド

DeleteキーとEndキーを外すと、外部リセットをかけるためのランドというかスルーホールが見える。Goot TS15という先細のわし口タイプの安いピンセットを愛用しているが、リセット操作は容易だった。

キーキャップを外したときだけは、PCB裏面を照らすアンダーグローLEDが有効なので、低輝度でつけたままにしておこうかな。

追記 親指キーのバネを強くする

ケースもしっかり閉じてしばらく叩いてみたのだけど、どうも左右の親指キーを打ったときの感触がよくなかった。これらのキーには赤軸のサイレントスイッチを使っていたのだけど、3uサイズのキーが大きくて重みがあるせいなのか、容易に押せすぎるし指を離したときの戻りも遅いと感じた。とはいえ、別のスイッチを注文するのも面倒なので、若干強めの黄軸スイッチのバネに入れ替えた。つまり2つの親指キー用のスイッチを、黄軸のサイレントスイッチ相当品に交換したことになる。

スイッチはプレートにマウントしているからそのままでは分解できないので、2つのスイッチのハンダをPCBから吸い取り、プレートから抜いて入れ替えた。そして元のようにスイッチとキーキャップを装着して叩いてみたところ、若干の改善が感じられたのでヨシとした。

このPCBキットを最初の印象として、ケースの開け閉めに難儀しそうというのがあったのだけど、一度しっかりはめた上蓋を外すのにけっこう苦心しました。しばらく開けたままにしておこう。

きょうのまとめ

売ってるものを選んで買って、あとは組み立てるだけなのだが、感染症流行のさなかに中国 (Aliexpress) から何度も部品を取り寄せたりしたので、思いの外時間がかかってしまった。深センから出荷されたものは比較的早かったのだけど、上海からのものは40日間またはそれ以上かかったものもあった。平常時は10~14日間で到着するのだが。

数字、文字/記号キー部分にはSMD 3ピンスイッチを使ったので、底打ち時やキーを離したときの音がちょっと高くて大きい。最下段の修飾キー、親指キーやEnterキー周りのサイレントスイッチはちょっとモソモソした打鍵感だが、さすがに音は小さい。スイッチの単価の違いからこういった構成にしたのだが、果たして正解だったのかどうか、ファームウェアを入れてバシバシ使ってみないとなんとも言えないところである。

組み立て作業の中では、スタビライザーの組み方や取り付けに戸惑い手間取った。今後キーキャップを交換するとき、抜けないといいのだけど。

続編は、USBキーボードに改修したASKeyboardと同様に、hoboNicolaライブラリを組み込んでNICOLAキーボードして使えるようにすると共に、ライブラリ自体の改修の話になる予定です。