如何让微软自然人体工学键盘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
,只需记住按照上面解释的文件的确切格式。 - 键盘类型中添加了两个字符:
v
和p
代表供应商和产品。 它们也很重要。 - 键盘类型在配置文件中以大写forms显示。 我们的键盘类型是045e:00db但是在配置中我们插入了v045Ep00DB *
- 密钥的扫描码紧跟在
KEYBOARD_KEY_
之后 - 密钥名称在配置文件中以小写字母显示
- 按照本教程,您可以自定义键盘上的每个键。
在我的机器上,通过/ dev / input / event5发送了额外的键(HomePage,Search,Calc等)和缩放输入,而普通键是通过/ dev / input / event4发送的。 缩放键值与queueoverflow一致。