我有一个 Keychron K2 机械键盘,键盘右侧的按键如下所示:
我想将它们交换为更标准的布局,这样,从上到下,我就会有Light Toggle
, Home
, Page Up
, Page Down
, 和End
。
我曾经xev
检索关键代码并编写了一个小脚本,用于xmodmap
将它们交换为我喜欢的:
#!/bin/bash
xmodmap -e "keycode 110 = Next" && xmodmap -e "keycode 112 = Home" && xmodmap -e "keycode 117 = Prior"
该脚本在启动时执行,并且完全按照预期工作。
问题是这个键盘既是有线的又是蓝牙的。当我在有线模式和蓝牙模式之间切换时,反之亦然,按键会返回到默认位置,我需要再次手动运行上述脚本。xev
向我表明,在这两种情况下,关键代码是相同的。有没有更好的方法来解决这个问题,以便无论我使用什么键盘模式都可以交换这些键?
答案1
不幸的是,在 Linux Mint(和 Ubuntu 衍生版本)中,xmodmap
每当插入/拔出键盘或检测到新键盘时,都会重置。对于像我这样的双模式键盘,系统知道这是两个独立的键盘,并将xmodmap
在此时重置。
解决方案是使用以下命令编辑pc
文件/usr/share/X11/xkb/symbols/
:
$ sudo nano /usr/share/X11/xkb/symbols/pc
然后将第 77、78 和 81 行从...更改为:
key <HOME> { [ Home ] };
key <PGUP> { [ Prior ] };
key <PGDN> { [ Next ] };
... 到:
key <HOME> { [ Next ] };
key <PGUP> { [ Home ] };
key <PGDN> { [ Prior ] };
这将硬编码更改这些键全部键盘。