Я пытаюсь найти способ принудительно переназначить клавиши клавиатуры.
Я пытался использовать xmodmap и setxkbmap, но они не работают для одного конкретного приложения. Такие команды работают для других обычных оконных / приложений на X tho.
Я думаю, что приложение может читать исходные данные с клавиатуры и игнорировать ввод X?
Итак, как переназначить ключи без использования xmodmap и setxkbmap? если это когда-либо возможно сделать с помощью какого-либо программного обеспечения.
Я также пробовал xkeycaps, xkbcomp, но не пробовал loadkeys, так как он работает на X.
Я нашел здесь , что я мог бы попробовать setkeycodes
, «потому что после назначения ядра кода ключа кнопка должна работать в Xorg» , но я также обнаружил , что «вы не можете использовать„setkeycodes“на USB - клавиатурами» , это мой случай (я заинтересован в случае кто-то заставляет его работать на PS2, как я думаю, я мог бы использовать адаптер).
Это казалось многообещающим «Сопоставить коды сканирования с кодами клавиш» , но после нескольких тестов ничего не изменилось, вот они:
я нашел код клавиши «36» (клавиша «j») на vt1 и showkey
обнаружил код сканирования «7e» (клавиатура ».) В VT1 сshowkey --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..
Обс .: не работал ни с: KEYBOARD_KEY_7e=j
Еще несколько альтернативных способов (автор @ vinc17) найти ключи:
evtest /dev/input/by-id/...
или
input-kbd 3
(поместите индекс id, найденный в ls -l /dev/input/by-id/*
ex. Event3)
PS .: * Если вы заинтересованы в тестировании самих себя, соответствующая тема для приложения: http://forums.thedarkmod.com/topic/14266-keyboard-issue-in-new-version-108/ Вопросы, которые я имеют одно и то же: некоторые ключи (KP_Decimal, DownArrow, UpArrow, RightArrow) игнорируются и рассматриваются все с одинаковым значением там "0x00"
showkey --scancodes
не дает коды сканирования, которые ожидает udev (значения разные); input-kbd
утилита дает правильные сканкоды.
evtest
Утилита должна также дать вам правильные сканкоды: после ввода ключа, вы должны получить 2 строки и первый один должен заканчиваться чем - то форма code 4 (MSC_SCAN), value xxx
, где xxx
есть скан. Но драйвер для моей клавиатуры глючит, и я не получаю эту MSC_SCAN
строку для некоторых клавиш, которые я хотел переназначить. Вот почему я использовал input-kbd
, в котором перечислены все коды сканирования для выбранного устройства.
/etc/udev/hwdb.bin
, а не/lib/udev/hwdb.bin
. Но хотя этот файл обновлен правильно, это не работает для меня, даже после перезагрузки. Возможно, чего-то не хватает в документации. Об этом: bugs.freedesktop.org/show_bug.cgi?id=82311