如果我想重新定义 R 键,我会使用:
key <AD04> { [ r, R, Page_Up, registered ]};
该键对应的 xev 输出是:
KeyPress event, serial 35, synthetic NO, window 0x5a00001,
root 0x228, subw 0x0, time 96963419, (121,378), root:(992,832),
state 0x10, keycode 27 (keysym 0x72, r), same_screen YES,
XLookupString gives 1 bytes: (72) "r"
XmbLookupString gives 1 bytes: (72) "r"
XFilterEvent returns: False
我怎么找到的AD04
?我正在研究现有映射并发现r
,很简单。
但是还有更多奇特的字符,例如BKSL
退格键,或者LSGT
iso 键盘的“奇怪”反斜杠 (IIUC)。那么我是怎么发现的LSGT
?我知道,它通常可以在 gb 键盘上找到。这不是非常正确的查找方法,但至少是可能的。
所以现在我想重新定义 MS-ergonomic 4000 上的一些多媒体键。xev 看起来像这样:
KeyRelease event, serial 39, synthetic NO, window 0x4800001,
root 0x228, subw 0x0, time 97354466, (-387,623), root:(484,1077),
state 0x10, keycode 167 (keysym 0x1008ff27, XF86Forward), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
我如何找到:key <XY05>
或者它是什么?或者我可以用什么来代替<XY05>
,就像我们可以使用U200E
来打印任意unicode(如果缺少keysym)一样?这个键盘滥用高于12的F键来丢失类似多媒体的键,所以我假设这将是相同的并且实际上可用,但是哪一个!,如何找到它?
更新:部分找到了,并不适用于所有键。
关于符号r
:
例如,在 xev 列表中有keycode 27
。好吧,我不太相信,这确实是关键代码,正如showkey -k
所说的r
那样19
,它也不是 scancode 或 ascii,这就是我所知道的所有代码。无论如何,这个任何是 27。配对来自任何完成<whatever>
于:/usr/share/X11/xkb/keycodes
,因此问题find ./ -type f -exec grep -l 27 {} +
,您将发现配对。
但是有些键,在我的情况下是 XF86Forward,在键码文件中重复定义,都不起作用<WHATEVER>
。尝试定义自定义 xkb_keycodes 会导致错误(xkb 的编写/文档不是很好)。无论如何,作为一种丑陋的解决方法,可以使用 xmodmap 重新定义键,然后在 xkb 中使用其他键,这实际上有效。