d4isuk3_log

晴れた日にはオートバイに乗って

キーボードを作るぞ[キー配列とPOSキーと私編]

前回はこちら

ハードウェアとしてのキーボードが完成したので、次はキー配列や動作を自分好みに変えていくためにファームウェアを書いていく。

現在のキー配列

f:id:d4isuk3:20180720103930p:plain

基本的な配列はほぼ決まったと思うが、ご覧の通り空いているキーもあり、FNレイヤーもほとんど使っていないので詰めはまだまだ。

現在の外観

f:id:d4isuk3:20180720104118j:plain

目ざとい人は2Uキーに目が行くと思われる。 XD75はそのままではキーのカタチがすべて1Uで、それはそれで「格子配列」感が強調されて良いが、やはり特定のキーは「大きくあってほしい」というのが人情である。 ということで、2UキーをDMM.makeで試験的にプリントし、シフトキーとスペースキーにそれぞれ使用している。

普通のキーボードでは、こういった大きなキーであっても他もキーと同じくスイッチは1つで、その代わりキーのどこを押しても正しく押し下げられるようにスタビライザーというものが入れてある。 XD75ではそのような芸当はできないから、私は”POSキー"(いわゆる、レジのキー)を使って実現することにした。POSキーの裏側には2スイッチ分の穴が空いている。

f:id:d4isuk3:20180715194740j:plain

2スイッチ分の穴が空いているということは、スイッチ2つがこのキー1つにはまることになる。すなわち、このキー1つを押し下げると2つのスイッチが押下されることになる。 この方式の弊害は以下の2点である。

  • 1キーの入力で2スイッチ分の入力がされてしまう。

    • これはもちろん、ファームウェアの書き方で防ぐことはできる。
    • はじめは、単純に片方のキーを無効化すればいいだろうと思っていたが、いざそうしてみると、「入力漏れ」が多発した。これは、例えば隣り合う2つのスイッチのうち右側のキーを無効化していると、2Uキーの「左側」を押した場合は問題ないが、「右側」を押した場合にうまく入力できない、という事象である。
    • 結局、両方のキーは有効にしたうえで、それらのキーが押下されたタイミングでタイマーを開始し、閾値時間内に同一キーが入力された場合は無視する、という制御を行うことで解決した。
  • キーが重くなる。

    • 単純に1回のストロークで2スイッチ分を押し下げることになるから、それだけ重くなる。例えば茶軸の押下圧はスペック上45gとなっているから、2スイッチ分では90gの押下圧となる。
    • 慣れてしまうような気もするが、漫然とスペースキーを押すと「跳ね返される」ことがある。
    • スイッチを軽いものにするとか、今のスイッチを分解してバネを切るとかすれば改善できると思われるが、そこまでするほどのものでもないという印象