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

Mar*_*ing 21 microsoft-keyboard

我在 Ubuntu 10.10 上使用 Microsoft Natural Ergonomic Keyboard 4000。多媒体键(音量、播放/暂停)、邮件和计算器按钮也有效。

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

Kee*_*ook 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"
Run Code Online (Sandbox Code Playgroud)

这会将缩放键映射到向上翻页/向下翻页,而无需更改/lib/udev.

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


小智 10

在 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
Run Code Online (Sandbox Code Playgroud)

sudo udevadm hwdb --update

重启。


Kob*_*shi 5

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

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

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

首先找到键盘类型:

在终端中运行以下命令:

lsusb 
Run Code Online (Sandbox Code Playgroud)

输出决定键盘类型:

...
Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
...    
Run Code Online (Sandbox Code Playgroud)

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

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

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

evtest
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install evtest
Run Code Online (Sandbox Code Playgroud)

通过运行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]:
Run Code Online (Sandbox Code Playgroud)

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

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

... 

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 ------------
Run Code Online (Sandbox Code Playgroud)

现在,随着键盘上的每一次按键,它都会转储出关键信息。例如,Right Shift 旁边的Slash 键显示:

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 ------------
Run Code Online (Sandbox Code Playgroud)

日志的第一行包含有关键盘上实际键的信息,例如scancode值后面的键。在这种情况下,它是70038

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

所以简而言之:

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

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

sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb
Run Code Online (Sandbox Code Playgroud)

点击i以激活插入模式并键入以下内容:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_70038=minus      
Run Code Online (Sandbox Code Playgroud)

escape然后输入:wq并按回车键保存并退出。

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

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

最后拔下键盘并重新插入。

关于配置文件的一些注意事项:

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


des*_*gua 3

问题是evdev 驱动程序忽略 > 255 的键。 解决方案,感谢Marco Chiappero

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

事件:时间 1294153475.909379,类型 4 (Misc),代码 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”)。
将键符号添加到重新映射的键后,您可以保存此文件
作为 ~/.Xmodmap (或者作为 /etc/X11/Xmodmap 如果您希望应用于每个用户)。


小智 0

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