如何在X11中将Caps Lock更改为Qwerty Lock?

时间:2014-01-02 00:31:03

标签: x11

我用dvorak键盘布局输入。如果我可以将CapsLock(我从未使用过)改为QwertyLock,那将会很方便。使用xkbcomp,我能够获得几乎可以工作的xkb文件:

type "QWERTYCAPS" {
  modifiers= Shift+Lock;
  map[Shift]= Level2;
  map[Lock]= Level3;
  map[Shift+Lock]= Level4;
  level_name[Level1]= "Base";
  level_name[Level2]= "Caps";
  level_name[Level3]= "Qwerty";
  level_name[Level4]= "QwertyCaps";
};
...
key <AC01> {
  type= "QWERTYCAPS",
  symbols[Group1]= [ a, A, a, A ]
};
key <AC02> {
  type= "QWERTYCAPS",
  symbols[Group1]= [ o, O, s, S ]
};

除了两个字母'a'和'm'之外,它的作用是有效的,它们在qwerty和dvorak中处于相同的位置。显然,xkb中有一些特殊的魔法可以改变解释,如果有和没有CapsLock的字母相同。 所以,尽管我问了,但我得到了:

Mod normal, shift, caps, shift+caps
Ask a, A, a, A
Got a, A, A, A

因此,尽管要求小写,但CapsLock案例是大写的。实际上,更改普通或大写字母的字母会使其提供所请求的字符。

有没有办法覆盖这种行为,所以我得到一个小写的'a'?如果做不到,那么正确的做法是什么?我看到有团体,所以我可以制作qwerty group2。但是,我必须将CapsLock更改为GroupLock。我作为一个实验进行了简单的尝试,但它没有用,并且CapsLock指示灯也没有打开。

那么,获得QwertyLock的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

setxkbmap -layout us,us -variant ,dvorak -option grp:caps_toggle

或配置文件中的相同内容(/etc/X11/xorg.conf.d/10-keyboard.conf):

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,us"
        Option "XkbModel" "pc104"
        Option "XkbVariant" ",dvorak"
        Option "XkbOptions" "grp:caps_toggle"
EndSection