十六进制键盘扫描码和USB HID键盘文档列表

Nic*_*ser 14 keyboard hex keycode hid

在哪里可以找到不同键盘布局的十六进制键盘扫描码列表?

我使用bash命令echo -ne通过(假)USB HID键盘发送密钥代码,然后是转义的十六进制密钥扫描代码和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
Run Code Online (Sandbox Code Playgroud)

对于/美国键盘布局上的斜杠().

在我的键盘布局(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
Run Code Online (Sandbox Code Playgroud)

斜线 所以我想必须存在所有这些的列表.然而,我能够找到美国布局的列表,但不能找到任何其他键盘布局.

我知道第二行停止键的输入,但我不太明白这些转义序列的语法.我知道,如果我将第\x00一个更改为a x02,它将"移动"输入的密钥.但为什么还有6种改性剂?难道他们主张ctrl,alt...?哪个代表什么?

这种语法的文档非常酷.我还没找到一个.

(我在Nexus 7 2012上使用Kali Nethunter)

aja*_*aja 36

在"扫描码"(他们是真正的索引使用代码)关于usb.org发布USB HID用法表中的第10章"键盘/键盘页(0×07)"规范.典型的键盘报告布局可以在附录B"引导接口描述符"的"B.1协议1(键盘)"部分的HIDUSB设备类规范中找到.

这将键盘报告格式描述为:

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.
Run Code Online (Sandbox Code Playgroud)

请注意,USB规范没有定义键盘布局.它只列出分配给特定键功能的使用代码.例如,字母"a"是使用代码0x04.如果你想要一个大写的"A",那么你还需要设置字节0修饰符位来选择"左移"(或"右移").

报告缓冲区的确切格式取决于发送到时,键盘的USB端口插入了主机报告描述符,所以上面的只是一个(非常典型)的例子.

  • 警告:这只适用于 QWERTY 键盘。在 AZERTY 键盘上,4 与“q”键相关联,而不是与“a”键相关联。换句话说,代码取决于区域键盘布局 (2认同)
  • @PierrePoliakoff我想你的意思是说代码是*固定*(或应该是),基于与英文键盘对应的*机械*布局.例如,相同的密钥产生相同的使用ID,无论其上印刷的字符如何. (2认同)