Ubuntu下USB键盘重新插拔后无法维持US intl布局的问题解析及后续操作咨询
Ubuntu下USB键盘重新插拔后无法维持US intl布局的问题解析及后续操作咨询
问题情况回顾
你遇到的这个问题确实挺闹心:每次拔掉再重新插上USB键盘,系统都会自动切回标准US键盘布局,而不是你想要的和Windows一致的US intl带国际字符布局。之前你试过用dpkg-reconfigure keyboard-configuration重置键盘配置,但没起作用,每次都得手动切到其他布局再切回US intl,还得多装一个没用的布局来完成切换步骤,特别麻烦。
从你提供的配置信息来看,插拔前的底层配置都是正确的US intl:
# /etc/default/keyboard 内容 KEYBOARD CONFIGURATION FILE # Consult the keyboard(5) manual page. XKBMODEL="pc105" XKBLAYOUT="us" XKBVARIANT="intl" XKBOPTIONS="lv3:ralt_switch" BACKSPACE="guess"
# 插拔前 localectl status 输出 System Locale: LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_NUMERIC=sv_SE.UTF-8 LC_TIME=sv_SE.UTF-8 LC_MONETARY=sv_SE.UTF-8 LC_PAPER=sv_SE.UTF-8 LC_NAME=sv_SE.UTF-8 LC_ADDRESS=sv_SE.UTF-8 LC_TELEPHONE=sv_SE.UTF-8 LC_MEASUREMENT=sv_SE.UTF-8 LC_IDENTIFICATION=sv_SE.UTF-8 VC Keymap: n/a X11 Layout: us X11 Model: pc105 X11 Variant: intl X11 Options: lv3:ralt_switch
# 插拔前 setxkbmap -print 输出 xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+us(intl)+inet(evdev)+level3(ralt_switch)" }; xkb_geometry { include "pc(pc105)" }; };
但插拔后,虽然localectl status显示的配置没变,setxkbmap -print却显示布局悄悄变成了us(altgr-intl),而且桌面输入源里还混着不需要的布局:
# 插拔后 gsettings 输出 [('xkb', 'se+dvorak'), ('xkb', 'se'), ('xkb', 'us')]
问题根源解析
你后来找到的两个配置入口是关键:GNOME桌面里有两个独立但关联的键盘布局配置点:
- 系统设置里的「键盘 > 布局」:这个是全局的X11底层配置,对应
/etc/default/keyboard和localectl的设置 - 状态栏布局切换菜单里的「配置 > 输入源」:这个是GNOME桌面层面的输入源管理,它会在设备插拔这类动态事件发生时,优先覆盖底层的X11配置
之前的问题就是这两个配置不一致:底层配置是US intl,但桌面输入源里没正确设置,反而包含了标准US布局。当USB键盘重新连接时,GNOME会优先加载桌面输入源的配置,导致布局被强制切换到标准US。
后续操作建议
既然你已经把两个配置入口都统一设置为US intl,问题也解决了,其实不需要额外做太多操作,不过可以做几个小检查来确保稳定性:
- 再插拔一次键盘,用
setxkbmap -print确认布局保持为us(intl) - 把输入源里不需要的布局(比如se、se+dvorak)删掉,避免后续误切换,执行命令:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+intl')]" - 重启一次系统,确认开机后键盘布局依然是US intl,不会被莫名重置
这样就能确保后续插拔键盘时,系统会一直稳定使用你想要的US intl布局了。
备注:内容来源于stack exchange,提问作者skyking
相关产品推荐
相关产品推荐

