在 Linux 桌面环境中,系统已经设置了日语键盘布局,但部分应用(如 Termius)依然显示为英文键盘布局,导致输入符号错位。这个问题的根源在于 系统级键盘配置未正确传递到 X11,而 Electron 应用(Termius 属于此类)直接读取 XKB 配置,因未设置而退回到默认的美式键盘。
问题表现
- 系统输入法设置为日语(JP106 键盘),在大多数应用中输入正常。
- 打开 Termius 后,按键依然按照美式键盘映射,符号位置与实际键盘不符。
- 运行
localectl status检查时,发现输出结果如下:System Locale: LANG=en_US.UTF-8 VC Keymap: (unset) X11 Layout: (unset)可以看到 X11 键盘布局并未被设置。
临时解决方法
通过 setxkbmap 命令可以立即切换键盘布局:
setxkbmap jp
执行后,Termius 中的键盘映射立即恢复正常。但该方法在重启或重新登录后会失效。
永久解决方法
使用 localectl 配置
localectl 是 systemd 提供的键盘与区域设置工具,可以直接写入 X11 的键盘配置文件。
常用命令如下:
sudo localectl set-x11-keymap jp
若需要指定键盘模型(例如日本 106/109 键盘),可以使用:
sudo localectl set-x11-keymap jp jp106
配置完成后,重启桌面会话即可生效。再次检查:
localectl status
应显示:
X11 Layout: jp
X11 Model: jp106
手动编辑 X11 配置文件
如果 localectl 不工作,也可以直接写入配置文件:
创建或修改 /etc/X11/xorg.conf.d/00-keyboard.conf:
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "jp"
Option "XkbModel" "jp106"
EndSection
保存后,重启桌面环境使其生效。
总结
当 Linux 桌面应用出现键盘布局与系统不一致的情况,首先应检查 localectl status 是否显示了正确的 X11 Layout。如果为空,需要通过 localectl 或直接编辑 /etc/X11/xorg.conf.d/00-keyboard.conf 来写入键盘布局。
在 Termius 这类依赖 XKB 配置的应用中,问题尤为明显。通过正确设置键盘布局,可以保证所有应用保持一致的输入体验。