答案1
为了映射罕见或自定义键绑定,您需要手动编辑xmodmap并确保每次 X 启动时它都会启动。
如果西夫不工作,你也可以运行showkey --keycodes
当我运行showkey --keycodes
它返回一个错误
无法获取引用控制台的文件描述符
所以我必须运行showkey --ascii
并使用第一列号,在本例中是十进制数 97
a 97 0141 0x61
和将其转换为十六进制数 它返回了键 a 的确认且正确的值 61,这就是 xev 返回的值,如下所示。
现在启动 X 会话,只需登录到 xfce 桌面环境并运行 xev。将弹出一个小窗口,终端将开始输出从键盘接收到的每个按键交互的数据。
这是当我按下 a 键和释放该键时 xev 生成的输出。
KeyPress event, serial 48, synthetic NO, window 0x2400001,
root 0x13e, subw 0x0, time 5887747, (622,717), root:(633,745),
state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XmbLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
KeyRelease event, serial 48, synthetic NO, window 0x2400001,
root 0x13e, subw 0x0, time 5887843, (622,717), root:(633,745),
state 0x0, keycode 38 (keysym 0x61, a), same_screen YES,
XLookupString gives 1 bytes: (61) "a"
XFilterEvent returns: False
现在,当按下未映射的键时,它将在键码编号后返回 NoSymbol 值。
每次识别 NoSymbol 键时,请记下键码编号。
KeyRelease event, serial 28, synthetic NO, window 0x3400001,
root 0x38, subw 0x0, time 636666629, (158,102), root:(832,903),
state 0x10, keycode 164 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes: ""
一旦您识别并记下所有返回 NoSymbol 的键码,
进入
$ xmodmap -pke > xmodmap.conf
这会将当前键盘映射写入 xmodmap.conf。
现在您必须编辑 xmodmap.conf 并分配一个XF86键盘符号到键码。
只要不使用,任何免费的 XF86 键盘符号都可以。
keycode 164 = XF86Music
保存编辑后的 xmodmap.conf 文件
每次 X 运行时将其添加到自动启动。
echo 'xmodmap xmodmap.conf' >> ~/.xinitrc
您可以输入
xmodmap xmodmap.conf
绕过重新启动的需要,然后立即重新加载 xmodmap 并享受新映射的键盘按键。