64個のキーを搭載したUSBキーボードを自作してみました。基板のサイズは138×82mm。1.77インチTFT液晶(AE-ATM0177B3A)を搭載しています。
今のところは単なるキーボードですが、最終的には自作のBASICが動くポケコンにしたいと思っています。単なるキーボードだったら、そこらへんで一杯売っているので、わざわざ作る必要はありません。
ソースと回路図等はGitHubで公開中です。
キーボードをラズパイと接続して、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も入力可能)
このほか「無変換」とか「カタカナ」を割り振ることができます。空いてる場所は一杯ありますが、どこに配置したらいいのかわかりません。