まずは, ROTTAY 22key に接続せず, 基板のみでこの基板上のスイッチでなんらかの Report (key code) を送信する事にし, とりあえず "a" を送る code を書いた. これは単に 0x00, 0x00, 0x04, 0x00, ... の 8 bytes を送るだけで, 難無く送れた. 0x04 部分が USB HID の key code で "a" に相当するものである. しかし, USB を PC に挿して送信できるまでに USB を認識するところで reset 出まくりっぽい挙動をしており, その調整が必要である. また, Windows 7 では全く認識しない. これは要調査である. まさか IAD descript を使っているからか?
USB HID で report を受信できたので, 次は実際に 22key に接続し, key を scan し, それら key に対応した report を送信でき様にする. これにより
matrix key の読み込み
押された key から対応する key code を認識
key code の送信
の実装が必要になる.
key scan とくに問題ないが, key code を認識する所が面倒になる. と言うのも, どの key に key code を対応させるかを考える事になり, それはつまりその key にどの機能を割当るかと同等である. 今回 22key は左手で操作する事を検討しているが, home position や親指に近い方に重要な, もしくは良く操作する機能を assign するべきである. また 22 個の key しかないので, 拡張する為に "SHIFT" key も導入を検討した. 例えば grid 選択の順送りに対して逆は SHIFT を押すなどが可能である. とりあえずの assign はしているが, 頭で考えているだけではあまり意味がないので, 実際に回路を書いて, board data も書いて操作性を確認しようと考えている. 丁度この制御基板を書き key の assign の最適化をするのが良いのではないかと思っている (現状は reference board を使っている).
今は,
"5" に Auto zoom
"123" に部品関連
"789" に配線系
"+-=BS" に layer, grid
"ENTER" に SHIFT
を assign した. とりあえず pcbnew の assign をしたが, eeschema はまた違った assign が必要である. それもあり, 電卓 mark を押す事により, key code を eeschema 用, pcbnew 用の変更をできる様にもした. この 22key はすべての key top が青く光る仕様となっている為, どちらの key code になっているか分る様に pcbnew の key code が選らばれている場合には, 青く光らせている.
左側が eeschema 時, 右側が pcbnew 時
まだまだスカスカでもっと assign できるのだが必要であれば, どんどん assign していけば良いだろう. とにかく assign にはよく使う単品 command にするべきで
- 配線, 部品配置と良く使うものを assign (あたりまえだけだが)
- mouse の wheel でできる事は assign しない
- text の編集など通常の keyboard の操作が必要なものは assign しない
- 22key の組み合せ 2, 3 個で解決できるものは assign しない
(layer の内層切り替えは Cu.Top + NEXTにするとか)
ちなみに, key code の assign は人によって変更が必要になると思われるので, USB CDC の 簡易 shell にて, assign の変更ができる様にしておき, MCU 内部 EEPROM に記憶しおけば, 変更する毎に compile の必要はなくなるだろう. それもあって config descriptor は IAD descriptor を用いて CDC と HID の composite device としている.
そう言えば, 当初 22key の匡体が開けられないので, 横を切断した裏蓋を接着剤で止めたのが下の写真, 横から見ると不細工だが, 通常 key top しか見ないので問題ないだろう. とりあえずもう 1 台は必要なので, その時は最初から key top 部分のネジを外して裏蓋を開けよう.
0 件のコメント:
コメントを投稿