字符终端的布局选择在 /etc/sysconfig/keyboard
里面有个 XXX.map.gz 的配置文件,可以到 /usr/share/kbd/keymap 里面去找,然后解压->修改->打包。
X11 下的键盘布局是 xkb 管理的。 比字符终端的复杂一些
先用 setxkbmap -print 看一下配置,比如
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete+numpad(mac)" };
xkb_compat { include "complete" };
xkb_symbols { include "macintosh_vndr/apple(alukbd)+macintosh_vndr/us+inet(evdev)+terminate(ctrl_alt_bksp)+macintosh_vndr/apple(alupckeys)" };
xkb_geometry { include "macintosh(applealu_ansi)" };
};
xkb 的分层的:scancode,keycode,symbol 每一层都能修改达到目的,但一般改 symbol 就好。
找到你当前的 symbol 比如 macintosh_vndr/apple(alukbd) 就在 /usr/share/X11/xkb/symbols/macintosh_vndr/apple,编辑 xkb_symbols "alukbd" {} 中的内容,具体怎么编辑可以看看这个
https://www.linux.com/news/creating-custom-keyboard-layouts-x11-using-xkb另外还有两个调试工具:xev, 把鼠标放在框里面按键会显示调试信息,比如组合键状态和 symbol
一楼提到的 xmodmap,直接修改 keycode 到 symbol,也可以用参数-pk 直接打印出当前键盘布局全貌。