如何在没有’/ usr / lib / keymap’的情况下重新映射密钥代码(在Saucy,在Trusty中已经消失了……)?

X11没有看到255以上的密钥代码,那么如何将这几个密钥重新映射到255以下的差距?

/usr/lib/keymap存在于raring中,其工作方式如下:

1.钥匙识别:

 sudo /lib/udev/keymap input/event3 > scan code: 0xC1021 key code: zoomreset => 100% > scan code: 0xC101F key code: zoomin => zoom - > scan code: 0xC1020 key code: zoomout => zoom + > scan code: 0xC0192 key code: calc => calculator 

2.重新映射键:

 sudo /lib/udev/keymap input/event3 0xC1021 phone sudo /lib/udev/keymap input/event3 0xC101F sport sudo /lib/udev/keymap input/event3 0xC1020 shop sudo /lib/udev/keymap input/event3 0xC0192 www 

这很棒,简单快捷……

xmodmap适用于<255的密钥,就像我的计算器密钥(代码148)

 sudo evtest /dev/input/event3 Input driver version is 1.0.1 Input device ID: bus 0x3 vendor 0x46d product 0xc517 version 0x110 Input device name: "Logitech USB Receiver" ... Testing ... (interrupt to exit) > Event: time 1381940761.592647, type 1 (EV_KEY), code 140 (KEY_CALC), value 1 => calculator > Event: time 1381940790.224658, type 1 (EV_KEY), code 420 (KEY_ZOOMRESET), value 1 => 100% > Event: time 1381940810.928667, type 1 (EV_KEY), code 419 (KEY_ZOOMOUT), value 1 => Zoom - > Event: time 1381940836.216678, type 1 (EV_KEY), code 418 (KEY_ZOOMIN), value 1 => Zoom + 

**编辑:我在这个ubuntuforumpost中找到了解决方案。

关键映射仍然使用可信赖的udev (而且我觉得很好),但机制发生了变化。

要重新映射密钥,只需要一个ioctl(EVIOCSKEYCODE),但不再存在执行该操作的简单程序。 – 它现在是udev的内部。 这样做:

  1. 告诉udev映射
    1. 创建一个文件/etc/udev/hwdb.d/keyboard.hwdb
    2. 只写那里的键盘标识符和你想要改变的映射(格式就像在/lib/udev/hwdb.d/60-keyboard.hwdb ,我也发现了那些令人困惑的键盘标识符); 例如:
      键盘:名称:ThinkPad Extra Buttons:dmi:bvn *:bvr *:bd *:svnLENOVO *:pn *
        KEYBOARD_KEY_00 = MSDOS
        KEYBOARD_KEY_09 = PROG3
        KEYBOARD_KEY_0a =仪表盘
      
    3. udevadm hwdb --update
    4. 检查你是否通过udevadm hwdb --test='keyboard:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*'看到你的更新udevadm hwdb --test='keyboard:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*' (更改为键盘ID)
    5. udevadm control --reload即使man-page另有说明,也需要udevadm control --reload – 我试过了。
  2. 触发执行(或简单地重启)
    1. 使用正在运行的udev monitor --property您可以看到下一步的效果, – --property选项将显示重映射
    2. 对于我的键盘,我执行udevadm trigger --verbose --sysname-match=event6 --action=add “添加操作”很重要,因为在当前键盘规则中会忽略“更改”事件。
    3. 在你的情况下,一个--sysname-match=event3会这样做,但是你可以通过这三个来解决它:
      • udevadm trigger --dry-run --verbose显示所有设备
      • 使用udevadm info /sys/devices/platform/thinkpad_acpi/input/input12/event6或任何设备激发您对匹配器构建的幻想
      • udevadm trigger --help会给你提示如何减少下一次触发干转