我想更改虚拟终端(例如 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']