Pav*_*riz 2 linux xorg button-remapping xinput
我想将 MS Sculpt Comfort Mouse 上的“Windows 按钮”重新映射到我的 Linux 机器(Linux Mint 18.2“Sonya”)上的另一个按钮(例如“返回”按钮)。
根据xinput list
,鼠标被识别为指针设备(id=12)。
? Virtual core pointer id=2 [master pointer (3)]
? ? Virtual core XTEST pointer id=4 [slave pointer (2)]
? ? Microsoft Sculpt Comfort Mouse id=12 [slave pointer (2)]
? ? FocalTechPS/2 FocalTech FocalTech Touchpad id=15 [slave pointer (2)]
? Virtual core keyboard id=3 [master keyboard (2)]
? Virtual core XTEST keyboard id=5 [slave keyboard (3)]
? Power Button id=6 [slave keyboard (3)]
? Video Bus id=7 [slave keyboard (3)]
? Sleep Button id=8 [slave keyboard (3)]
? Chicony USB Keyboard id=9 [slave keyboard (3)]
? Chicony USB Keyboard id=10 [slave keyboard (3)]
? USB2.0 UVC HD Webcam id=11 [slave keyboard (3)]
? Asus WMI hotkeys id=13 [slave keyboard (3)]
? AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
Run Code Online (Sandbox Code Playgroud)
根据在鼠标上按下“Windows 按钮”时鼠标生成xinput test 12
的Super_L
键(键码 133)。
key press 133
key release 133
Run Code Online (Sandbox Code Playgroud)
现在,我需要将这个特定设备的密钥重新映射到另一个密钥。我会使用setxkbmap
工具来完成(在如何在 Linux 下为特定键盘重新映射键中描述)。
我的脚本如下:
remote_id=$(
xinput list | sed -n 's/.*Microsoft Sculpt Comfort Mouse.*id=\([0-9]*\).*/\1/p'
)
[ "$remote_id" ] || exit
# remap Windows button on MS Sculpt Mouse to Back button
mkdir -p /tmp/xkb/symbols
cat >/tmp/xkb/symbols/custom <<\EOF
xkb_symbols "remote" {
key <LWIN> { [ XF86Back ] };
};
EOF
setxkbmap -device $remote_id -print | sed 's/\(xkb_symbols.*\)"/\1+custom(remote)"/' | xkbcomp -I/tmp/xkb -i $remote_id -synch - $DISPLAY 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
我也尝试过在Remap/change your secondary/usb keyboard keys 中描述的类似方法。试图交换代码,例如。对于<LWIN>
和<VOL+>
。但是没有成功,鼠标的 Windows 键仍然被解释为 Windows 键。
然后,我想我的USB键盘上重新映射Windows键(与交换)使用第二种方法(纯(ID = 9) xkbcomp
)和它的工作,同时也改变了鼠标按键的行为以同样的方式(不管是如何的按键映射为鼠标)。奇怪的是,当我按下笔记本电脑内置键盘(未重新映射)上的 Windows 按钮,然后按下鼠标时,它被解释为 Windows 按钮。当我按下 USB 键盘上的 Windows 按钮(重新映射到 VOL+),然后按下鼠标时,它被解释为 VOL+。可能与错误 91571相关- 通过 xkbcomp 设置的 xkb 似乎不适用于 -i(或者如果在通用设备上使用则不适用)。
不幸的是,我无法仅为特定设备重新映射按钮。
1) 该xkbcomp
工具是否只能在“从键盘”设备上正常工作?(不适用于“从指针”)
2)有没有办法将此鼠标视为“从属键盘”?
3) 或者是否有另一种方法可以仅为此特定设备(而不是主 USB 键盘)重新映射“Windows 按钮”?
回答我自己的问题 #3:udev 可以做到。我的/etc/udev/hwdb.d/10-ms-sculpt-back.hwdb
文件:
# remap MS Sculpt Comfort Mouse (Bluetooth) Windows key to Back key
evdev:input:b0005v045Ep07A2*
KEYBOARD_KEY_700e3=back
Run Code Online (Sandbox Code Playgroud)
感谢Map scancodes to keycodes和How to find the .hwdb header of a general input device?
归档时间: |
|
查看次数: |
2225 次 |
最近记录: |