前回決めた、フットキーボードのキーデータ登録フォーマット、問題ありましたので早速再検討しました。
8バイトしか送れない
フットキーボードに送るデータ長を64バイトにしても、LEDのON/OFFが動作していたので問題ないかと思っていました。
ところが、いよいよ前回のフォーマットに沿ってテストプログラムを作って設定してみたところ、うまく設定できませんでした。送信側のMacアプリも受信側のフットキーボードプログラムもOUTバッファは64バイト確保して、Mac側から64バイト指定で送信できているのに、なぜかうまく設定できませんでした。
それでいろいろとプログラムを変えて試したところ、どうも64バイト送っても最初の8バイトしか認識されていないみたいなんです。これってUSBキーボードの仕様なんでしょうか。ドキュメントから読み取ることはできませんでしたが、Microchip社のサンプルコードのコメントに、”元々8バイト送れるけど、サンプルではサンプルでは1バイト処理する”って書いてあったのですが、やっぱり8バイトが上限なんですかね。
この仕様で正しいのか確証が持てませんが、送れないものは送れないので、キーデータの登録フォーマット見直しました。(現物合わせ感が…)
8バイトをいろいろと細かく定義してもあとあと困るかもしれないので、新フォーマットは男らしく、
( ・`ω・´)
ってしてみました… (顔文字はフォーマットには含まれません)
キーデータの登録フォーマット
ということで、キーデータ登録コマンドは0x01にするとして、残りの7バイトを有効活用したいところですが、あまり難しくしてもPICマイコン側のエラー処理とか大変になりそうな気もしたので、
- 1文字登録は1回(8バイト)で設定できればよい
- 複数文字登録はどうせ複数回送信することになるので、8バイトで設定できる文字数が少なくても気にしない
ということにして、こんな感じで決めました。
1回8バイトの送信で、2文字のみの登録です。なんか効率悪い気もするけど、これで行ってみます。
フットキーポードのプログラム
コマンドをちょっと見直して、0x01はキー登録コマンド、従来からあったLEDオン/オフは0x10に移しました。
また、キーデータ登録コマンドを処理する SetSwitchData() 関数を追加しました。あと、バッファサイズなど変更したので、一通りのソースコードをアップします。
https://github.com/tool-lab/new-foot-keyboard-data-format
Mac側のアプリ
Mac側のキーデータ登録アプリですが、キーデータ登録するボタンを追加しました。また、このあとアプリで入力した文字をフットキーボードに設定するようにしますので、入力用のテキストフィールドを追加しました。ただ、テキストフィールドは何もしていません。ダイアログはこんな感じです。
なお、キーデータ登録ボタンをクリックすると、スイッチ7に “Bonjour!” と登録するようにしています。ソースコードは思いっきりハードコーディングです。
動作確認です。
まず、フットキーポードをつないだ直後は、
こんな感じで、スイッチ7は “Foot Keyboard” の入力になりますが(見やすくするために改行は普通のキーポードから入力しています)、Macのアプリで「キーデータ登録」ボタンをクリックすると、
スイッチ7のデータが “Bonjour!” に変わりました。
これで、登録ができるようになったので、フットキーボード側のプログラムはこれでほぼFIXです。あとはMac側のアプリをどこまで作り込むか、です。Mac側で一通り設定できるようになったら、フットキーボード側、Mac側のプログラムはVersion2.0.0としてまとめたいと思います。
これでも十分使えますが、ケース組み立てまでに、他の機能も検討したいと思います。今考えているのが、足元は暗いことが多いので、LEDライトをつけて何か捜し物をするときのためのフットライトをつけようかな、と考えています。これもMac側アプリから制御するようにしたいと思います。
更新履歴
日付 | 内容 |
---|---|
2013.4.29 | 新規投稿 |
2019.3.24 | ダウンロードファイルをGithubに引越し |