如何更改单个设备的键盘映射(Logitech演示者)?

Modified on: Sun, 10 Jun 2018 00:09:53 +0800

我的Logitech R400演示者发送以下密钥代码:

keycode 112 (keysym 0xff55,  Prior) [page up]
keycode 117 (keysym 0xff56,   Next) [page down]
keycode  60 (keysym   0x2e, period)
keycode  71 (keysym 0xffc2,     F5)
keycode   9 (keysym 0xff1b, Escape)

基本上,我想使用这个演示者远程控制Banshee,所以我想将Prior重新映射到BNext to N,等等。

如何仅更改此设备的键盘映射(因为我当然不想全局重新映射这些键码)?

作者:,htorque

最佳答案

我从来没有这样做,但我认为你需要在/lib/udev/keymaps/中创建一个keymap文件,并为你的设备添加一个规则到/lib/udev/rules.d/95-keymap.rules


详细说明:

  • udev键映射将扫描代码映射到键代码,因此您需要找到两者来创建键映射文件。要查找扫描代码,请执行以下操作并按设备上的按钮:

    sudo /lib/udev/keymap -i input/event5
    

    您可能需要为 event * 尝试不同的数字。输出应如下所示:

    scan code: 0x70037   key code: dot
    scan code: 0x70029   key code: esc
    scan code: 0x7003E   key code: f5
    scan code: 0x7004B   key code: pageup
    scan code: 0x7004E   key code: pagedown
    

    可在此处找到关键代码列表。

    现在创建keymap文件(我将其存储为 / lib / udev / keymaps / logitech-r400 ):

    0x70037 brightnessdown
    0x70029 brightnessup
    0x7003E brightnessdown
    0x7004B brightnessup
    0x7004E brightnessdown
    

    没有做任何有用的事情 - 只是一个测试,以便轻松查看它是否有效。

  • 要临时测试新的键盘映射,请运行:

    sudo /lib/udev/keymap input/event5 /lib/udev/keymaps/logitech-r400
    

    应该产生如下输出:

    Remapped scancode 0x70037 to 0xe0 (prior: 0x34)
    Remapped scancode 0x70029 to 0xe1 (prior: 0x01)
    Remapped scancode 0x7003e to 0xe0 (prior: 0x3f)
    Remapped scancode 0x7004b to 0xe1 (prior: 0x68)
    Remapped scancode 0x7004e to 0xe0 (prior: 0x6d)
    

    按钮现在应该改变亮度。

  • 如果要将更改永久化,则需要将udev规则添加到应用keymap文件的/lib/udev/rules.d/95-keymap.rules设备。


    1. 打开文件:gksudo gedit /lib/udev/rules.d/95-keymap.rules
    2. 在文件的底部,但在LABEL="keyboard_end"行之前,添加:

      ENV{ID_VENDOR}=="Logitech*", ATTRS{idProduct}=="c52d", RUN+="keymap $name logitech-r400"
      
    3. 保存,关闭,重启后按钮应改变亮度。


相关问答

添加新评论