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


29

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

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

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

我注意到该版本不包含keymap工具。但是我注意到该工具包含了更大的udev版本(例如,可用于Debian)。

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


您是否要使用udev解决此问题,或者选择其他解决方案?我有点不愿意在ubuntu上安装未打包的udev debian软件包。
Jobin 2014年

欢迎使用其他替代方法=)
德米特里·别拉文采夫

请问帮助?
Jobin 2014年

keymap无论如何,不再发货的实用程序会做什么?
马特2014年

我已经更新了您的教程(您已链接到该教程)以包含以下答案。谢谢:-)
特伦斯·伊甸园2014年

Answers:


27

如果您看一眼,/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键盘,则可能需要重新启动。在某些情况下,您还需要重新启动。


谢谢!hwdb.ddir是空的,rules.d只包含3个文件(70-persistent-cd.rules70-persistent-net.rulesREADME)。那么,您是说我必须创建一个新文件吗?还是我必须要编辑一些内容?
Dmitry Belaventsev

是的,您应该创建一个新文件。现有的键盘规则已经存在,/lib/udev/hwdb.d/60-keyboard.hwdb但是在udev更新后,对它的编辑将丢失。
奥利

2
不幸的是,不会使目标按钮工作
梅德Belaventsev

1
@matt,您可以在此处
user.dz 2015年

1
代替拔出插头,您可以使用udevadm trigger /dev/input/by-id/usb-Microsoft-*它触发更新
Alexandr Priymak

37

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-更新
sudo udevadm控制-重新加载

并重新插入键盘即可。

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


9
这是Ubuntu 16.04的正确答案
Greg Dan

2
谢谢。的确,这些keyboard:定义似乎在Ubuntu 1604上不再起作用,需要使用evdev:/lib/udev/hwdb.d/60-keyboard.hwdb对于4000模型,甚至还有一个默认映射,将它们映射到zoomin/ zoomout-但是X完全忽略了事件(xev不显示任何内容),因此您仍然需要这样的配置更改。
wump

2
b0003看起来像它的总线特定的(所以它可能只在某些USB端口工作)。如果类似的方法 b*v045Ep071D*可行,那可能会更好。
奥利(Oli)

3
谢谢,它可以在Ubuntu 16.04(evdev:input:XXX而不是keyboard:usb:YYY)中工作。您也可以使用其他映射代替pageup/ pagedown。例如,我正在使用scrollupscrolldown进行真正的滚动。
MartinGrůber17年

1
在Kubuntu 17.10中也可以使用
OOPMan

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

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

sudo udevadm hwdb --update

然后重新插入键盘。


谢谢。奇怪的是,我现在也需要执行此更改,并且毕竟需要重新启动(而不仅仅是重新插入)。
马特2015年

在Ubuntu 15.04上为我工作。谢谢!
Pierre

这在Debian Jessie 8.5上对我有用。
尼古拉斯

我想购买一个经济型键盘,我很好奇,它是否可以与16.04 LTS一起使用?或那里没有这样的问题。
阿帕德·霍瓦斯

4

添加到Oli的答案中,如果您希望像鼠标一样滚动行,则可以在自定义规则中将pageup / pagedown修改为up / down。喜欢:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=up
 KEYBOARD_KEY_c022e=down

顺便说一句:在18.04中默认为“向上/向下”。
LinuxLuigi '18

1

不错的解决方案在这里,我只能添加,您可以将键映射到未使用的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可以在此处找到使用而不是使用的专有名称。

重新启动;-)之后,您可以使用以下命令测试zoominzoomout密钥是否成功映射,以及找出密钥的正确名称(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>
...
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.