Tôi đang cố gắng tìm cách để ánh xạ lại các phím bàn phím một cách mạnh mẽ.
Tôi đã thử sử dụng xmodmap và setxkbmap, nhưng chúng không hoạt động cho một ứng dụng cụ thể. Các lệnh như vậy hoạt động cho các cửa sổ / ứng dụng thông thường khác trên X tho.
Tôi nghĩ rằng ứng dụng có thể đang đọc dữ liệu thô của bàn phím và bỏ qua đầu vào X?
Vậy, làm thế nào để ánh xạ lại các khóa mà không sử dụng xmodmap và setxkbmap? nếu có thể được thực hiện bằng cách sử dụng một số phần mềm.
Tôi cũng đã thử xkeycaps, xkbcomp, nhưng không thử loadkey, vì nó đang chạy trên X.
Tôi thấy ở đây tôi có thể thử setkeycodes
, "bởi vì sau khi gán mã khóa nhân, nút sẽ hoạt động trong xorg" , nhưng tôi cũng thấy rằng "bạn không thể sử dụng 'setkeycodes' trên bàn phím USB" , đó là trường hợp của tôi (tôi quan tâm đến trường hợp này ai đó làm cho nó hoạt động trên ps2 vì tôi nghĩ rằng tôi có thể sử dụng một bộ chuyển đổi).
Điều này có vẻ đầy hứa hẹn "Map scancodes to keycodes" , nhưng sau một vài thử nghiệm không có gì thay đổi, đây là:
Tôi tìm thấy mã khóa "36" (phím "j") tại vt1 với showkey
tôi tìm thấy scancode "7e" (bàn phím ".") Tại vt1 vớishowkey --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..
Quan sát: không hoạt động với: KEYBOARD_KEY_7e=j
Một số cách khác để thay thế (bởi @ vinc17) để tìm các khóa:
evtest /dev/input/by-id/...
hoặc
input-kbd 3
(đặt chỉ mục id được tìm thấy ls -l /dev/input/by-id/*
từ ví dụ event3)
PS.: * Nếu bạn quan tâm đến việc tự kiểm tra, chủ đề liên quan cho ứng dụng này là: http://forums.thedarkmod.com/topic/14266-keyboard-su-in-new-version-108/ Các vấn đề tôi có giống nhau: một số khóa (KP_Decimal, DownArrow, UpArrow, RightArrow) bị bỏ qua và được xem xét tất cả có cùng giá trị ở đó "0x00"
showkey --scancodes
sẽ không cung cấp cho các scancodes udev mong đợi (các giá trị là khác nhau); các input-kbd
tiện ích cung cấp cho các scancodes chính xác.
evtest
tiện ích cũng nên cung cấp cho bạn scancodes đúng: sau khi nhập một phím, bạn sẽ nhận được 2 dòng và là người đầu tiên nên kết thúc với một cái gì đó của hình thức code 4 (MSC_SCAN), value xxx
, nơi xxx
là scancode. Nhưng trình điều khiển cho bàn phím của tôi bị lỗi và tôi không nhận được MSC_SCAN
dòng này cho một số phím tôi muốn sắp xếp lại. Đó là lý do tại sao tôi sử dụng input-kbd
, trong đó liệt kê tất cả các scancodes cho thiết bị được chọn.
/etc/udev/hwdb.bin
, không/lib/udev/hwdb.bin
. Nhưng mặc dù tệp này được cập nhật chính xác, nhưng nó cũng không hoạt động với tôi, ngay cả sau khi khởi động lại. Có lẽ thiếu một cái gì đó trong tài liệu. Về điều này: bug.freedesktop.org/show_orms.cgi?id=82311