linux – 用于将点映射到ctrl-enter的udev规则

我需要用扫描码070037将键重新映射到左ctrl输入.到目前为止,我成功地通过创建具有以下内容的文件90-custom-presenter.hwdb来重新映射它.

# Logitech Presenter
keyboard:usb:b0003v046DpC515*
 KEYBOARD_KEY_070037=enter

我认为这是正确的,因为lsusb给了我

Bus 003 Device 018: ID 046d:c515 Logitech, Inc. Cordless 2.4 GHz Presenter Presentation remote control

和evtest确认我正在寻找的扫描码是70037

Event: time 1521756520.173637, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70037
Event: time 1521756520.173637, type 1 (EV_KEY), code 52 (KEY_DOT), value 1
Event: time 1521756520.173637, -------------- SYN_REPORT ------------
Event: time 1521756520.277633, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70037
Event: time 1521756520.277633, type 1 (EV_KEY), code 52 (KEY_DOT), value 0
Event: time 1521756520.277633, -------------- SYN_REPORT ------------

以root身份运行udevadm hwdb –update后,我原本以为这会映射前“dot”键进入但不会.这提出了两个问题:

>为什么这不按预期映射?
>一旦按预期工作,我怎么能将它映射到ctrl-enter?

我正在运行Ubuntu 14.04 LTS.

解决方法:

您没有识别您的Linux发行版,它可能会也可能不会使用与我的Debian 9相同版本的udev,因此这可能适用于您的系统,也可能不适用.

在我的系统上,/ lib / udev / hwdb.d / 60-keyboard.hwdb有一些信息性的评论:

# Note: The format of the "evdev:" prefix match key is a
# contract between the rules file and the hardware data, it might
# change in later revisions to support more or better matches, it
# is not necessarily expected to be a stable ABI.
#
# Supported hardware matches are:
#  - Generic input devices match:
#      evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV
...

没有提到键盘:列表中的usb硬件匹配.

因此,除非您有特定于您的Linux发行版和文档的文档以告诉您,否则您的实际系统默认.hwdb文件使用keyboard:usb语法,请尝试更换键盘:usb:b0003v046DpC515 * with:

evdev:input:b0003v046DpC515*

将演示者的“点”键设置为Control Enter的问题是.hwdb文件只能将扫描码映射到(单个)键码.它无法插入一系列密钥代码.要在此阶段将键映射到Control Enter,除了修改实际的键事件之外,还必须插入一个额外的事件,并对相应的键释放事件执行相同的操作.

您的桌面环境可能包含更多功能的键盘映射/快捷方式功能,可以更好地满足您的需求.您可能必须首先使用hwdb规则将演示者的密钥映射到一些原本未使用的密钥代码,然后使用桌面环境的功能将该密钥代码映射到Control Enter.

上一篇:java-键盘隐藏时隐藏光标


下一篇:linux – 连接新的外部键盘时启用numlock?