如何使Microsoft Natural Ergonomic Keyboard 4000的缩放滑块(和其他按钮)正常工作?


21

我在Ubuntu 10.10上使用了Microsoft Natural Ergonomic Keyboard 4000。多媒体键(“音量”,“播放/暂停”),“邮件”和“计算器”按钮也起作用。

现在,我想使用缩放滑块,如果可能的话,我想使用页面滚动。有什么方法可以启用它吗?


2
参见askubuntu.com/questions/471802/…。以前的答案可能已过时。
马特2014年

Answers:


18

创建/etc/udev/rules.d/98-ms-ergo.rules具有以下内容的文件:

ACTION=="remove", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
SUBSYSTEMS!="usb", GOTO="keyboard_end"

SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"

ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d pageup 0xc022e pagedown"

GOTO="keyboard_end"

它将缩放键映射到上一页/下一页,而无需更改中的已安装文件/lib/udev

添加后,您只需拔出并重新插入键盘即可开始工作。


这为我工作完美地使用的Fedora 19
鲁本斯Mariuzzo

对于Microsoft Ergonomic 7000,模型似乎是071d(由lsusb获得),而不是00db-因此,如果有人尝试使用7000d,则应该在上述文件中用00d替换00db。无论如何,在我的情况下(Ubuntu 14.04),这是行不通的,可能与事实有关,evtest显示缩放滑块不会触发任何事件,这与Ergonomic 7000键盘上的大多数其他键不同。不确定这一点,因为“ Web /主页”按钮在evtest这两个按钮中均未显示任何输出-尽管Ubuntu 确实选择了它。
马特2014年

1
我也无法使4000在14.04上工作。没有看到中的事件xev
2014年

在14.10上尝试过此方法,但无济于事。
Rubens Mariuzzo 2015年

@可可豆xev对我也不起作用。什么是evtest /dev/input/event3。如果event3对此键没有任何反应,请测试其他事件(event[0..9])。
尼古拉斯

9

在Xubuntu 13.10上(也许在Ubuntu 13.10上也是如此),可以执行以下操作:

/lib/udev/hwdb.d/60-keyboard.hwdb以下位置编辑键映射:

###########################################################
# Microsoft
###########################################################

# Microsoft Natural Ergonomic Keyboard 4000
keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

sudo udevadm hwdb --update

重启。


1
为我工作了14.04
Amir Uval

我的60-keyboard.hwdb具有MNEK4K的现有条目,键盘为:usb:b0003v045Ep00DB *。更改操作无效。使用这些操作添加新条目确实可行。
Alrekr 2015年

在16.04上像咒符一样工作。浏览网页时,我使用了“向上”和“向下”(而不是“ pageup”和“ pagedown”)来获得更平滑的滚动。非常感谢!
Pierre

您可以映射到katakanakatakanahiragana(或hal.freedesktop.org/quirk/quirk-keymap-list.txt中的任何其他未使用的键代码),而不是现有键的别名。这样,您可以识别并结合使用按键和修饰符来切换音量,语言,大小等(配置窗口管理器以使用两个新的超级按键)。
dmitry_romanov

4

为了配置Microsoft人体工学键盘4000,我们必须创建一个配置文件,其中包含键盘声明和映射键的记录。

为此,我们需要确定三种信息:

  • 键盘类型
  • 该键scancode是键盘上的实际键
  • 密钥name分配所期望的功能到所选择的键

首先找到键盘类型:

在终端中运行以下命令:

lsusb 

输出确定键盘类型:

...
Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
...    

它出现在之后ID。在这种情况下045e:00db

其次找到扫描码和密钥名称。

为了确定它们,我们使用evtest在终端上注销特定设备的事件信息的程序:

evtest

如果您没有该程序,请通过运行以下命令进行安装:

sudo apt-get install evtest

通过运行evtest程序,我们得到以下输出:

No device specified, trying to scan all of /dev/input/event* Available devices: 
/dev/input/event0:    Power Button     
/dev/input/event1:    Power Button     
/dev/input/event2:    PixArt USB Optical Mouse   
/dev/input/event3:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event4:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event5:    HDA Intel Front Headphone     
/dev/input/event6:    HDA Intel Line Out     
/dev/input/event7:    HDA Intel Line   
/dev/input/event8:    HDA Intel Rear Mic     
/dev/input/event9:    HDA Intel Front Mic     
/dev/input/event10:   HDA ATI HDMI HDMI/DP,pcm=3
Select the device event number [0-10]:

输出几乎是不言自明的,为键盘插入适当的数字,这里是数字,3然后按Enter:

这样做将在终端上输出大量信息,并以以下几行结尾:

... 

Testing ... (interrupt to exit)
Event: time 1472203902.240594, type 17 (EV_LED), code 0 (LED_NUML), value 0
Event: time 1472203902.240594, -------------- SYN_REPORT ------------
Event: time 1472203902.281456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70058
Event: time 1472203902.281456, type 1 (EV_KEY), code 96 (KEY_KPENTER), value 0
Event: time 1472203902.281456, -------------- SYN_REPORT ------------

现在,每按一次键盘上的键,它就会转出键信息。例如,右移旁边的斜杠键显示:

Event: time 1472205062.294078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70038
Event: time 1472205062.294078, type 1 (EV_KEY), code 12 (KEY_SLASH), value 0
Event: time 1472205062.294078, -------------- SYN_REPORT ------------

日志的第一行包含有关键盘上实际按键的信息,例如scancode该值后面的信息。在这个例子中是70038

第二行包含分配的功能信息,例如密钥名称。在这种情况下,它是SLASH。检查其他键以找到其适当的名称。

简而言之:

  • 我们的键盘类型是:045e:00db
  • Slash键的扫描代码为:70038
  • 分配密钥的名称是SLASH

收集必要的信息后,我们创建配置文件:

sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb

点击i以激活插入模式,然后键入以下内容:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_70038=minus      

保存,escape然后按,然后键入:wq,然后按Enter。

然后运行以下两个命令以使配置生效:

sudo udevadm hwdb --update
sudo udevadm control --reload

最后拔下键盘,然后重新插入。

有关配置文件的一些说明:

  • 文件的格式应完全与所示相同,映射记录之前的空间至关重要。
  • 除了sudoedit记住可以遵循上述文件的确切格式之外,您不能使用任何其他文本编辑器。
  • 键盘类型中添加了两个字符:vp代表供应商和产品。它们也很重要。
  • 键盘类型在配置文件中大写。我们的键盘类型为045e:00db,但在配置中,我们插入了v045Ep00DB *
  • 密钥的扫描码紧随其后 KEYBOARD_KEY_
  • 密钥名称在配置文件中以小写形式显示
  • 您可以按照本教程自定义键盘上的几乎每个键。

3

问题了evdev驱动程序忽略键码> 255
感谢Marco Chiappero的解决方案:

1)您必须定义所需的所有重新映射(以 
“扫描码键码”列表),并将它们放在“ / lib / udev / keymaps /”下的文件中 
(例如,我在那里创建了logitech-lx710-cordless)。你可以找到
使用evtest(“ sudo evtest / dev / input / eventX”,其中X是您的 
键盘设备。请注意,有时这些额外的密钥会通过
其他设备或鼠标界面:例如 event3-> kbd,event4->
鼠标和其他键)。这里是一些示例输出:

事件:时间1294153475.909379,类型4(其他),代码4(ScanCode),值c1028
“ c1028”是您要放入键盘映射文件中的扫描代码值,然后 
如前所述,从input.h中选取一个数字并将其转换为 
十六进制。然后将重映射对写入文件中,也许带有描述性
评论,像这样:

0xC1028 0x9a#旋转按钮

对每个大于255的键进行迭代。

2)您必须告诉udev每次遇到此重新映射文​​件时都要应用 
您的键盘,因此编辑“ /lib/udev/rules.d/95-keymap.rules”文件,然后添加 
与您的硬件匹配的udev规则。请不要要求我为
您。 
注意:您可以通过键入以下内容立即应用键盘映射文件 
“ sudo / lib / udev / keymap / dev / input / eventX / lib / udev / keymaps / $ YOUR_FILE”和 
再次使用evtest进行验证。

现在,您可以使用Gnome快捷方式编辑器来查看密钥 
在X中可用并创建新的快捷方式。但是可能会发生
keysym被分配给该键代码(因此您将看到0xXY而不是XF86Foo)。 
您可以通过xmodmap -pke查看当前映射,将输出保存到 
文件并根据需要进行编辑(完整的键盘代码列表位于
“ / usr / lib / X11 / XKeysymDB”)。
将keyyms添加到重新映射的那些键后,即可保存此文件
作为〜/ .Xmodmap(或如果希望应用于每个用户,则作为/ etc / X11 / Xmodmap)。

我发现我想要的按钮是c022d和c022e,但是找不到input.h。
马丁·乌丁2011年

据我了解(但由于我没有此硬件而无法测试),您实际上并不需要input.h,您只需要编辑以下文件:/lib/udev/rules.d/95-keymap.rules。(可能在启动板这里,您可以找到具有相同硬件的人员,因此更有能力帮助 bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/313514)。您是否编辑了我上面提到的文件?
desgua 2011年

1
对于大多数人来说,这过于技术性和混乱的答案。一些严重的差距:没有帮助确定适当的/ dev / input / eventX,将不清楚的步骤与上下文信息混合在一起,并要求不要要求创建键盘映射的说明。
Alain O'Dea

1
甚至没有默认安装evtest,这使得情况更糟。
Alain O'Dea

通过反复试验,我发现我的键盘是/ dev / input / event3,而evtest没有从缩放滑块中拾取任何事件。
Alain O'Dea

0

在我的机器上,额外的键(主页,搜索,计算等)和缩放输入通过/ dev / input / event5发送,而普通键通过/ dev / input / event4发送。缩放键值与queueoverflow一致。

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.