如何让微软自然人体工学键盘4000的缩放滑块(和其他按钮)工作?

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

现在我想使用缩放滑块,如果可能的话我想使用页面滚动。 有没有办法实现这一点?

使用以下内容创建文件/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已安装的文件。

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

在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

重启。

问题是evdev驱动程序忽略了> 255的密钥代码 。
解决方案,感谢Marco Chiappero :

  1)你必须定义你需要的所有重映射(以。的forms) 
 “scancode keycode”列表)并将它们放在“/ 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中获取一个数字并将其转换为 
hex。 然后在您的文件中编写重映射对,可能带有描述性 
评论,像这样:

 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”和 
再次用evtestvalidation它。

现在,您可以使用Gnome快捷方式编辑器查看现在的密钥 
在X中可用并创建新的快捷方式。 然而,可能会发生这种情况 
 keysym被分配给该密钥代码(因此您将看到0xXY而不是XF86Foo)。 
您可以通过xmodmap -pke查看当前映射,将输出保存到 
如果需要,可以编辑并编辑它(可以使用完整的密钥代码列表
 “/ usr / lib中/ X11 / XKeysymDB”)。
将密钥添加到重新映射的密钥后,可以保存此文件
 as~ / .Xmodmap(如果你想申请每个用户,可以是/ etc / X11 / Xmodmap)。 

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

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

  • 键盘类型
  • scancode是键盘上的实际键
  • 用于为所选键指定所需function的键名

首先找到键盘类型:

在终端中运行以下命令:

 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

第二行包含指定的function信息,如密钥的名称。 在这种情况下,它是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代表供应商和产品。 它们也很重要。
  • 键盘类型在配置文件中以大写forms显示。 我们的键盘类型是045e:00db但是在配置中我们插入了v045Ep00DB *
  • 密钥的扫描码紧跟在KEYBOARD_KEY_之后
  • 密钥名称在配置文件中以小写字母显示
  • 按照本教程,您可以自定义键盘上的每个键。

在我的机器上,通过/ dev / input / event5发送了额外的键(HomePage,Search,Calc等)和缩放输入,而普通键是通过/ dev / input / event4发送的。 缩放键值与queueoverflow一致。