当键盘模式改变时 xmodmap 重置

当键盘模式改变时 xmodmap 重置

我有一个 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        ]   };

这将硬编码更改这些键全部键盘。

相关内容