2014-11-22 31 views
11

Gdzie mogę znaleźć listę kodów skanowania klawiatury hex dla różnych układów klawiatury?Lista kodów skanowania klawiatury hex i dokumentacja klawiatury USB HID

wysyłam kluczowych kody na (fałszywy) klawiatura USB HID z polecenia bash echo -ne następnie przez uciekł szeciokątny kodu skanowania i urządzeniem 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 

dla ukośnik (/) na układzie klawiatury USA.

Na moim układ klawiatury (CH) jest

echo -ne "\x00\x00\x00\x24\x00\x00\x00\x00" > /dev/hidg0 
echo -ne "\x00\x00\x00\x00\x00\x00\x00\x00" > /dev/hidg0 

za ukośnikiem. Więc myślę, że musi istnieć lista dla wszystkich z nich. Jednak udało mi się znaleźć listę dla US layout, ale nie dla żadnego innego układu klawiatury.

Wiem, że druga linia zatrzymuje pisanie klucza, ale nie do końca rozumiem składnię tych sekwencji. Wiem, że jeśli zmienię pierwszy \x00 na x02, "przesunie" wprowadzony klucz. Ale dlaczego jest jeszcze 6 modyfikatorów? Czy oznaczają one ctrl, alt, ...? A co oznacza?

Dokumentacja tej składni byłaby naprawdę świetna. Nie udało mi się jeszcze tego znaleźć.

(używam Kali Nethunter na Nexusa 7 2012)

+0

W oparciu o twój scancode do forward slash, powiedziałbym, że twoja klawiatura to niemiecki T2, a nie czeski qwertz. Kod "x24" odpowiada mechanicznej pozycji cyfry 7 i amerykańskiego odpowiednika, która jest przednim ukośnikiem na T2, ale w wersji czeskiej "/" będzie "x2F", jak sądzę (odpowiednik US '['). – jiggunjer

+0

Dość OT, ale CH to kod ISO dla Szwajcarii (Confoederatio Helvetica), czeski będzie CZ. – Erik

Odpowiedz

28

„Kody Scan” (są one naprawdę indeksy kodów do użytkowania) są publikowane na usb.org w specyfikacji USB HID Usage Tables w rozdziale 10 „klawiatura/Keypad Page (0x07) ". Typowy układ raportu klawiatury można znaleźć w USB Device Class Specification for HID w Dodatku B "Deskryptory interfejsu rozruchowego", część "B.1 Protokół 1 (klawiatura)".

który opisuje format raportu klawiatury jako:

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. 

Zauważ, że spec USB nie określają układy klawiatury. Po prostu wyświetla kody użytkowania przypisane do poszczególnych funkcji klucza. Litera "a" to na przykład kod użycia 0x04. Jeśli chcesz mieć wielkie litery "A", musisz również ustawić bity modyfikatora Byte 0, aby wybrać "Left Shift" (lub "Right Shift").

Dokładny format bufora raportu zależy od deskryptora raportu wysłanego do komputera hosta, gdy klawiatura została podłączona do portu USB, więc powyższy jest tylko (dość typowy) przykład.

+0

Dzięki. Rozdział 10 jest przydatny dla klawiatur HID do wysyłania określonych naciśnięć klawiszy ze sprzętu (na przykład, demo klawiatury Microchip HID wysyła 4, które pasują do klawisza "a"). –

+0

Ostrzeżenie: dotyczy to tylko klawiatury QWERTY. Na klawiaturze AZERTY 4 jest skojarzone z klawiszem "q", a nie klawiszem "a". Innymi słowy, kody zależą od regionalnego układu klawiatury. –

+0

@PierrePoliakoff Myślę, że chciałeś powiedzieć, że kody są * poprawione * (lub powinny być), w oparciu o * mechaniczny * układ odpowiadający angielskiej klawiaturze. Na przykład. ten sam klucz daje taki sam identyfikator użycia, niezależnie od drukowanego na nim znaku. – jiggunjer