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

Dmi*_*sev 29 keyboard udev 14.04

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

sudo: /lib/udev/keymap: command not found
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 38

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=向下翻页

在那之后我跑了

须藤 udevadm hwdb --update
须藤 udevadm 控制 --reload

并重新插入键盘,它起作用了。

对于 7000 型使用 evdev:input:b003v045Ep071D*

  • 这是 Ubuntu 16.04 的正确答案 (9认同)
  • 谢谢,它在 Ubuntu 16.04 中工作(`evdev:input:XXX` 而不是 `keyboard:usb:YYY`)。您还可以使用不同的映射来代替 `pageup`/`pagedown`。例如,我使用 `scrollup` 和 `scrolldown` 来进行真正的滚动。 (3认同)
  • 谢谢。确实看起来 `keyboard:` 定义不再适用于 Ubuntu 1604,它需要是 `evdev:`。甚至在 `/lib/udev/hwdb.d/60-keyboard.hwdb` 中有一个默认映射,用于 4000 模型将它们映射到 `zoomin`/`zoomout` - 但是 X 完全忽略了这些事件(xev 什么都不显示)所以你仍然需要像这样的配置更改。 (2认同)
  • `b0003` 看起来像是特定于总线的(因此它可能仅适用于某些 USB 端口)。如果像 `b*v045Ep071D*` 这样的东西有效,那可能会更好。 (2认同)

Oli*_*Oli 28

如果你看看,/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
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 7000 型号:

keyboard:usb:v045Ep071D*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown
Run Code Online (Sandbox Code Playgroud)

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

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

sudo udevadm hwdb --update
Run Code Online (Sandbox Code Playgroud)

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

  • 不幸的是,不会使目标按钮起作用 (2认同)
  • 可以使用 `udevadm trigger /dev/input/by-id/usb-Microsoft-*` 来触发更新,而不是插入|拔出 (2认同)

小智 7

发表奥利原来的解决方案并没有为我工作,但它的工作原理之后,我改变了关键数字"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
Run Code Online (Sandbox Code Playgroud)

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

sudo udevadm hwdb --update
Run Code Online (Sandbox Code Playgroud)

然后重新插入键盘。