我使用和开发的设备是由一家丹麦公司制造的。每当我们通过 ssh 进入基于 Debian 8 的设备时,它们的键盘布局是美国 QWERTY,但如果我们将美国 USB 键盘连接到设备本身,它们的键盘布局是丹麦语。
我一直在尝试找到一种简单的方法来设置所有 10 个虚拟终端的键盘布局,因为我们将它们用于开发目的。(它们是由 systemd 服务在启动时运行的 mingetty)。
我发现我可以在某种程度上成功地将布局更改为美国,如果我:
- 我通过 SSH 连接到设备
/etc/default/keyboard
手动编辑拥有XKBLAYOUT="us"
而不是XKBLAYOUT="dk"
- 跑
udevadm trigger --subsystem-match=input --action=change
但是,它并没有改变我之后在本地登录的虚拟终端的布局。
如果我满足以下条件,我可以成功地将所有 VT 的布局更改为 US:
- 我通过 SSH 连接到设备或在本地登录
/etc/default/keyboard
手动编辑拥有XKBLAYOUT="us"
而不是XKBLAYOUT="dk"
- 重启设备
有没有其他方法可以让这些更改生效而无需重新启动整个设备?
我知道我需要做的就是改变,XKBLAYOUT
所以当我尝试使用时,setxkbmap -model pc105 -layout us
我会Cannot open display "default display"
回来。注意:当我 ssh 或本地登录到设备时,我是 root,并且一直以 root 身份运行所有命令。
我的/etc/default/keyboard
文件很简单:
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="dk"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
我的目标是编写该过程的脚本,因此所有 QA 所要做的就是运行一个简单的脚本来在美国(这样他们可以更轻松地打字)和丹麦语(这样他们可以将设备设置回与生产设备相似)之间来回切换尽可能)。
在 Debian 上,要在不运行 X 的 VT 上设置键盘(和字体),您应该运行
setupcon
. 要重新配置默认键盘并进行设置,您应该运行dpkg-reconfigure keyboard-configuration
.setupcon
可以使用其配置文件的多个变体,这将允许您在键盘布局之间快速切换。系统的键盘配置对通过 SSH 使用的映射没有影响:SSH 不传输击键,它传输字符,不涉及键盘样式映射。