【问题标题】:List of hex keyboard scan codes and USB HID keyboard documentation十六进制键盘扫描码列表和 USB HID 键盘文档
【发布时间】:2015-01-20 10:09:41
【问题描述】:

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

我正在使用 bash 命令echo -ne 后跟转义的十六进制键扫描代码和 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

美式键盘布局上的斜线 (/)。

在我的键盘布局 (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

为斜线。所以我想所有这些都必须存在一个列表。 然而,我能够找到US layout 的列表,但找不到任何其他键盘布局。

我知道第二行会停止键入密钥,但我不太了解这些转义序列的语法。我知道如果我将第一个 \x00 更改为 x02 它将“移动”输入的密钥。但是为什么还有 6 个修饰符呢?它们代表ctrlalt,...?哪个代表哪个?

这种语法的文档会很酷。我还没找到。

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

【问题讨论】:

  • 根据您的正斜杠扫描码,我会说您的键盘是德国 T2,而不是捷克 qwertz。代码x24 对应于美国等效物上 7& 的机械位置,这是 T2 上的正斜杠,但在捷克语版本上,“/”将是 x2F 我认为(等效于美国 [)。
  • 相当 OT,但 CH 是瑞士的 ISO 代码 (Confoederatio Helvetica),捷克语是 CZ。

标签: keyboard hex hid keycode


【解决方案1】:

“扫描代码”(它们实际上是使用代码的索引)在 usb.org 第 10 章“键盘/键盘页面 (0x07)”的USB HID Usage Tables 规范中发布。典型的键盘报告布局可以在附录 B“引导接口描述符”的“B.1 协议 1(键盘)”部分的 USB Device Class Specification for HID 中找到。

将键盘报告格式描述为:

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 端口时发送到主机的报告描述符,因此以上只是一个(非常典型的)示例。

【讨论】:

  • 谢谢。第 10 章对于 HID 键盘从硬件发送特定击键很有用(例如,Microchip HID 键盘演示发送与“a”键匹配的 4)。
  • 警告:这仅适用于 QWERTY 键盘。在 AZERTY 键盘上,4 与“q”键相关联,而不是“a”键。换句话说,代码取决于区域键盘布局
  • @PierrePoliakoff 我想你的意思是说代码是 fixed (或应该是),基于对应于英文键盘的 mechanical 布局.例如。相同的密钥产生相同的使用 ID,而不管其上印有什么字符。
  • 链接已损坏。更新了HID Usage Tables 的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
相关资源
最近更新 更多