XD64 PCBを使った親指シフトキーボード作り

xd64_nicola_jp1

AliExpress KPrepublic Store で購入した XD64 PCB VER3.0 キットを使って親指シフト(NICOLA)キーボードを作ったはなし。

完成したキーボードと材料など

xd64 nicola_JP_1

写真のように、最下行の中央に親指キーを並べた日本語キーボード・レイアウトとした。おもな構成物として以下のようなものを使った。

  • XD64 PCB キット
    GH60 に準じた製品の一つで寸法、USBコネクタの装着位置、固定用のネジ穴、リセットスイッチ位置などがGH60と共通。
    XD64 PCB VER3.0 KIT1 として購入し価格は3,076円(送料込み)だった。このキットには XD64 PCBとスタビライザーが含まれている。
  • キーキャップのセット
    アーキスブランドの”PBTフルキーキャップセット 日本語配列”という製品(1,740円)を使った。現在はディスコン。
  • 親指キー用キーキャップ
    XDAプロファイル、2.25Uサイズのキーキャップを使った。通常のトップが凹んだ形状だとキーキャップの角に親指があたって痛いので、コンベックス(凸)型を採用。親指キー左右のキーキャップセットに含まれないものも合わせて1,500円くらいだったか。
  • スイッチプレート
    “60%  Keyboard carbon fiber plate support xd64  v3.0 (2U)” という製品で1,490円だった。
  • キースイッチ
    GeteronブランドのSilent Clear とSilent Redスイッチを組み合わせて使った。全部で3,500円くらい。すべて5ピンのスイッチを使用。
  • シェル(ケース)
    GH60用のロープロファイルCNC陽極酸化化アルミニウムシェルという製品を使った。購入時の価格が約4,700円(送料込)とお高いのが難点だが、比較的薄い(高さがない)ことと、ある程度の重さがあるのが良いところ。

上記に含まれないLEDなどを含めて材料代の合計は16,000円ちょっとだった。このキーボードを作るための材料は2020年に購入しており、これを書いている2023年現在ならば、円安や価格上昇でその30%増程度だろう。

XD64 PCB VER3.0 について

PCBの外観は以下の通り。

XD64 PCB VER3.0 表と裏
  • マイコンはAtmel の ATMega32U4で16MHz, 5V動作。
  • キースイッチ・マトリックスの構成は5行14列構成なので最大70キーまでサポート可能(PCB上は重複を考えなければ69ポジション)。
  • 行列交点のダイオードは、列から行方向。
  • PCB裏面に12個のRGB LED(WS2812B)が実装済。
  • PCB裏面のリセットボタンを押すと、ブートローダーモードとなる。
  • ブートローダーはAtmel DFU なので Atmel Flipdfu-programmer を用いてファームウェアを書き込むことができる。個人的には Atmel Flipを使っている。
  • USB Type-C コネクタがPCB に装着されている。装着位置はGH60と共通。

選択可能なキーのレイアウトは、最初に載せたショップのページに記載されている。今回のレイアウトはショップページには載っていないのだが、改造などは不要。

回路図

hoboNicolaライブラリでサポートするためにはPCBの回路構成を知っておく必要があるので、以前 XD87 PCBを使ったときと同様に調査したところ、以下のような回路構成になっているようだった。キーボードでのスイッチ状態の検出方法などもXD87を使ったときと同じ考え方。

xd64 pcb ver3.0 schematics.

※ 独自調査によるものなので正しい保証はありません。図中のスイッチ番号(内部スキャンコード)も独自に採番したものですので。

特徴のようなこと

XD64 PCB VER3.0 CapsLock周辺

上はCapsLockキー周辺のPCB表面だが、いろいろなレイアウトに対応するためにスイッチを取り付ける穴がたくさん開いている。そのためスイッチの脚のはまりが緩いところもある。今回もスイッチはプレートマウントとした。

BGLED

各スイッチポジションの北側 (キーボードに正対するとき、手前が南、向こうが北) には5mmまたは3mmのふつうのLEDをBack Ground LEDとしてハンダ付けできる。上の写真では、スイッチ枠内上側の小さいスルーホールがBGLED用で、にLEDのアノードを  Oにカソードを接続する。

XD87と同様にBGLEDはNICOLAモードのインジケーター(あるいは、ScrLockインジケーター)として使っていて、2つの親指キー用のパッドにのみ装着した。スイッチやキーキャップを装着して点灯すると以下のような感じになる。

xd64 bgled

CapsLockキー位置以外のBGLED用の接点は、マイコンのPF5ポートとMOSFETを介して接続されており、PF5をLOWにするとでアクティブ(点灯)。

CapsLockインジケーター

PB2ポートをLOWにすることで点灯する。

xd64 CapsLockインジケーター

CapsLockキー周辺のPCB表側には、CapsLockインジケーター用のSMD LEDを配置するためのパッドが用意されている。そして、CapsLockキー用のBGLED もCapsLockインジケーターとして利用できる(出荷状態)。今回はCapsLockキーのBGLEDをインジケーターとして利用している。

xd64 CapsLock SMD Pad.

また、CapsLockキーのBGLED をCapsLockインジケーターではなく、単なるBGLEDとして利用することもできる。そのためには、以下の写真にある2つの0ΩのSMD抵抗をはずし、〰が印刷されている部分にハンダを盛って上下のパッドをショートさせ、LEDのアノード/カソードに用心して取り付ける。詳しくは回路図や実物を参照のこと。

xd64 CapsLock インジケータ回路とリセットスイッチ

組立てなど

基本的にハンダ付けさえできれば誰でも作れるPCBキットになっているので、難しい部分はない。

スイッチプレート

“60%  Keyboard carbon fiber plate support xd64  v3.0 (2U)” という名前のカーボンファイバー製のスイッチプレートを利用している。以下はこれをPCBに被せたところ。カーボンファイバーの材質の模様がオシャレっぽくていいのだが、スイッチとキーキャップを被せると模様は見えなくなる。

XD64 PCB VER3.0 + スイッチプレート

写真ではわかりにくいのだが、スペースキーやその右側のキースイッチをはめ込む部分について、スイッチ用の穴が幅広いスリットのようになっている。さまざまなレイアウトに対応するために致し方ないところだが、スイッチをはめてもカチッと安定しない。しかも金属製のプレートではないので、スイッチをはめ込むときプレートも一緒にたわんでPCBに接近してしまう。スイッチとのかみ合わせが甘いので、打鍵したときに振動しても困る。対策としてスイッチプレートとPCBの間に防振用のゴム板をはさみ込んで接着し安定させた。

xd64 親指周り

薄い防振ゴムを何枚か重ねて隙間に押し込み、その後に接着剤を塗ったので、あまりきれいな出来ではないのだが(見えないからいいのだけど)。

スタビライザー

XD64 スタビライザー

XD87のときはISO Enter用のスタビライザーの取り付けに不安があって、ふつうの横長のEnterキーにしたのだが、XD64 PCB Ver3 ではスタビライザーが抜ける心配もなさそうだった。

XD64 PCB VER3.0 Kit1 に付属のふつうのスタビライザーを用いている。左Shift、2つの親指キー、Enterキーの合計4箇所に装着。

スイッチ

以下はPCB+プレートにスタビライザーとスイッチを実装したところ。

XD64 PCB VER3.0 + スイッチ

今回はGateron Silent Clear という押し込んだときの音が静かで、なおかつ軽い力で押し込めるスイッチをメインに使い、大きめのキーキャップが多い周辺のキーには Clearよりわずかに重めの Gateron Silent Red を使った。

Enterキーの下のスイッチには1つだけ Gateron Yellow を使っているが、この位置はDeleteキーなので明らかに押下が重めのスイッチを選択した。

今回のレイアウト

キーのレイアウトは以下のようにした。このレイアウトは、Windowsのキーボードレイアウトが 日本語キーボード(106/109キー) であることを前提している。このレイアウトはhoboNicolaLibrary 1.7.0版での実装によるもの。

通常時のレイアウト

xd64_nicola_jp_1 基本レイアウト

各キーの大きな数字は、キースイッチを一意に識別するための番号で、内部スキャンコード (または スイッチ番号) と称している。

このコードはキースイッチ・マトリックス回路における列と行の交点(スイッチ位置)を、 (列番号 – 1) × 8 + 行番号 (行番号 – 1) × 14 + 列番号で得た値になっている。

例えば、内部スキャンコードが 16のキー( Q ) は、以下のように2行目の2列目に位置している。

xd64

したがって、(2 – 1) × 14 + 2 = 16 ということになる。

hoboNicolaのXD64やXD87用の実装プログラムは、内部スキャンコード順に出力コード(HID Usage ID)を並べた配列を含んでいる。オンまたはオフになったスイッチの内部スキャンコードでこの配列を引くことで、HIDキーボードが出すべき出力コードを得るようにしている。

親指キーの右側には「ひらがな」キーを配置しているが、このキーを押したときは常にIMEは「全角ひらがな」に、キーボードは NICOLAモードになることを意図している。そして「英数」キーを押したときは、常に半角英数字(IMEオフ、NICOLAモードもオフ)が入力できるよう、IMEをカスタマイズして使っている。

トグル式ではなく一方通行のキー操作で日本語と英数字の行き来ができるようにしておけば、いちいちIMEの入力文字種を視覚で確認する必要もなくて楽である。

Fnキー押下時のレイアウト

60%キーボードにはファクションキーや一部の編集機能キーを物理的に配列できないので、Fnキーを押しながら入力してやることで補うようにした。

xd64_nicola_jp_1 Fnキー押下時

赤字で示したキーがFnキーを押したときの出力になる。赤字で示していないキーについては、Fnキーを押していないときと同じ文字、記号、制御コードを出力する。

Insert、半角/全角、変換、Appキーなど、自分の入力操作であまり使わないキーはFnキーを押しながら入力するようにした。個人的に戸惑うのはエディターでの編集操作でけっこう多用するHomeとEndの2つになるが、まあ配列できるキーが足りない小型のキーボードなので我慢するしかないだろう。

追記になるが、しばらく使っているうちに編集操作についての不満はなくなった。また、Deleteキーが近いのでチマチマした編集作業(CADも含めて)のときに楽である。

親指キー左右の隙間について

XD64 VER3 PCBで今回のようなレイアウトにすると、親指キーの左右に0.25U相当の隙間が開いてしまう。スイッチプレートのこの部分は、いろいろなスペースキーの配置に対応するために幅の広いスリット状になっていてキーキャップをはめてもPCBが丸見え状態である。

xd64 キーとキーの隙間

髪の毛が入り込むくらいならいいのだが、ニッパーで切った抵抗の足とか飛び込むとまずいので、テープを貼ってカバーした。

xd64 キーとキーの隙間を埋める

パーマセルテープを切らしていたので、アセテートの布絶縁テープを貼ってごまかした。

完成図

xd64_nicola_JP_1

キーキャップをはめるとこんな具合。このキーキャップは、アーキスというブランドの “PBTフルキーキャップセット 日本語配列”という製品で ヨドバシカメラで購入したものだが、残念ながら数年前にディスコンになっている。

きょうのまとめ

2020年の春に一式を購入して適当に作って放ったらかしになっていたのだが、hoboNicolaライブラリの更新をするにあたって、ちゃんと話をまとめることにした。

プログラムは、GitHubに公開した hoboNicolaLibrary 1.7.0版に含まれている。このバージョンでは、おもにXD64やXD87への対応を強化しています。レイアウトなど、この投稿の内容と相違があるかもしれませんが、GitHub側が最新です。