在 Ubuntu 17 上的虚拟控制台中将 caps-lock 更改为 control

在 Ubuntu 17 上的虚拟控制台中将 caps-lock 更改为 control

我想更改虚拟终端(例如 tty CtrlAltF3)中的 Caps Lock 行为,使其充当 Control 修饰符。理想情况下,我还希望它在单独按下时充当 Esc 键,但事实证明,仅获取 Control 行为很困难。

我正在运行 Ubuntu 17.04。我阅读并尝试了多种方法来进行此更改,但似乎没有一种方法适用于我的系统。我感觉 systemd 在其中发挥了作用,但具体细节尚不清楚。

我写了一个文件,caps_control.kmap将大写字母映射到控制上,

keymaps 0-255
keycode  58 = Control

如果我loadkeys caps_control.kmap从虚拟控制台运行,它就可以工作。现在我想让它在启动/登录/其他时候自动加载...

我找到了使用来/etc/rc.local执行此操作的参考,但我的系统没有这样的文件,尽管它确实有几个目录,如/etc/rc0.d/,,/etc/rc1.d/...

听起来,既然 Ubuntu 17 使用 sytemd,我应该用它localectl来管理这类事情,但我不清楚如何做到这一点。例如,

$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
$ localectl list-keymaps
Couldn't find any console keymaps.

localectl提及的手册页/etc/locale.conf/etc/vconsole.conf,我的系统上都不存在。

我完全不知所措。有人能给我指明正确的方向吗?

答案1

要将 Caps Lock 变成额外的 Ctrl 修饰键(在 tty 控制台中也有效),请打开/etc/default/keyboard进行编辑并设置:

XKBOPTIONS=ctrl:nocaps

如果已XKBOPTIONS设置,ctrl:nocaps请使用逗号作为分隔符附加到其现有值,例如:

XKBOPTIONS="terminate:ctrl_alt_bksp,ctrl:nocaps"

应在下次重启或发出setupcon命令后生效。

运行时应该存在该选项localectl status

$ localectl status | grep caps
     X11 Options: ctrl:nocaps

在 X 会话中,验证其是否已设置的另一种方法是:

$ gsettings get org.gnome.desktop.input-sources xkb-options
['ctrl:nocaps']

相关内容