Saya mencoba menemukan cara untuk memetakan kembali tombol keyboard dengan paksa.
Saya mencoba menggunakan xmodmap dan setxkbmap, tetapi mereka tidak berfungsi untuk satu aplikasi tertentu. Perintah tersebut berfungsi untuk aplikasi berjendela / normal lainnya di Xtho.
Saya pikir aplikasi mungkin membaca data mentah keyboard dan mengabaikan input X?
Jadi, bagaimana cara memetakan kembali kunci tanpa menggunakan xmodmap dan setxkbmap? apakah mungkin dilakukan dengan menggunakan beberapa perangkat lunak.
Saya juga mencoba xkeycaps, xkbcomp, tetapi tidak mencoba loadkeys, karena sedang berjalan di X.
Saya menemukan di sini bahwa saya dapat mencoba setkeycodes
, "karena setelah menetapkan kernel kode kunci tombol harus bekerja di xorg" , tetapi saya juga menemukan bahwa "Anda tidak dapat menggunakan 'setkeycodes' pada keyboard USB" , itu kasus saya (saya tertarik pada kasus seseorang membuatnya bekerja pada ps2 karena saya pikir saya bisa menggunakan adaptor).
Ini tampak menjanjikan "Peta scancodes keycode" , tetapi setelah beberapa tes tidak ada yang berubah, berikut adalah mereka:
Saya menemukan kode kunci "36" ("j" kunci) di vt1 dengan showkey
saya menemukan scancode "7e" (keypad ".") Di vt1 denganshowkey --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 .: tidak bekerja dengan: KEYBOARD_KEY_7e=j
Beberapa cara alternatif lain (oleh @ vinc17) untuk menemukan kunci:
evtest /dev/input/by-id/...
atau
input-kbd 3
(masukkan indeks id ditemukan di ls -l /dev/input/by-id/*
dari ex. Event3)
PS .: * Jika Anda tertarik untuk menguji diri Anda, utas terkait untuk aplikasi adalah ini: http://forums.thedarkmod.com/topic/14266-keyboard-issue-in-new-version-108/ Masalah yang saya miliki adalah sama: beberapa kunci (KP_Decimal, DownArrow, UpArrow, RightArrow) diabaikan dan dianggap semua dengan nilai yang sama di sana "0x00"
showkey --scancodes
tidak memberikan scancodes yang udev harapkan (nilainya berbeda); yang input-kbd
utilitas memberikan scancodes yang benar.
evtest
utilitas juga harus memberikan scancodes benar: setelah mengetik kunci, Anda harus mendapatkan 2 baris dan yang pertama harus berakhir dengan sesuatu dari bentuk code 4 (MSC_SCAN), value xxx
, di mana xxx
adalah scancode tersebut. Tetapi driver untuk keyboard saya bermasalah, dan saya tidak mendapatkan MSC_SCAN
baris ini untuk beberapa tombol yang ingin saya remap. Itu sebabnya saya menggunakan input-kbd
, yang mencantumkan semua scancode untuk perangkat yang dipilih.
/etc/udev/hwdb.bin
, bukan/lib/udev/hwdb.bin
. Tetapi meskipun file ini diperbarui dengan benar, ini juga tidak bekerja untuk saya, bahkan setelah reboot. Mungkin ada yang hilang dalam dokumentasi. Tentang ini: bugs.freedesktop.org/show_bug.cgi?id=82311