Microsoft 键盘的媒体键问题

Microsoft 键盘的媒体键问题

我有一个 Microsoft 一体式无线媒体键盘 (n9z-00001),它在我当前的发行版 Arch Linux 中表现得很奇怪。 ( Linux 3.19.3-3-ARCH #1 SMP PREEMPT Wed Apr 8 14:10:00 CEST 2015 x86_64 GNU/Linux)

$ lsusb | grep -i micro
Bus 001 Device 008: ID 045e:0800 Microsoft Corp. 

这就是 xinput 产生的结果。请注意,该设备有两个键盘,其中一个具有特殊的键盘(keys)

$  xinput list | grep -i micro
⎜   ↳ Microsoft Microsoft® Nano Transceiver v2.0    id=12   [slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® Nano Transceiver v2.0    id=11   [slave  pointer  (2)]
    ↳ Microsoft Microsoft® Nano Transceiver v2.0 (keys) id=10   [slave  keyboard (3)]
    ↳ Microsoft Microsoft® Nano Transceiver v2.0    id=9    [slave  keyboard (3)]

我可以直接用 听琴键evtest。虽然是同一个键盘

$ sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:  Lid Switch
/dev/input/event1:  Power Button
/dev/input/event2:  Video Bus
/dev/input/event3:  Video Bus
/dev/input/event4:  AT Translated Set 2 keyboard
/dev/input/event5:  Microsoft Microsoft® Nano Transceiver v2.0
/dev/input/event6:  Microsoft Microsoft® Nano Transceiver v2.0
/dev/input/event7:  Microsoft Microsoft® Nano Transceiver v2.0
/dev/input/event8:  ThinkPad Extra Buttons
/dev/input/event9:  HDA Digital PCBeep
/dev/input/event10: HDA Intel PCH Mic
/dev/input/event11: HDA Intel PCH Headphone
/dev/input/event12: HDA Intel HDMI HDMI/DP,pcm=3
/dev/input/event13: HDA Intel HDMI HDMI/DP,pcm=7
/dev/input/event14: HDA Intel HDMI HDMI/DP,pcm=8
/dev/input/event15: SynPS/2 Synaptics TouchPad
/dev/input/event16: Integrated Camera
/dev/input/event17: Logitech M705
/dev/input/event18: TPPS/2 IBM TrackPoint
/dev/input/event19: daskeyboard
/dev/input/event20: daskeyboard
Select the device event number [0-20]: 
  • 设备 ID 9xinput对应于/dev/input/event5,它具有除部分媒体键之外的所有常规键。
  • id 10 对应于/dev/input/event7,并且有媒体键F1-F4和其他 6 个与音量控制和其他微软东西相关的键。
  • 我猜这/dev/input/event6对应于键盘上的触摸板。

问题出在功能键上。放置在应放置位置的媒体键F1-F5被分配给“ (keys)”设备,而F6-F12被分配给另一个设备。我想将媒体键映射回功能键,这样我就不必每次都按 Fn。

问题一:媒体键(通过输入设备 10 传送的键(keys))不由 注册xev。它们使用showkey --scancodes和生成输出evtest,但它们没有被 X 拾取。如何解决这个问题?

问题2: 通过输入设备工作的媒体键9会发送多个扫描码,并且据我所知,无法使用以下方法重新映射多个键hwdb,如图所示这里。以下是媒体键发送的扫描码F7

Event: time 1430059493.552417, -------------- EV_SYN ------------
Event: time 1430059493.560416, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
Event: time 1430059493.560416, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
Event: time 1430059493.560416, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e3
Event: time 1430059493.560416, type 1 (EV_KEY), code 125 (KEY_LEFTMETA), value 0
Event: time 1430059493.560416, -------------- EV_SYN ------------

我不知道如何将多个扫描码绑定到单个事件;现在 X 正在检测所有单独的键并将它们映射到相应的事件。例如,根据上面的输出, media key on F7send Ctrl+Alt+Scanner。由于谷歌搜索没有结果,我该怎么做?

答案1

Fn您可以按+将 F 按钮锁定到 F 按钮而不是多媒体按钮,而不是重新映射按键,CapsLock如果再次按则反之亦然。

答案2

卸载 xf86-input-joystick 包后我终于遇到了同样的问题问题解决了 https://forum.manjaro.org/t/microsof-all-in-one-keyboard-problem/15560

相关内容