さまざまなキーボードレイアウトの16進キーボードスキャンコードのリストはどこにありますか?
Bashコマンドecho -ne
に続いてエスケープされた16進キースキャンコードとHIDデバイスを使用して、(偽の)USB HIDキーボードでキーコードを送信しています。
echo -ne "\x00\x00\x00\x38\x00\x00\x00\x00" > /dev/hidg0
echo -ne "\x00\x00\x00\x00\x00\x00\x00\x00" > /dev/hidg0
uSキーボードレイアウトのスラッシュ(/
)。
私のキーボードレイアウト(CH)では
echo -ne "\x00\x00\x00\x24\x00\x00\x00\x00" > /dev/hidg0
echo -ne "\x00\x00\x00\x00\x00\x00\x00\x00" > /dev/hidg0
スラッシュ。したがって、これらすべてのリストが存在する必要があると思います。それでも、私は Sレイアウト のリストを見つけることができましたが、他のキーボードレイアウトのリストは見つかりませんでした。
2行目でキーの入力が停止することは知っていますが、これらのエスケープシーケンスの構文はよくわかりません。最初の\x00
をx02
に変更すると、入力されたキーが「シフト」されることを知っています。しかし、なぜさらに6つの修飾子がありますか? ctrl
、alt
、...の略ですか?そして、どれがどれを表しますか?
この構文のドキュメントは本当にクールです。まだ見つけられませんでした。
(Nexus 7 2012でKali Nethunterを使用しています)
「スキャンコード」(実際には使用コードのインデックス)は、10章「キーボード/キーパッドページ(0x07)」の SB HID Usage Tables 仕様でusb.orgに公開されています。典型的なキーボードレポートのレイアウトは、付録B「ブートインターフェイス記述子」の「B.1プロトコル1(キーボード)」セクションの HIDのUSBデバイスクラス仕様 にあります。
キーボードレポート形式は次のように説明されています。
Byte 0: Keyboard modifier bits (SHIFT, ALT, CTRL etc)
Byte 1: reserved
Byte 2-7: Up to six keyboard usage indexes representing the keys that are
currently "pressed".
Order is not important, a key is either pressed (present in the
buffer) or not pressed.
USB仕様ではキーボードレイアウトが定義されていないことに注意してください。特定の主要な機能に割り当てられた使用法コードを単にリストします。文字「a」は、たとえば使用コード0x04です。大文字の「A」が必要な場合は、バイト0修飾子ビットを設定して「左シフト」(または「右シフト」)を選択する必要もあります。
レポートバッファーの正確な形式は、キーボードがUSBポートに接続されたときにホストコンピューターに送信されるレポート記述子に依存するため、上記は単なる(非常に典型的な)例です。