无需重新启动系统即可更改键盘布局,适用于所有虚拟终端实例

无需重新启动系统即可更改键盘布局,适用于所有虚拟终端实例

我使用和开发的设备是由一家丹麦公司制造的。每当我们 ssh 进入基于 Debian 8 的设备时,它们的键盘布局都是 US QWERTY,但如果我们将 US 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 所要做的就是运行一个简单的脚本,在美国(这样他们可以更轻松地打字)和丹麦语(这样他们可以将设备设置回与生产设备类似)之间来回切换尽可能)。

答案1

在 Debian 上,要在未运行 X 的 VT 上设置键盘(和字体),您应该运行setupcon。要重新配置默认键盘并进行设置,您应该运行dpkg-reconfigure keyboard-configuration.

setupcon可以使用其配置文件的多个变体,这将允许您在键盘布局之间快速切换。

系统的键盘配置对通过 SSH 使用的映射没有影响:SSH 不传输击键,它传输字符,不涉及键盘样式映射。

相关内容