如何在没有“/usr/lib/keymap”的情况下重新映射键码(在 Saucy 和 Trusty 中已经消失,...)?

Hiz*_*oka 8 keyboard 13.10

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

这很棒,简单快捷......

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 +
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*mer 6

键盘映射仍然是udev可靠的(我猜是俏皮的),但机制发生了变化。

要重新映射一个键,只ioctl(EVIOCSKEYCODE)需要一个键,但不再存在这样做的简单程序。它现在是 udev 内部的。所以这样做:

  1. 告诉 udev 映射
    1. 创建文件 /etc/udev/hwdb.d/keyboard.hwdb
    2. 只在其中写入键盘标识符和您想要更改的映射(格式类似于 中/lib/udev/hwdb.d/60-keyboard.hwdb,我还发现了那些令人困惑的键盘标识符);例如:
      键盘:名称:ThinkPad 额外按钮: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*'(更改为您的键盘 ID)看到您的更新
    5. udevadm control --reload 即使手册页另有说明,也需要 - 我试过了。
  2. 触发它们的执行(或简单地重新启动)
    1. 通过运行udevadm monitor --property你可以看到下一步的效果,该--property选项将显示重新映射
    2. 对于我的键盘,我做了一个udevadm trigger --verbose --sysname-match=event6 --action=add“添加操作”很重要,因为在当前的键盘规则中“更改”事件被忽略了。
    3. 在您的情况下, a--sysname-match=event3会这样做,但您可以通过以下三个来玩弄它:
      • udevadm trigger --dry-run --verbose 向您展示所有设备
      • 激发您对使用udevadm info /sys/devices/platform/thinkpad_acpi/input/input12/event6或任何设备构建匹配器的幻想
      • udevadm trigger --help 会给你提示如何减少下一次触发试运行