更改大写锁定以在Ubuntu 17上的虚拟控制台中进行控制


10

我想更改虚拟终端(例如tty CtrlAltF3)中的Caps Lock行为,使其充当Control修改器。理想情况下,我也希望它在单独按下时充当Escape,但事实证明,仅获得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在我的系统上都不存在。

我完全茫然。谁能指出我正确的方向?


您是否需要此更改才能对所有用户或您自己的用户都有效?
acer

@acer两种方式都适合我,因为我确实是这台机器上的唯一用户。
伊凡

嗯...您在〜/ .profile中添加一行,loadkeys caps_control.kmap该行将在您登录时执行
acer

@acer loadkeys从〜/ .profile 调用似乎有问题。登录时出现错误消息“无法获取引用控制台的文件描述符”。
伊凡(Ivan)

Answers:


11

要将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']

1
另一个XKB选项是"ctrl:nocaps"。在X中,区别是微妙的:使用该ctrl选项,xev并且Control_L按下CapsLock键时,其他工具将看到一个符号,而该caps选项仍将显示键盘符号Caps_Lock。我不确定这种差异是否会转化为虚拟控制台的键盘映射。
quixotic

@quixotic:感谢提及ctrl:nocaps。我将其添加到我的答案中。
Gunnar Hjalmarsson

知道为什么这对我不起作用吗?实际上,这是我尝试的第一件事,而且我喜欢这种方法。不幸的是,它对我的​​系统没有影响。
伊凡(Ivan)

1
@ivan:我刚刚进行了自我测试,发现我的第一个建议(caps:ctrl_modifier)在tty中无效。但是,对我来说(17.10)ctrl:nocaps。请查看我编辑的答案。
Gunnar Hjalmarsson

1
@GunnarHjalmarsson我不太熟悉debian / ubuntu将XKB地图转换为控制台地图的方法(ckbcomp我认为这涉及其中)。我不记得caps:ctrl_modifier您最初提到的选项,因此将其与ctrl:nocaps我通常使用的选项进行比较,并认为其中的区别可能值得一提。很高兴这很有帮助。
quixotic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.