arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
139 lines (87 loc) • 5.47 kB
Markdown
相关文章
* [Keyboard configuration in Xorg](/index.php/Keyboard_configuration_in_Xorg "Keyboard configuration in Xorg")
* [Extra keyboard keys](/index.php/Extra_keyboard_keys "Extra keyboard keys")
**翻译状态:** 本文是英文页面 [Keyboard_Configuration_in_Console](/index.php/Keyboard_Configuration_in_Console "Keyboard Configuration in Console") 的[翻译](/index.php/ArchWiki_Translation_Team_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "ArchWiki Translation Team (简体中文)"),最后翻译时间:2015-02-07,点击[这里](https://wiki.archlinux.org/index.php?title=Keyboard_Configuration_in_Console&diff=0&oldid=359908)可以查看翻译后英文页面的改动。
**Note:** 此文仅介绍简单设置,修改布局、按键映射等高级功能请查看 [Extra keyboard keys](/index.php/Extra_keyboard_keys "Extra keyboard keys")。
[虚拟控制台](https://en.wikipedia.org/wiki/Virtual_console "wikipedia:Virtual console")键盘映射(keymaps), 控制台字体和控制台映射由软件包 [kbd](https://www.archlinux.org/packages/?name=kbd) 提供([systemd](/index.php/Systemd "Systemd")依赖次软件包)。这个包还提供了很多管理虚拟控制台的底层工具。此外,*systemd* 还提供了 *localectl* 工具,可以同时控制系统 [locale](/index.php/Locale "Locale") 和控制台、Xorg 的键盘布局设置.
## Contents
* [1 查看键盘设置](#.E6.9F.A5.E7.9C.8B.E9.94.AE.E7.9B.98.E8.AE.BE.E7.BD.AE)
* [2 设置键盘映射](#.E8.AE.BE.E7.BD.AE.E9.94.AE.E7.9B.98.E6.98.A0.E5.B0.84)
* [2.1 键盘映射码](#.E9.94.AE.E7.9B.98.E6.98.A0.E5.B0.84.E7.A0.81)
* [2.2 永久设置](#.E6.B0.B8.E4.B9.85.E8.AE.BE.E7.BD.AE)
* [2.3 临时设置](#.E4.B8.B4.E6.97.B6.E8.AE.BE.E7.BD.AE)
* [3 修改按键延时和频率](#.E4.BF.AE.E6.94.B9.E6.8C.89.E9.94.AE.E5.BB.B6.E6.97.B6.E5.92.8C.E9.A2.91.E7.8E.87)
* [3.1 Systemd service](#Systemd_service)
## 查看键盘设置
用下面命令查看键盘和本地化设置:
`$ localectl status`
```
System Locale: LANG=en_GB.utf8
LC_COLLATE=C
VC Keymap: cz-qwertz
X11 Layout: cz
```
## 设置键盘映射
### 键盘映射码
通常一个键盘映射文件对应一个键盘布局,可以通过`include`语句共享通用的部分。一个映射文件可以包含多个布局,通过快捷键切换。键盘映射文件位于目录`/usr/share/kbd/keymaps/`。
映射名并没有统一的规则,但是通常基于下面标准:
* [语言代码](https://en.wikipedia.org/wiki/ISO_639-1 "wikipedia:ISO 639-1"): 语言代码和国家代码一样的时候(例如:德国用`de`,法国用 `fr`).
* [国家代码](https://en.wikipedia.org/wiki/Country_code "wikipedia:Country code"): 有些国家语言相同,但是在不同的国家使用的不一样。例如英国用`uk`,美国用 `us`,[次链接可以查看国家代码](https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements "wikipedia:ISO 3166-1").
* [键盘布局](https://en.wikipedia.org/wiki/Keyboard_layout "wikipedia:Keyboard layout"): 布局和国家或语言不相关,例如 [Dvorak 键盘布局](https://en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard "wikipedia:Dvorak Simplified Keyboard") 使用 `dvorak`。
下面命令可以查看所有键盘映射
```
$ localectl list-keymaps
```
查找键盘布局:
```
$ localectl list-keymaps | grep -i *search_term*
```
### 永久设置
可以把键盘设置到 `/etc/vconsole.conf`,[systemd](/index.php/Systemd "Systemd") 在启动时会读取此文件. `KEYMAP` 变量指定键盘映射,如果未设置或为空,则使用默认的 `us` 键盘映射,选项信息可以参考 [vconsole.conf(5)](http://jlk.fjfi.cvut.cz/arch/manpages/man/vconsole.conf.5)。
`/etc/vconsole.conf`
```
KEYMAP=uk
...
```
以用 *localectl* 修改键盘映射,例如下面命令同时修改了`/etc/vconsole.conf` 和当前会话中的 `KEYMAP`:
```
$ localectl set-keymap --no-convert *keymap*
```
`--no-convert` 选项会阻止 `localectl` 自动将 [Xorg keymap](/index.php/Keyboard_configuration_in_Xorg "Keyboard configuration in Xorg") 修改为最接近的匹配。详情参阅 [localectl(1)](http://jlk.fjfi.cvut.cz/arch/manpages/man/localectl.1)。
### 临时设置
也可以使用 *loadkeys* 工具临时修改键盘布局,参阅 [loadkeys(1)](http://jlk.fjfi.cvut.cz/arch/manpages/man/loadkeys.1)
```
# loadkeys *keymap*
```
## 修改按键延时和频率
**按键延时**是只长按一个按键多少时间才会开始重复这个按键。开始重复过程后,字符会以一定频率出现(Hz),也就是**重复频率**. 终端中,这些值可以通过 *kbdrate* 设置。X 中的设置参考[这里](/index.php/Keyboard_configuration_in_Xorg#Adjusting_typematic_delay_and_rate "Keyboard configuration in Xorg").
```
# 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
```