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 --scancodesnie daje scancodes, których oczekuje udev (wartości są różne); input-kbdnarzędzie daje poprawne kody skanowe.
evtestNarzę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 xxxjest scancode. Ale sterownik mojej klawiatury jest wadliwy i nie dostaję tej MSC_SCANlinii 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