kbdconfig命令是一个基于文本的交互式键盘配置工具,主要用于Red Hat系列Linux发行版(如Red Hat Enterprise Linux、CentOS、Fedora的早期版本)。它允许用户通过简单的菜单界面配置系统键盘布局。
kbdconfig [选项]
| 选项 | 说明 |
|---|---|
--back |
在对话框中显示后退按钮 |
--test |
测试模式,不实际修改配置 |
--help |
显示帮助信息 |
--nontp |
非交互模式 |
| 系统版本 | 推荐工具 | 说明 |
|---|---|---|
| RHEL/CentOS 7+ | localectl |
Systemd的本地化控制工具 |
| RHEL/CentOS 6+ | system-config-keyboard |
图形化键盘配置工具 |
| 所有现代发行版 | setup |
系统配置工具(包含键盘配置) |
| Debian/Ubuntu | dpkg-reconfigure keyboard-configuration |
重新配置键盘布局 |
启动kbdconfig的交互式配置界面:
# 以root用户运行kbdconfig
kbdconfig
# 或者使用sudo
sudo kbdconfig
运行命令后,会显示一个文本菜单界面,用户可以使用键盘方向键选择不同的键盘布局。
在脚本中使用非交互模式:
# 非交互模式运行
kbdconfig --nontp
# 通常需要配合其他命令或重定向
echo "us" | kbdconfig --nontp
测试配置而不实际修改系统:
# 测试模式运行
kbdconfig --test
# 这将显示配置过程但不会实际更改系统设置
# 查看当前键盘设置
localectl status
# 查看可用的键盘布局
localectl list-keymaps
# 设置键盘布局为美式英语
localectl set-keymap us
# 设置键盘布局为中文(简体)
localectl set-keymap cn
# 同时设置键盘布局和模型
localectl set-x11-keymap us pc105
# 安装工具(如果需要)
yum install system-config-keyboard # RHEL/CentOS
dnf install system-config-keyboard # Fedora
# 运行图形化键盘配置
system-config-keyboard
# 文本模式运行
system-config-keyboard --text
# 运行setup工具
setup
# 在菜单中选择"Keyboard configuration"
# 或者直接运行键盘配置部分
system-config-keyboard
# 查看当前键盘配置
cat /etc/sysconfig/keyboard
cat /etc/vconsole.conf
# 编辑键盘配置文件(RHEL/CentOS 7+)
vi /etc/vconsole.conf
# 添加或修改以下内容:
# KEYMAP="us"
# FONT="lat0-sun16"
# 编辑键盘配置文件(旧版系统)
vi /etc/sysconfig/keyboard
# 修改KEYTABLE配置:
# KEYTABLE="us"
# 立即应用配置(对于控制台)
loadkeys us
| 布局代码 | 说明 | 适用地区 |
|---|---|---|
us |
美式英语键盘 | 美国、加拿大 |
uk |
英式英语键盘 | 英国 |
fr |
法语键盘 | 法国 |
de |
德语键盘 | 德国 |
es |
西班牙语键盘 | 西班牙 |
it |
意大利语键盘 | 意大利 |
jp |
日语键盘 | 日本 |
cn |
中文键盘 | 中国 |
ru |
俄语键盘 | 俄罗斯 |
#!/bin/bash
# 系统安装后自动配置键盘布局
echo "=== 自动配置键盘布局 ==="
# 检测当前系统版本
if [ -f /etc/redhat-release ]; then
echo "检测到Red Hat系列系统"
# 检查系统版本
RH_VERSION=$(rpm -q --queryformat '%{VERSION}' centos-release 2>/dev/null || \
rpm -q --queryformat '%{VERSION}' redhat-release 2>/dev/null || \
echo "unknown")
case $RH_VERSION in
5|6)
echo "使用传统kbdconfig工具"
# 设置美式键盘
kbdconfig --nontp <<< "us"
;;
7|8)
echo "使用localectl工具"
# 设置键盘布局
localectl set-keymap us
localectl set-x11-keymap us
;;
*)
echo "使用system-config-keyboard"
system-config-keyboard --text <<< "us"
;;
esac
elif [ -f /etc/debian_version ]; then
echo "检测到Debian系列系统"
# 重新配置键盘
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/layoutcode string us"
dpkg-reconfigure -f noninteractive keyboard-configuration
else
echo "未知系统,尝试通用方法"
# 尝试加载美式键盘
loadkeys us 2>/dev/null || echo "loadkeys命令失败"
fi
echo "键盘配置完成"
#!/bin/bash
# 服务器键盘配置脚本(无图形界面)
echo "=== 服务器键盘配置 ==="
# 只配置控制台键盘,不配置X11
CONSOLE_KEYMAP="us"
# 检查并设置控制台键盘
if command -v localectl >/dev/null 2>&1; then
echo "使用localectl配置控制台键盘"
localectl set-keymap $CONSOLE_KEYMAP
# 验证配置
CURRENT_KEYMAP=$(localectl status | grep "Keymap:" | awk '{print $2}')
echo "当前键盘布局: $CURRENT_KEYMAP"
elif [ -f /etc/vconsole.conf ]; then
echo "配置/etc/vconsole.conf"
if grep -q "^KEYMAP=" /etc/vconsole.conf; then
sed -i "s/^KEYMAP=.*/KEYMAP=\"$CONSOLE_KEYMAP\"/" /etc/vconsole.conf
else
echo "KEYMAP=\"$CONSOLE_KEYMAP\"" >> /etc/vconsole.conf
fi
# 立即生效
loadkeys $CONSOLE_KEYMAP
elif [ -f /etc/sysconfig/keyboard ]; then
echo "配置/etc/sysconfig/keyboard"
if grep -q "^KEYTABLE=" /etc/sysconfig/keyboard; then
sed -i "s/^KEYTABLE=.*/KEYTABLE=\"$CONSOLE_KEYMAP\"/" /etc/sysconfig/keyboard
else
echo "KEYTABLE=\"$CONSOLE_KEYMAP\"" >> /etc/sysconfig/keyboard
fi
fi
echo "服务器键盘配置完成"
echo "注意:此配置仅影响文本控制台,不影响SSH连接"
#!/bin/bash
# 多语言键盘切换脚本
echo "=== 多语言键盘切换 ==="
# 可用键盘布局列表
declare -A KEYBOARD_LAYOUTS=(
["en"]="us"
["fr"]="fr"
["de"]="de"
["es"]="es"
["zh"]="cn"
["jp"]="jp"
["ru"]="ru"
)
# 显示菜单
echo "请选择键盘布局:"
echo "1. 英语 (en)"
echo "2. 法语 (fr)"
echo "3. 德语 (de)"
echo "4. 西班牙语 (es)"
echo "5. 中文 (zh)"
echo "6. 日语 (jp)"
echo "7. 俄语 (ru)"
echo -n "请输入选择 (1-7): "
read CHOICE
case $CHOICE in
1) LANG="en" ;;
2) LANG="fr" ;;
3) LANG="de" ;;
4) LANG="es" ;;
5) LANG="zh" ;;
6) LANG="jp" ;;
7) LANG="ru" ;;
*)
echo "无效选择,使用默认英语布局"
LANG="en"
;;
esac
KEYMAP=${KEYBOARD_LAYOUTS[$LANG]}
echo "正在设置键盘布局为: $LANG ($KEYMAP)"
# 设置键盘布局
if command -v localectl >/dev/null 2>&1; then
localectl set-keymap $KEYMAP
echo "使用localectl设置完成"
elif command -v loadkeys >/dev/null 2>&1; then
loadkeys $KEYMAP
echo "使用loadkeys设置完成"
else
echo "错误:未找到键盘配置工具"
exit 1
fi
echo "键盘布局已切换为 $LANG"
A: kbdconfig命令主要存在于Red Hat系列Linux的旧版本中。现代系统通常使用其他工具:
localectl命令dpkg-reconfigure keyboard-configuration/etc/vconsole.conf或/etc/default/keyboard# 检查系统版本
cat /etc/os-release
# 尝试安装kbdconfig(可能不可用)
yum install kbdconfig # RHEL/CentOS
dnf install kbdconfig # Fedora
A: 根据系统不同,有以下几种方法:
# 方法1:使用localectl(Systemd系统)
localectl set-keymap us
localectl set-x11-keymap us
# 方法2:编辑配置文件
# RHEL/CentOS 7+:
echo 'KEYMAP="us"' > /etc/vconsole.conf
# Debian/Ubuntu:
sed -i 's/XKBLAYOUT=.*/XKBLAYOUT="us"/' /etc/default/keyboard
# 方法3:使用系统配置工具
system-config-keyboard --text <<< "us"
# 方法4:重新配置(Debian/Ubuntu)
dpkg-reconfigure keyboard-configuration
A: 键盘布局配置主要影响本地控制台和X11图形界面。对于SSH连接:
要确保SSH会话中的正确输入,应在客户端配置正确的键盘布局。
A: 使用loadkeys命令可以临时更改键盘布局:
# 临时切换到美式键盘
loadkeys us
# 临时切换到法语键盘
loadkeys fr
# 临时切换到德语键盘
loadkeys de
# 查看当前加载的键盘映射
dumpkeys
# 恢复默认键盘布局
# 重启或重新加载默认配置
loadkeys -d # 加载默认键盘映射
# 测试特殊布局
loadkeys dvorak # Dvorak布局
loadkeys colemak # Colemak布局
注意:loadkeys的更改在重启后会失效,要永久更改需要修改配置文件。
kbdconfig命令是Red Hat Linux早期版本中的键盘配置工具,具有以下特点:
localectl命令取代虽然kbdconfig在现代系统中已不常用,但了解它有助于理解Linux键盘配置的发展历程。
localectl、system-config-keyboard或setup/etc/vconsole.conf/etc/sysconfig/keyboard/etc/default/keyboardloadkeys命令临时测试键盘布局| 工具 | 系统版本 | 界面 | 推荐度 |
|---|---|---|---|
kbdconfig |
RHEL/CentOS 5-6 | 文本交互 | 已过时 |
localectl |
RHEL/CentOS 7+ | 命令行 | 推荐 |
system-config-keyboard |
RHEL/CentOS 6+ | 图形/文本 | 可选 |
setup |
RHEL/CentOS 所有版本 | 文本交互 | 可选 |
dpkg-reconfigure |
Debian/Ubuntu | 交互式 | 推荐 |