Usiłuję znaleźć sposób na silne mapowanie klawiszy klawiatury.
Próbowałem użyć xmodmap i setxkbmap, ale nie działają one dla jednej konkretnej aplikacji. Takie polecenia działają dla innych normalnych okien / aplikacji na X tho.
Myślę, że aplikacja może odczytywać nieprzetworzone dane z klawiatury i ignoruje dane wejściowe X?
Jak więc mapować klucze bez użycia xmodmap i setxkbmap? jeśli kiedykolwiek można to zrobić za pomocą jakiegoś oprogramowania.
Próbowałem także xkeycaps, xkbcomp, ale nie próbowałem loadkeys, ponieważ działa na X.
Znalazłem tutaj, że mogę spróbować setkeycodes
, „ponieważ po przypisaniu kodu jądra przycisk powinien działać w Xorg” , ale znalazłem również, że „nie można używać„ setkeycodes ”na klawiaturach USB” , to moja sprawa (jestem zainteresowany przypadkiem ktoś sprawi, że będzie działać na PS2, ponieważ myślę, że mógłbym użyć adaptera).
Wydawało się to obiecujące „Mapuj skancody na kody” , ale po kilku testach nic się nie zmieniło, oto one:
Znalazłem kod „36” (klawisz „j”) w vt1 z showkey
scancode „7e” (klawiatura ”.) W vt1 zshowkey --scancodes
$cat >/etc/udev/hwdb.d/90-custom-keyboard.hwdb
keyboard:usb:v*p*
keyboard:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
KEYBOARD_KEY_7e=36
$udevadm hwdb --update #updates file: /lib/udev/hwdb.bin
$udevadm trigger #should apply the changes but nothing happened
$cat /lib/udev/hwdb.bin |egrep "KEYBOARD_KEY_7e.{10}" -ao
KEYBOARD_KEY_7eleftmeta
$#that cat on hwdb.bin did not change after the commands..
Obs .: nie działa również z: KEYBOARD_KEY_7e=j
Inne alternatywne sposoby (by @ vinc17) na znalezienie kluczy:
evtest /dev/input/by-id/...
lub
input-kbd 3
(wstaw indeks identyfikatora znaleziony na przykład ls -l /dev/input/by-id/*
z event3)
PS .: * Jeśli jesteś zainteresowany testowaniem siebie, pokrewny wątek dla aplikacji jest następujący: http://forums.thedarkmod.com/topic/14266-keyboard-issue-in-new-version-108/ Problemy I mają takie same: niektóre klucze (KP_Decimal, DownArrow, UpArrow, RightArrow) są ignorowane i są traktowane jako wszystkie o tej samej wartości „0x00”
showkey --scancodes
nie daje scancodes, których oczekuje udev (wartości są różne); input-kbd
narzędzie daje poprawne kody skanowe.
evtest
Narzędzie powinno również dać odpowiednie kody skanowe: po wpisaniu klucza, należy uzyskać 2 linie i pierwsza powinna kończyć się czymś formularza code 4 (MSC_SCAN), value xxx
, gdzie xxx
jest scancode. Ale sterownik mojej klawiatury jest wadliwy i nie dostaję tej MSC_SCAN
linii w przypadku niektórych klawiszy, które chciałem ponownie mapować. Właśnie dlatego użyłem input-kbd
, który wyświetla wszystkie skancody dla wybranego urządzenia.
/etc/udev/hwdb.bin
, nie/lib/udev/hwdb.bin
. Ale chociaż ten plik jest poprawnie zaktualizowany, to też nie działa dla mnie, nawet po ponownym uruchomieniu. Być może czegoś brakuje w dokumentacji. O tym: bugs.freedesktop.org/show_bug.cgi?id=82311