X11:某些应用程序误解 xkb 键映射

X11:某些应用程序误解 xkb 键映射

我想按以下方式重新映射我的键:ctrl+j/k->left/rightctrl+h/l-> ctrl+left/right。所以我得到了默认xkb文件并将以下内容添加到其中。

首先,我定义了一个新类型:

type "newType" {
    modifiers= Shift+Control+Lock;
    map[Shift]= Level2;
    map[Lock]= Level2;
    map[Control]= Level3;
    map[Control+Lock]= Level3;
    level_name[Level1]= "Base";
    level_name[Level2]= "Shift";
    level_name[Level3]= "Control";
};

然后我重新定义keysymh/j/k/l

    key <AC06> {
    type= "SimonCtrlMap",
    symbols[Group1]= [               h,               H,            Left ],
    actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<LEFT>) ]
};
key <AC07> {
    type= "SimonCtrlMap",
    symbols[Group1]= [               j,               J,            Left ],
    actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<LEFT>, clearmods=Control) ]
};
key <AC08> {
    type= "SimonCtrlMap",
    symbols[Group1]= [               k,               K,            Right ],
    actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<RGHT>, clearmods=Control) ]
};
key <AC09> {
    type= "SimonCtrlMap",
    symbols[Group1]= [               l,               L,            Right ],
    actions[Group1]= [      NoAction(),      NoAction(),   RedirectKey(keycode=<RGHT>) ]
};

然后我用 加载新xkb文件xkbcomp,键映射适用于我的大多数应用程序,例如firefox, gnome-terminal, gedit。然而,在某些应用程序中,键映射不起作用。

例如,在 中vnc-viewer,如果我按ctrl+j/k,它将被识别为ctrl+left/right, 而不是left/right

最令人费解的现象是nautilus,默认的文件浏览器为gnome,如果我按下l,它就会被识别为ctrl+l

谁能给我一个修复它的建议?我已经看到了链接中提到的multi-group方法和方法overlayhttps://superuser.com/questions/801611/how-to-make-all-applications-respect-my-modified-xkb-layout?newreg=4416b0444d2949079d57d2848f86452a。我不想使用multi-group方法,因为ctrl除了我的键映射之外还扮演一些其他角色。而且这个overlay方法并不能解决我的问题。

相关内容