あおしまの日記

あおしまさんの日記らしいです。個人的に興味がある事を時々書きます。スマートウォッチPebble日本語パックを作成、公開しています。

NewtonキーボードUSB化(2020年)

自作キーボードを作ってみたい!からの変節

自作キーボードを作りたいなあと思っては居るものの、腰が重いところがありまして。

  • スイッチがCherryか、その中華互換かあ、とか、
  • 別に分離じゃなくていいんだけどなあ、とか、
  • 手元のALPSキーボードを自作のためにバラすのも勿体ないなあ、とか、

そんなこんなしているうちに変節してまいりまして、

  • じゃあとりあえずProMicroというか、32U4が乗った基板を買ってみよう、とか、
  • Newtonキーボードの実験台が手に入った、とか、
  • QMKっていう仕組みがあるらしい。予備調査をしてみよう、とか、
  • QMKに、コンバーターとかいうのがあるぞ、とか

そんな延長で、NewtonキーボードのUSB化を調べてやってみましたので、
その記録です。

NewtonキーボードのUSB化

調べてみると、主に2012年ごろ流行ったみたいです。
現在検索した時点で候補は3つ。

1番目の海外のものは、ソースが一部消失してコンパイルできないのと、Teensy意外と割高なので、候補にならず。
2番目のは特にソースもなく、販売の状況も現在よくわからないので、あまり参考にはならず、コネクタなどの部品も多いので、とりあえず方向性の参考程度に。
3番目は、ソースも公開されていて、アプローチもスマートなのでこれを目指して再現することに。

材料

作り方

ハードウェア的には、Riversidesoftさんの通りでOK。

f:id:aoshimak:20200819110458j:plain

ソフトウェア的には、DaVinciをArduino的に使う設定の手順で

  • ArduinoIDEにDaVinciの設定を追加
  • DaVinciの書き込み設定
  • Riversidesoftさんのソースを読み込み
    • ソースそのままだとエラーで止まる。先頭にinclude文を追加した方が良い。(Keyboard.hの導入)
  • コンパイル、転送書き込み

動作確認

ハードウェア的に認識が切り替わるので、そうなるとHIDキーボードとして認識されて使えるようになります。だめならUSB ケーブルの挿し直しで、認識を確認します。
ケーブルと基板は、キーボード内部に固定してあげると収まりが良いです。USBケーブルには、元のシリアルケーブル同様、小さなタイラップを巻いて抜け留めを作ってあげた方が良いでしょう。

ソースの改造

ソースは大まかに、キーボードの定義、NKで始まるNewtonキーボードのキーコードの定義、Shift/Optionキーの押下状態、特別キーの対応、一部特殊キーの読み取りに分かれているので、特別キーの対応を変えたり、`キーを何と組み合わせてEscキーを発生させる方法、などに手が入れられます。

私は個人的な趣味嗜好で、Commandキーの押下状態を追加して、Escをそちらと組み合わせたり、矢印キーの配列をviキーマップ的に並べ替えたり(←↓↑→)しています。キーボードを繋いだ状態のままで、ArduinoIDEからの修正、転送、即書き換え反映ができるので、カスタマイズはやりやすいです。

残念ながら自分にはBSキーの組み合わせでDeleteを生み出すことはできませんでした。(Shift-BSでDelete発生させたいんですが出来ませんでした。)

他の方法

使用基板はDaVinciでもいいんですが、5VなProMicroでも代替可能です。5V,GND,RXの3端子があるものであれば、だいたい使えると思います。ここまで色々な手間をかけずに、差し替えだけで導入できる半完成品が欲しい方がいらっしゃいましたら、コメント欄にご連絡いただければ頒布も可能です。(あと数個分の材料があるので製作可能です。)
f:id:aoshimak:20200819110051j:plain