我试图找到一种方法来强制重新映射键盘键。
我尝试使用xmodmap和setxkbmap,但它们不适用于一个特定的应用程序。这样的命令适用于X tho上的其他普通窗口/应用程序。
我认为应用程序可能正在读取键盘原始数据,而忽略了X输入?
那么,如何在不使用xmodmap和setxkbmap的情况下重新映射键?如果有可能使用某些软件来完成。
我还尝试了xkeycaps,xkbcomp,但是没有尝试使用loadkeys,因为它在X上运行。
我在这里发现可以尝试setkeycodes
,“因为在分配内核密钥代码后,该按钮应该可以在xorg中使用”,但是我还发现“您不能在USB键盘上使用'setkeycodes'”,这就是我的情况(我对这种情况很感兴趣有人让它在ps2上工作,因为我认为我可以使用适配器)。
这似乎很有希望,“将扫描码映射为键码”,但是经过一些测试后没有任何变化,它们是:
我在vt1处找到了键码“ 36”(“ j”键),在下面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
scancode 在哪里。但是我的键盘驱动程序有问题,MSC_SCAN
对于某些我想重新映射的键,我没有得到这一行。这就是为什么我使用input-kbd
,它列出了所选设备的所有扫描代码。
/etc/udev/hwdb.bin
不是/lib/udev/hwdb.bin
。但是,尽管此文件已正确更新,但即使重新启动后,该文件也对我不起作用。也许是文档中缺少的东西。关于此内容:bugs.freedesktop.org/show_bug.cgi?id=82311