Mam starą klawiaturę z kluczem IBM 122 model M, którą dostosowuję do użytku na nowoczesnym komputerze. Korzystam z Teensy 2.0 do kodowania i obsługi strony USB. Pożyczyłem oprogramowanie z projektu klawiatury Humble Hacker ( https://github.com/humblehacker/keyboard ) i dodałem dodatkowe klucze w konfiguracji kompilacji. Jak na razie dobrze.
Wszystkie „zwykłe” klucze działają, ale wydaje się, że jądro upuszcza dodatkowe klucze ( F13- F24, itp.).
Uruchomienie /lib/udev/keymap -i input/event0
pokazuje kody skanowania wszystkich normalnych kluczy, ale nic dla dodatkowych kluczy.
Uruchomienie wireshark
przechwytywania pakietów przez port USB pokazuje, że klawiatura wysyła kody skanowania, ale wygląda na to, że jądro po prostu je upuszcza.
Wydaje mi się, że jest to coś w sterownikach jądra, które po prostu nie dostarcza kodów skanowania, których się nie spodziewa.
Sądzę, że w jakimś .h
pliku źródłowym jądra będzie jakaś „kluczowa” mapa kluczy , ale jak dotąd nie udało mi się jej znaleźć.
Warto podkreślić, że nie pytam o mapowanie dodatkowych kluczy w X, tak jak wielu innych przede mną. Jest to problem niskiego poziomu, prawdopodobnie związany z jądrem. Załóżmy na chwilę, że w ogóle nie będę używać X. Potrzebuję tylko, aby kody skanowania były wyświetlane po uruchomieniu /lib/udev/keymap -i
, a resztę mogę zrobić stamtąd.
źródło
evtest
zamiast/lib/udev/keymap -i
, nie wiem, czy to wyjdzie inaczej.Odpowiedzi:
Jądro widzi dziwne kody skanowania i upuszcza je. Spróbuję uzyskać te wartości kodów skanowania, a następnie zaktualizować indeks sprzętowej bazy danych. Krótko mówiąc, plan jest następujący:
pobierz kody z wyjścia dmesg - dmesg powinien wypisać coś takiego po naciśnięciu nieznanego kodu:
a0
będący wartością kodu.utwórz niestandardowy plik odwzorowania kodu klucza. Przykłady i pomoc znajdują się w domyślnym pliku
(w
/usr/lib/udev/hwdb.d/60-keyboard.hwdb
przypadku Arch może być inny w innych dystrybucjach).zaktualizuj i uruchom bazę danych sprzętu, uruchamiając polecenia:
gdzie
eventXX
odpowiada twojej klawiaturze (możesz ją uzyskać uruchamiającevtest
). Możesz także uruchomić ponownie zamiast wyzwalać.Poszukaj bardziej szczegółowego opisu w Arch wiki i domyślnym pliku mapowania kodu klucza (lub w dokumentacji dystrybucyjnej, jeśli nie jest to Arch).
Jest to niezawodna i prosta metoda, która sprawia, że mapowanie na poziomie jądra działa więc bez względu na serwer wyświetlania, DE itp.
źródło
Ta strona oferuje niestandardowe konwersje klawiatury http://straypoetry.com/ibm-model-m-keyboard/
Na podstawie informacji z tej strony: http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html
źródło