Ubuntu 23.04持续覆盖个人.Xmodmap键盘设置的解决方法求助
Ubuntu 23.04持续覆盖个人.Xmodmap键盘设置的解决方法求助
我太懂这种每次登录或者切换语言都得手动敲xmodmap .Xmodmap的糟心感觉了!Ubuntu 23.04之后对键盘管理的机制做了调整,现在更依赖XKB系统,而且会在登录完成后、甚至切换locale时自动重新加载默认键盘配置,直接把你的.Xmodmap设置覆盖掉。这里有几个亲测有效的解决办法,你可以按需尝试:
方法一:延迟执行自定义键盘映射
直接把xmodmap ~/.Xmodmap加入启动项大概率会失效——因为系统还没完成键盘初始化,你的设置会被后面的系统配置冲掉。给命令加个延迟就能解决:
- 在家目录新建一个脚本文件,比如
fix-keyboard.sh,内容如下:#!/bin/bash # 延迟5秒,等系统完成键盘初始化 sleep 5 xmodmap ~/.Xmodmap - 给脚本加上执行权限:
chmod +x ~/fix-keyboard.sh - 打开系统的「启动应用程序」(Startup Applications),点击「添加」:
- 名称随便填,比如「加载自定义键盘映射」
- 命令选择你刚创建的
~/fix-keyboard.sh - 描述可以写「登录后应用个人.Xmodmap设置」
下次登录时,系统会先完成自身的键盘配置,再执行你的自定义映射,就不会被覆盖了。
方法二:切换到XKB配置(更持久的方案)
既然Ubuntu现在优先用XKB,不如把你的.Xmodmap转换为XKB配置,从根源上避免被覆盖:
- 先导出当前的XKB键盘配置到本地文件:
xkbcomp $DISPLAY ~/my-custom-keymap.xkb - 查看你的.Xmodmap里的键位映射,用
xmodmap -pke命令可以看到当前所有键的对应关系,然后把这些映射转换成XKB的语法,修改~/my-custom-keymap.xkb文件(XKB的语法稍微复杂点,你可以对照原配置里的key段落来修改)。 - 测试一下自定义的XKB配置:
setxkbmap -I$HOME -print | xkbcomp -I$HOME - $DISPLAY - 同样把这个命令加入「启动应用程序」,这样每次登录都会加载你的自定义XKB配置,系统的locale切换就不会影响它了。
方法三:禁用locale触发的键盘重置(进阶操作)
如果是切换locale时才会覆盖设置,你可以检查一下系统里有没有自动触发键盘重设的服务,或者修改/etc/default/locale文件,确保你的locale设置不会关联到键盘布局的自动重置。不过这个方法可能影响其他系统组件,建议先尝试前两个方法,确认无效后再考虑。
备注:内容来源于stack exchange,提问作者leoalvar
相关产品推荐
相关产品推荐

