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


12

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

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

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

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

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

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

我知道我可以清除整个选项列表,但是出于可维护性的考虑,我宁愿不粘贴选项。如何重新启用大写锁定?

更新: 使用xev(1)查看按键时,似乎ctrl:nocaps Control_L为两个按键都提供了一个,而ctrl:swapcaps“恢复”了大写锁定键(按键给出了Caps_Lock)。但是,大写锁定LED不会点亮,也不会实际工作。

望着xkeyboard-config/symbols/ctrl在X.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 ] };
};

后面的选项缺少修饰符_map行,无论执行什么操作


我猜每个想帮助我的人都将键盘卡住
dvorak

4
X现在是如此古老和复杂,以至于没有多少人真正了解各种内部机制。手册页中甚至有几节说(我引用):“ 没人愿意说出它是如何工作的。也许没人知道... ”。我也很高兴看到这个问题的答案,但是可能是没人知道的情况……
jw013

Answers:


14

以下命令应该起作用:

xmodmap -e 'keycode 0x42 = Caps_Lock'

要么

setxkbmap -option

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

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

setxkbmap -option ctrl:nocaps -layout gb

清除设置的“ setxkbmap -option”正是我想要的。我一直在尝试更改自己的行为,但始终在选项列表中添加冲突的项目。
m0j0

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键相关联来破解当前的键盘图(但是我没有经验,除了认为有一种工具可以使您执行此操作)一线)。


确实确实清除了选项列表,但是我希望保留非大写字母相关的选项(如我在问题中所述),例如组合键。
hhaamu 2012年

哦,对不起,我看错了问题。我不确定这是否行得通(如我所述,swapcaps实际上在这里重新启用了大写锁定),但是从中/usr/share/X11/xkb/rules/xorg.lst,我看到有一个选项ctrl:aa_ctrl(左下角的控件),它似乎在nocaps此之后重置了大写锁定。
njsg 2012年

我认为魔术程序xmodmap不错,但是我不太确定如何使用它
hhaamu 2012年

0

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

但是,在现有的ctrl:xxxxx 之前添加了该选项(也许所有caps:xxxxx吗?);由于ctrl:swapcaps重新定义了capslock键,因此该选项无效。

因此,您绝对需要删除所有选项,然后实际放置所需的选项。选项存在的方式不应使它们撤销上一个操作,并且具有冲突的选项(例如,两个(或多个)重新定义相同的键),您不能定义其顺序。

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.