如何在没有’/ 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的内部。 这样做:
- 告诉udev映射
- 创建一个文件
/etc/udev/hwdb.d/keyboard.hwdb
- 只写那里的键盘标识符和你想要改变的映射(格式就像在
/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 =仪表盘
-
udevadm hwdb --update
- 检查你是否通过
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) -
udevadm control --reload
即使man-page另有说明,也需要udevadm control --reload
– 我试过了。
- 创建一个文件
- 触发执行(或简单地重启)
- 使用正在运行的
udev monitor --property
您可以看到下一步的效果, –--property
选项将显示重映射 - 对于我的键盘,我执行
udevadm trigger --verbose --sysname-match=event6 --action=add
“添加操作”很重要,因为在当前键盘规则中会忽略“更改”事件。 - 在你的情况下,一个
--sysname-match=event3
会这样做,但是你可以通过这三个来解决它:-
udevadm trigger --dry-run --verbose
显示所有设备 - 使用
udevadm info /sys/devices/platform/thinkpad_acpi/input/input12/event6
或任何设备激发您对匹配器构建的幻想 -
udevadm trigger --help
会给你提示如何减少下一次触发干转
-
- 使用正在运行的