2014-11-22 311 views
11

我在哪裏可以找到不同鍵盤佈局的十六進制鍵盤掃描碼列表?十六進制鍵盤掃描碼和USB HID鍵盤文檔的列表

我發送鍵碼在(假)USB HID鍵盤,其次是十六進制轉義鍵掃描碼和HID設備bash命令echo -ne:爲一斜線

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,...?哪個代表哪個?

此語法的文檔將非常酷。我還沒找到。

+0

根據您的正斜槓掃描碼,我會說你的鍵盤是德國的T2,而不是捷克的Qwertz。代碼'x24'對應於在美國等同於7的機械位置,在T2上是正斜槓,但在捷克版本中,「/」是'x2F'我認爲(相當於美國'''')。 – jiggunjer 2017-01-04 09:05:13

+0

非常OT,但CH是瑞士(Confoederatio Helvetica)的ISO代碼,捷克將是CZ。 – Erik 2017-01-05 09:48:16

回答

28

的「掃描碼」(他們是真正的索引使用代碼)上usb.org發表在USB HID Usage Tables規範中第10章「鍵盤(我在Nexus 7採用2012卡利Nethunter) /鍵盤頁面(0x07)「。典型的鍵盤報告佈局可在附錄B「引導接口描述符」的USB Device Class Specification for HID的「B.1協議1(鍵盤)」部分中找到。

描述鍵盤報告格式爲:

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端口時,報告緩衝區的確切格式取決於發送給主機的報告描述符,因此以上只是一個(非常典型的)示例。

+0

謝謝。第10章適用於HID鍵盤從硬件發送特定按鍵(例如,Microchip HID鍵盤演示發送與'a'鍵匹配的4)。 – 2016-09-04 17:22:36

+0

警告:這僅適用於QWERTY鍵盤。在AZERTY鍵盤上,4與'q'鍵相關,而不是'a'鍵。換句話說,代碼取決於區域鍵盤佈局 – 2017-01-02 21:43:06

+0

@PierrePoliakoff我認爲你的意思是說,代碼是*固定*(或應該是),基於與英文鍵盤相對應的*機械*佈局。例如。無論打印在其上的字符如何,相同的密鑰都會生成相同的使用ID。 – jiggunjer 2017-01-04 08:51:15