技术解析

Linux 下怎么更改键盘布局?
0
2021-06-29 07:14:25
idczone

在淘宝上买了一个欧版 thinkpad 键盘,Z 左边的键标了三个符号:分别是><|,如下图所示。

keyboard

可见这个按键可以输出三种符号,试了一下,不按Shift的时候输出的是<,按了Shift输出>,那问题来了,如果我想输出|怎么办?

顺便说一下,用的是 arch linux,在 windows 下面是正常的,按 Shift + 这个键输出的是|,这就是我想要的结果,但是在 linux 下面不是这样的,有人知道怎么调整吗?


Xmodmap

Arch wiki 有讲

字符终端的布局选择在 /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 直接打印出当前键盘布局全貌。

补充一个更直观的查看布局的方法 ,xkbprint $DISPLAY mykeyboard.ps 直接生成 ps 图片

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服