我最近购买了 Utechsmart Venus 鼠标:http ://www.utechsmart.com/product/show/id/477/US-D16400-GM
在不更改侧面和快速启动按钮指向的键的情况下,我无法将这些侧面按钮(以及“鼠标左键附近的“快速启动按钮”)绑定到不同的键。
这样做的原因是我一直无法让 xev 将侧边按钮和快速启动按钮识别为它们自己的事件。相反,当我按下侧面按钮或快速启动按钮时,xev 事件测试器会立即报告按钮映射到的绑定。
即我按下侧面按钮“1”,事件映射器报告:
KeyPress event, serial 74, . . .
KeyRelease event, serial 74 . . .
当我按下鼠标左键时,映射器报告:
ButtonPress event, serial 37, . . .
Button Release event, serial 37, . . .
显然,如果在这两个相关帖子中没有告诉我按钮“地址”是什么,我就无法从鼠标映射按钮:
有没有人有任何建议可以进一步尝试找出鼠标上的这些按钮是什么?
显然鼠标正在工作,它只是没有以我喜欢的方式映射到按钮。因此,在我看来,必须有一个解决方案,我非常乐意深入研究以解决这个问题。我一直在查看 Xorg 和 evdev 驱动程序的文档,但我什至不确定这是否是正确的方向。
不一定要找人直接为我解决这个问题。但是,如果能帮助我集思广益,就如何解决这个问题提出一些想法,我将不胜感激。
谢谢你的耐心!
更新:
所以我在 archlinux 论坛上找到了一篇关于 razer naga 的帖子,它是一种非常相似的鼠标。看起来很有希望:https ://bbs.archlinux.org/viewtopic.php?id=145502 。这让我在这里遇到了与红外遥控器类似的问题:https ://www.mythtv.org/wik147+853!#@#+!i/Generic_HID_%22MCE%22_Remotes#XKB_Remapping 。那里有大量信息可以深入探讨这个问题。如果他们能更好地解释他们如何弄清楚脚本中的“键”是什么,那就太好了,但是在阅读了很多补充材料之后,似乎 <AE[01/12]> 来自惯例(并且因为鼠标上的按钮对应于那些键映射,它只会更有意义......
但是,我仍然有一点问题。我还没有创建shebang,而是尝试手动运行命令。
首先,我创建了符号文件 /usr/share/X11/xkb/symbols/custom (我不太确定他们为什么使用 tmp 目录)并包含以下内容:
xkb_symbols "venus" {
2 key <AE01> { [ y, Y ]
3 key <AE02> { [ i, I ]
4 key <AE03> { [bracketleft, braceleft ]
5 key <AE04> { [bracketright, braceright ]
6 key <AE05> { [ slash, question ]
7 key <AE06> { [ j, J ]
8 key <AE07> { [ k, K ]
9 key <AE08> { [ l, L ]
10 key <AE09> { [ semicolon, colon ]
11 key <AE10> { [ comma, less ]
12 key <AE11> { [ minus, underscore ]
13 key <AE12> { [ equal, plus ]
14 };
然后我运行了 xinput list ,结果如下:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ USB Laser Game Mouse id=9 [slave pointer (2)]
⎜ ↳ USB Laser Game Mouse id=11 [slave pointer (2)]
⎜ ↳ EST Gaming keyboard id=13 [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)]
↳ Power Button id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ USB Laser Game Mouse id=10 [slave keyboard (3)]
↳ EST Gaming keyboard id=12 [slave keyboard (3)]
↳ EST Gaming keyboard id=14 [slave keyboard (3)]
↳ C-Media Electronics Inc. USB Audio Device id=15 [slave keyboard (3)]
↳ USB Laser Game Mouse id=16 [slave keyboard (3)]
↳ EST Gaming keyboard id=17 [slave keyboard (3)]
在分析了上面两个链接中编写的脚本后,我推断出我的 $remote_id 变量将是 16,所以我运行了以下内容:
setxkbmap -device 16 -print | sed's/\(xkb_symbols.*\)"/\1+custom(venus)"/' | xkbcomp -I /usr/share/X11/xkb -i 16 -synch $DISPLAY
我没有将我的输出通过管道传输到 /dev/null 中,因为我想看看输出是什么(显然,当我制作脚本时,我会这样做,但我试图了解我目前在做什么)。我的输出如下:
Warning: Too many file names on command line
Compiling /usr/share/X11/xkb, writing to -, ignoring :0
syntax error: line 1 of /usr/share/X11/xkb
last scanned symbol is:
Errors encountered in /usr/share/X11/xkb; not compiled.
我真的不知道从这里去哪里。. .