如何重新启用大写锁定键?

如何重新启用大写锁定键?

我目前正在设置默认键盘布局,如下所示:

setxkbmap -layout us -variant dvorak -option ctrl:nocaps,[...]

它禁用大写锁定键并使其成为附加的 ctrl 键以及大量其他选项。

我想执行以下操作来切换键盘布局:

setxkbmap -layout us -variant dvorak-l -option ctrl:swapcaps

但是,它不会重新启用大写锁定键;据我所知,左控制键和大写锁定键都保留为控制键。

我知道我可以清除整个选项列表,但为了可维护性,我宁愿不复制粘贴选项。如何重新启用大写锁定?

更新: 使用 xev(1) 查看按键,看起来 ctrl:nocapsControl_L为两个键都提供了 a ,而 ctrl:swapcaps “恢复”大写锁定键(按下该键给出Caps_Lock)。但是,大写锁定 LED 既不亮也不实际工作。

查看xkeyboard-config/symbols/ctrlX.org 源中的文件确实暗示了这个问题:

xkb_symbols "nocaps" {
    replace key <CAPS>  {  [ Control_L, Control_L ] };
    modifier_map  Control { <CAPS>, <LCTL> };
};
xkb_symbols "swapcaps" {
    replace key <CAPS>  {  [ Control_L ] };
    replace key <LCTL>  {  [ Caps_Lock ] };
};

后一个选项缺少modifier_map行,无论它做什么

答案1

以下命令应该有效:

xmodmap -e 'keycode 0x42 = Caps_Lock'

或者

setxkbmap -option

上面的命令可以很好地恢复默认行为,幸运的是,我几乎不需要它。

我通常使用以下命令将大写锁定重新映射到 Control(幸运的是 VI/VIM 支持 CTRL-C 而不是 ESC):

setxkbmap -option ctrl:nocaps -layout gb

答案2

尝试setxkbmap -option -layout us -variant dvorak-l -option ctrl:swapcaps

从联机帮助页:

[...] If you want to
replace all previously specified options, use the -option  flag
with an empty argument first.

讽刺的是,这里-option ctrl:swapcaps实际上覆盖了-option ctrl:nocaps——我猜行为改变了。

编辑:正如OP所说,他想要避免清除选项(如上述方式完成)。

/usr/share/X11/xkb/rules/xorg.lst显示选项ctrl:aa_ctrl(左下角的控件),它似乎在nocaps此处之后重置大写锁定。

我想这值得一试,您还可以查看列表 ( grep ctrl\:),看看是否还有其他可行的方法,以防万一这个不行。

如果没有这个选项,我想解决方案是通过再次将 Caps Lock 与 Caps Lock 键关联来破解当前的键盘映射(但我没有这方面的经验,除了相信有一个工具可以让你这样做与单行)。

答案3

有一个选项“caps:capslock”(映射到将“+capslock(capslock)”添加到 xkb_symbols)来启用大写锁定。

但是,添加了该选项(也许全部大写:xxxxx?)现有的 ctrl:xxxxx ;由于 ctrl:swapcaps 重新定义了 capslock 键,因此该选项无效。

因此,您绝对需要删除所有选项并实际放置您想要的选项;选项存在的方式不应该撤消前一个选项的操作,并且存在冲突的选项(例如,两个(或多个)重新调整同一键)您无法定义它们的顺序。

相关内容