Debian 和console-setup

Debian 和console-setup

注意:我大约一个月前在超级用户中问过这个问题,但直到那时还没有回复,并且该问题与linux有关,所以我将其发布在这里。

我想交换键盘上的 esc 和 caps_lock 键。setxkbmap -option caps:swapescape完成工作,但仅限于 X。按键在虚拟控制台上以原始方式运行。我怎样才能让它们在 vc 上以所需的方式运行?

答案1

Debian 和console-setup

在 Debian Linux 和 Debian FreeBSD 上,设计是让 X 服务器和内核虚拟终端共享一组配置信息。该console-setup软件包提供了工具和启动脚本,用于获取 X 服务器的键盘/字体配置,对其进行转换,并使用它来配置内核虚拟终端。

具体来说:该console-setup服务调用该setupcon --save命令,该命令生成包含/etc/console-setup转换后的键盘和字体设置指令的脚本,这些脚本根据 udev 规则针对内核虚拟终端设备运行。键盘映射从 XKB 转换为loadkeysformat by ckbcomp,并运行从 udev 规则调用的生成脚本loadkeys

因此,在 Debian Linux 和 Debian FreeBSD 上,您需要确保您的XKBMODEL,,,变量在.特别是在您的情况下,您需要确保变量具有.然后您需要确保已正确安装该软件包。XKBLAYOUTXKBVARIANTXKBOPTIONS/etc/default/keyboardXKBOPTIONScaps:swapescapeconsole-setup

Linux系统

在 systemd 操作系统上,集成度比 Debian 稍差。有一个名为 的配置文件/etc/vconsole.conf和一个在系统引导时处理该文件的服务systemd-vconsole-setup.service(响应宣布内核虚拟终端子系统存在的 udev 规则)。但这根本不与 X 服务器配置结合起来。

vconsole.conf文件有一个KEYMAP表示传递给的键盘映射的设置loadkeys,这也不需要显式地运行自己。但这完全取决于你创建一个(定制的)键盘映射来交换Caps LockEscape并将其放在loadkeys可以找到它的地方。

为了获得更多联合设置,必须涉及另外两项服务systemd-localed和桌面总线。一个人跑步,比如说,

localectl set-x11-keymap pl pc105 "" "caps:swapescape"
并且区域设置 D-BUS 服务会/etc/vconsole.conf根据其最佳猜测进行重写最接近的等价物内核虚拟终端的映射。这个最接近的等价物可能不是确切地不过,您可能会发现它完全忽略了选项等。

当然,您也可以手动使用 Debianckbcomp直接转换 XKB 键盘映射。 ☺

进一步阅读

答案2

使用loadkeys

要交换EscCaps Lock在控制台中,运行

printf 'keycode 1 = Caps_Lock Caps_Lock\nkeycode 58 = Escape Escape\n' | sudo loadkeys -

相关内容