在 14.04 (Trusty) 中,使 Microsoft Natural Ergonomic Keyboard 4000 和 7000 的缩放滑块上下滚动

在 14.04 (Trusty) 中,使 Microsoft Natural Ergonomic Keyboard 4000 和 7000 的缩放滑块上下滚动

我尝试使用本教程使滚动开关在我的 Microsoft Natural Ergonomic Keyboard 4000 上工作。但我遇到以下错误:

sudo: /lib/udev/keymap: command not found

我有 udev 版本204-5ubuntu20.2(在 Trusty 中找到的版本)

我注意到这个版本不包含keymap工具。但我注意到更高的udev版本(例如,适用于 Debian) 包含此工具。

有人可以为我解释一下这个差异吗?=) 在这种情况下我应该怎么做 - 从 Debian repo 安装包?

答案1

Ubuntu 15.10:我之前的答案没有成功。

我已经成功使用了与以前类似的方法 - 说明已在中提到/lib/udev/hwdb.d/60-keyboard.hwdb

我已经使用sudo nano /etc/udev/hwdb.d/70-keyboard.hwdb 包含以下内容的新 hwdb 文件:

# Microsoft Natural Ergonomic Keyboard 4000 - 重新映射放大/缩小以向上/向下翻页
evdev:输入:b0003v045Ep00DB*
 KEYBOARD_KEY_c022d=向上翻页
 KEYBOARD_KEY_c022e=向下翻页

之后我跑了

sudo udevadm hwdb——更新
sudo udevadm 控制--重新加载

重新插入键盘后它就可以正常工作了。

适用于 7000 型号 evdev:input:b003v045Ep071D*

答案2

如果你仔细看,/lib/udev/rules.d/60-keyboard.rules你会发现一切都乱七八糟了。这只是 udev 合并到 systemd 的一部分。

所有硬件规则都编译成二进制硬件数据库。这些规则遵循一种非常奇怪的格式。udev 附带的键盘的现有规则位于 中/lib/udev/hwdb.d/60-keyboard.hwdb。看看这个,但是不要编辑它(更新可能会覆盖它)。

要添加自定义规则,我们将通过/etc/udev/hwdb.d/运行创建一个新文件sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb。您需要做的就是粘贴以下内容 -

如果您使用的是 4000 型号:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

如果您使用的是 7000 型号:

keyboard:usb:v045Ep071D*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

这是根据您发布的教程改编的,因此您可能需要根据您的键盘进行调整。查看lsusb并确保vendor:product上面的代码(如v####p####)正确。如果它们不匹配,它将不起作用。

一旦完成编辑,重新编译hwdbudev 使用的:

sudo udevadm hwdb --update

然后你可能需要重新插入。如果是 PS/2 键盘,则可能需要重新启动。在某些情况下,您还需要重新启动。

答案3

Oli 发布的原始解决方案对我不起作用,但在我将键数字"0c022d"和更改"0c022e""c022d"和之后,它起作用了"c022e"。我使用的是 4000 型号,因此我无法验证 7000 型号是否需要相同的更改。

重复 Oli 的回答,我所做的如下:通过运行创建一个新文件sudo nano /etc/udev/hwdb.d/61-keyboard-local.hwdb。将以下几行粘贴到文件中(适用于 4000 型号):

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

编辑文件后,重新编译udev使用的hwdb:

sudo udevadm hwdb --update

然后重新插入键盘。

答案4

好的解决方案是这里,我只能补充一点,你可以将键映射到未使用的 X 键,如下所示:

$ cat /lib/udev/rules.d/95-keymap.rules
...
ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d katakana 0xc022e katakanahiragana
...

katakana可以找到用来代替的适当名称这里

重启后 ;-) 您可以测试按键是否zoomin映射zoomout成功,还可以使用以下命令找出按键的正确名称(rc.xml例如,用于 OpenBox WM)xev

$ xev
...
KeyRelease event, serial 46, synthetic NO, window 0x3c00001,
    root 0x291, subw 0x0, time 1492891, (-261,-61), root:(573,380),
    state 0x0, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
...

现在,您可以将新键连接到完全任意的操作。在我的 OpenBox 窗口管理器中,我使用了类似这样的操作:

$ cat <whatever>/rc.xml
...
<keybind key="Katakana">
  <action name="Execute">
    <command>volume_up.sh</command>
  </action>
</keybind>
<keybind key="Hiragana_Katakana">
  <action name="Execute">
    <command>volume_down.sh</command>
  </action>
</keybind>
...

相关内容