HIDでお砂場
AT90USB162でHIDデバイスを色々試し中。
マウスはアトメルのサイトにサンプルが有るから簡単に試せたけど、キーボードが無いんだな。
違うデバイスのサンプルは有るんだけど、そのままじゃ動かないしなぁ。
グーグル総活用で、昔は公開されていたと思しきAt90USB162に合致したサンプルを見つけた。
早速それをコンパイルしたところ、コンパイルは通り、ボリュームのミュートON・OFFは出来たので、
それを叩き台にキーボードを作ってみた。
PB0をGNDに落とすと、ひたすらA-Zを入力する。
ソースいじってて気がついたんだけど、USBのHIDキーボードって6つまでしか同時押しできないんだねぇ。
ただし、AltとかCtrlとかShiftは別。Modifierにビットで指定してキーコードを送る。
でも、6つの根拠って何だろう?
安価に造れる分割数のキーマトリクスから安全に取得できるキーの数とか?(笑)
あと、キーコードを送信した後に空のキーコードを送らないと、最後に送ったキーコードがPC側の処理で延々と入力され続けちゃうんだね。
つまり「A」キーを押す→キーコード「0×04」を送信→「A」キーを離す→キーコード「0×00」を送信。
キーリピートはキーボードの仕事ではなくPC側の仕事となるようだ。
そうだ!キーを押しながらUSBのコード引っこ抜いたらどうなるんだろー?
(ウチにはUSBのキーボードがない)
今度は加速度センサーを載せてみよう。
あとはジョイパッドを試したいかなー。
トラックバック URL :
はじめまして、リキといいます。
私も当該ソースを入手しまして、いろいろ弄っております。
6個の根拠は分かりませんが、レポートディスクリプタでレポート数(6)を指定
している場所と実際に 6バイト書き込んでいるところを変更したら、一度に
6バイト以上転送できています。
点字の 8点入力などにも利用できますね。
以上、失礼しました。
コメント by リキ — 2009/5/6 水曜日 @ 11:35:27
ようこそ!はじめまして。
なるほど。
今度ソースを変更してみて試してみます。
同時押しを幾つにしようか思案中です。
今は秋月で買ってきたSPI通信が出来る加速度センサをつないで
重力マウスを作ってみてます。
サイト共々よしなにです。
コメント by とめくぎ — 2009/5/7 木曜日 @ 15:58:29