Linux console (简体中文)/Keyboard configuration (简体中文)

From ArchWiki
翻译状态:本文是 Keyboard_Configuration_in_Console翻译。上次翻译日期:2015-02-07。如果英文版本有所更改,则您可以帮助同步翻译。
注意: 此文仅介绍简单设置,修改布局、按键映射等高级功能请查看 Extra keyboard keys

虚拟控制台键盘映射(keymaps), 控制台字体和控制台映射由软件包 kbd 提供(systemd依赖此软件包)。这个包还提供了很多管理虚拟控制台的底层工具。此外,systemd 还提供了 localectl 工具,可以同时控制系统 locale 和控制台、Xorg 的键盘布局设置.

查看键盘设置

用下面命令查看键盘和本地化设置:

$ localectl status
   System Locale: LANG=en_GB.utf8
                  LC_COLLATE=C
       VC Keymap: cz-qwertz
      X11 Layout: cz

设置键盘映射

键盘映射码

通常一个键盘映射文件对应一个键盘布局,可以通过include语句共享通用的部分。一个映射文件可以包含多个布局,通过快捷键切换。键盘映射文件位于目录/usr/share/kbd/keymaps/

映射名并没有统一的规则,但是通常基于下面标准:

下面命令可以查看所有键盘映射

$ localectl list-keymaps

查找键盘布局:

$ localectl list-keymaps | grep -i search_term

永久设置

可以把键盘设置到 /etc/vconsole.confsystemd 在启动时会读取此文件. KEYMAP 变量指定键盘映射,如果未设置或为空,则使用默认的 us 键盘映射,选项信息可以参考 vconsole.conf(5)

/etc/vconsole.conf
KEYMAP=uk
...

以用 localectl 修改键盘映射,例如下面命令同时修改了/etc/vconsole.conf 和当前会话中的 KEYMAP:

$ localectl set-keymap --no-convert keymap

--no-convert 选项会阻止 localectl 自动将 Xorg keymap 修改为最接近的匹配。详情参阅 localectl(1)

临时设置

也可以使用 loadkeys 工具临时修改键盘布局,参阅 loadkeys(1)

# loadkeys keymap

修改按键延时和频率

按键延时是只长按一个按键多少时间才会开始重复这个按键。开始重复过程后,字符会以一定频率出现(Hz),也就是重复频率. 终端中,这些值可以通过 kbdrate 设置。X 中的设置参考这里.

# kbdrate [-d delay] [-r rate]

延迟 200ms 重复频率是 30Hz::

# kbdrate -d 200 -r 30

不加任何参数会还原到默认值 250ms 和 11Hz:

# kbdrate

Systemd service

可以用下面 systemd service 修改按键频率:

/etc/systemd/system/kbdrate.service

[Unit]
Description=Keyboard repeat rate in tty.

[Service]
Type=simple
RemainAfterExit=yes
StandardInput=tty
StandardOutput=tty
ExecStart=/usr/bin/kbdrate -s -d 450 -r 60
 
[Install]
WantedBy=multi-user.target
$ systemctl enable kbdrate.service
$ systemctl start kbdrate.service