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

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 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