DIY-Keypad64(自作USBキーボード)

64個のキーを搭載したUSBキーボードを自作してみました。基板のサイズは138×82mm。1.77インチTFT液晶(AE-ATM0177B3A)を搭載しています。

今のところは単なるキーボードですが、最終的には自作のBASICが動くポケコンにしたいと思っています。単なるキーボードだったら、そこらへんで一杯売っているので、わざわざ作る必要はありません。

 

www.youtube.com

 

ソースと回路図等はGitHubで公開中です。

github.com

 

キーボードをラズパイと接続して、7インチの純正ディスプレイを取り付けてみました。ケースは3Dプリンタで7時間かけて出力した超大作です。

画面の向きが180度逆だったので、「lcd_rotate=~」と入力しようと思ったら、アンダーバーが打てないという致命的なバグを発見。ArduinoのKeyboardライブラリは日本語キーボードのレイアウトに非対応なので、まともにキーコードが送れません。対策にはちょっと工夫が必要です。

(2024/4/1追記)

旧バージョンはアンダーバーが打てない、¥が打てない、見当違いのキーが出てしまう等の致命的な不具合があったのですが、全て解決しました。

press関数やrelease関数を使うのを止めて、sendReport関数を使ってキーコードを直接送るように変更しました。ただし、sendReport関数はprivateメンバに属しています(外部から呼び出せない)ので、"Keyboard.h"を自前で書き換えて、publicメンバに加える必要があります。

全角/半角キーで日本語が入力できるようになりました。

ファンクションキーがないのでスペースで変換するしかありません。fncキーでF7~F9を打てるようにしないといけません(まだ未対応)。

(2024/4/4追記)

「FNC」キーに対応しました。一般的には「FN」というみたいですが、勘違いしたまま作ってしまいました。

次のように割り振ってみました。ファンクションキーが使えるようになったので、日本語入力がちょっとだけ使いやすくなったかもしれません。

・PAGE UP:FNC+UP
・PAGE DW:FNC+DOWN
・HOME   :FNC+LEFT
・END    :FNC+RIGHT
・F1~F9 :FNC+1~9
・F10    :FNC+0
・F11    :FNC+-
・F12    :FNC+^(JP) =(US)
・INSERT :FNC+DEL
WINDOWS:FNC+W
・BREAK  :FNC+B
・PRINT SCREEN:FNC+P (FNC+P+ALTも入力可能)

このほか「無変換」とか「カタカナ」を割り振ることができます。空いてる場所は一杯ありますが、どこに配置したらいいのかわかりません。