在xkb中重新映射Caps Lock和Shift + Caps Lock


13

我正在尝试配置xkb,以使Caps Lock映射到Compose键,而Shift + Caps Lock功能作为传统的Caps Lock。我将以下内容放入一个名为的新文件中/usr/share/X11/xkb/symbols/gdwatson

partial modifier keys
xkb_symbols "compose" {
    key <CAPS> {
        type[Group1] = "TWO_LEVEL",
        symbols[Group1] = [ Multi_key, Caps_Lock ]
    };
};

然后我跑了setxkbmap -symbols 'pc+us+gdwatson(compose)',成功完成了。Caps Lock用作Compose,但是Shift + Caps Lock用作Compose而不是Caps Lock。 xkbcomp :0.0显示以下内容:

key <CAPS> {
    type= "TWO_LEVEL",
    symbols[Group1]= [       Multi_key,       Multi_key ]
};

第二级符号映射由于某种原因正在复制第一级符号映射,而不是我尝试赋予它的单独值。有人有足够强大的xkb-fu来告诉我我做错了什么或如何解决吗?


1
我可以在Xmodmap中帮助您,但不能在xkb中做到这一点。如果您要这样做@mirabilos,请在评论中做出肯定的回答(不要忘了在回复中写出来,这样我会注意到它),然后我将删除此评论并将其写为答案(然后您还应删除评论响应)。
mirabilos

1
在您的第一行中,partial modifier keys实际上应该是partial modifier_keys?没有此更改,setxkbmap -symbols 'pc+us+gdwatson(compose)'实际上退出时会出错,但是有了更改,我从获得了所需的输出xkbcomp :0.0但是,我得到了不希望有的副作用,即同时按下Capslock会使我进入Capslock模式和撰写键模式。
billyjmc 2014年

Answers:


11

这似乎可以完成您想要的。

partial modifier_keys
xkb_symbols "compose" {
    key <CAPS> {
        type[Group1] = "TWO_LEVEL",
        symbols[Group1] = [ Multi_key, Caps_Lock ],
        actions[Group1] = [ NoAction(), LockMods(modifiers=Lock) ]
    };
};

在处理XKB时,以下资源非常宝贵(我已链接到这些页面的WayBack Machine镜像,以便将来进行验证):


此外,如果您输入第一行default partial modifier_keys,则不必显式指定setxkbmap -symbols 'pc+us+gdwatson(compose)',您只需做一下即可setxkbmap -symbols 'pc+us+gdwatson'
billyjmc 2014年
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.