私がしたいこと:キーを押したときにUSB HID IDを取得します-)私の 本当に人間工学的キーボードができるように ファームウェアを再プログラムする キーボードの。
私はこれがあることを知っています Microsoftからのリスト 多くのUSB HIDIDがあります。
ただし、キーを入力してプログラムに表示するだけで、キーのIDを見つけるのは簡単です。特に、Microsoftのリストにない一部のメディアキーの場合。
そのようなプログラムは存在しますか?コマンドラインプログラムである可能性があります。 Linuxが望ましいですが、Windowsもオプションです。
PS:私は見たことがあります この質問 stackoverflowには興味深い答えがあります。しかし、私のシステム(Fedora 17)で/dev/usb/hiddev0
が見つかりません。
この質問 @ Andy Rossからの回答は、キーを押したときに少なくともある程度の出力を得るのに役立ちました。やった
xxd -c 144 /dev/input/by-path/pci-0000:00:1a.0-usb-0:1.1:1.0-event-kbd
しかし、それはまだ実際には読めません。同じキーを押しても、いつも同じとは限りません。
この質問 では pythonスクリプト がリンクされており、入力デバイスを読み取り、それを出力する必要があります。しかし、仕事中のこのコンピューターでは、このpythonスクリプトを使用してデバイスにアクセスする権限がありません。
答えは:
su -c "while true; do od --read-bytes=144 --width=144 -x /dev/input/event3 | awk 'NF > 1 { print \$12 }'; done"
ツリーコマンドで私はこれを見つけました
$ tree /dev/input/by-path
/dev/input/by-path/
├── pci-0000:00:1a.0-usb-0:1.1:1.0-event-kbd -> ../event3
├── pci-0000:00:1a.0-usb-0:1.1:1.1-event -> ../event4
├── pci-0000:00:1d.2-usb-0:1:1.0-event-mouse -> ../event2
└── pci-0000:00:1d.2-usb-0:1:1.0-mouse -> ../mouse0
わかりました。/dev/input/event3
は私のキーボードです。
od
コマンドは、8進数およびその他の形式でファイルをダンプします。
-x
オプションを使用すると、16進数をダンプします。--width=144
オプションを使用すると、キーを押すたびに1行だけがダンプされます(1行の長さは144バイトです)。--read-bytes=144
は、144バイト後にod
を終了します。awk
コマンドは、行全体の12番目のフィールドを出力します。それだけで、フィールドの数NF
が1より大きい場合、1行おきに改行しているだけです。
全体を巡るwhile true
ループは、文字キーを入力すると壊れてしまうためです。これ以上結果は得られず、0000
のみが得られます。ただし、od
コマンドは144バイト(キーを1回押す)後に読み取りを終了します。その後、再起動します。それには確かにより良い修正がありますが、これは良い回避策です。
出力例(数回押しました Return、 RightCtrl そして Backspace、これと比較すると正しい数値が表示されます Microsoftのドキュメント(PDF) または このテキストファイルのドキュメント )
0028
0028
0028
00e4
00e4
00e4
002a
002a
002a
Linuxのxev
が役に立ちます。
幸運を。