Próbuję przekształcić Minitel w komputer z Raspberry Pi.
To jest minitel:
Przylutowałem więc matrycę klawiatury minitel do płytki z klawiaturą USB:
Wszystko działa dobrze, otrzymuję niektóre klawisze z mojej niestandardowej klawiatury. Muszę tylko odpowiednio mapować klucze.
Więc próbuję stworzyć program, który poprosi mnie o naciśnięcie a
i złapanie odpowiedniego kodu, a następnie za pomocą wszystkich klawiszy mojej niestandardowej klawiatury, aby ostatecznie utworzyć plik xmodmap.
Jedynym problemem, jaki mam, jest to, że nie mogę zrozumieć, w jaki sposób mogę uzyskać ten kod dostępu (i tylko to!). Próbowałem, xev
ale wyświetla się za dużo danych, aby je odfiltrować.
Wiem, że mógłbym ręcznie śledzić wszystkie kody, ale przekształcę 10 miniteli, więc wolałbym szybszy sposób!
źródło
Odpowiedzi:
Zakładam, że próbujesz to zrobić w powłoce lub w podobny sposób (w przeciwnym razie wystarczy użyć bibliotek X bezpośrednio). Jeśli tak, może okazać się
xinput --test «device-name»
łatwiejsze do przeanalizowania.Niestety tak naprawdę nie jest przyjazny dla skryptów powłoki. Ale możesz sprawić, że będzie działać
stdbuf
. Działa, dopóki go nie zabijesz, ale skrypt powłoki może go potokowaćread
.Możesz więc zrobić coś takiego:
Musisz użyć poprawnej nazwy klawiatury zamiast „AT Translated Set 2 keyboard”. Możesz to znaleźć za pomocą
xinput list
:Niestety musisz użyć określonego urządzenia - nie możesz użyć klawiatury podstawowej.
(Ponadto musisz znaleźć sposób na zabicie xinput w powyższym przypadku lub po prostu zadowalaj się naciśnięciem klawisza Control-C po wprowadzeniu wszystkich kluczy. Prawdopodobnie będziesz chciał wypisać więcej kluczy niż qwerty. )
źródło
id
klawiatury zamiast jej nazwy, ponieważ miałem konflikty z 2 takimi samymi nazwami. Więcxinput test 18
gdzie 18 to identyfikator mojej klawiatury.test.c
, wygląda na to, że odpowiednia funkcja jestprint_events
. Może xorg wziąłby łatkę, aby dodać flagę, aby zatrzymać po n wydarzeniach?xinput --query-state
daje bieżący stan i natychmiast wychodzi. Możesz go zapętlić.