我创建了 xkb 格式的自定义键盘布局来模拟箭头键并将其放入/usr/share/X11/xkb/symbols/custom
:
xkb_symbols {
name[Group1]= "English (US) with Caps mod";
key <ESC> { [ Escape, asciitilde, grave ] };
key <INS> { [ Insert, Insert, Caps_Lock ] };
key <TAB> { [ Tab, ISO_Left_Tab, Menu ] };
key <AC06> { [ h, H, Left ] };
key <AC07> { [ j, J, Down ] };
key <AC08> { [ k, K, Up ] };
key <AC09> { [ l, L, Right ] };
};
使用以下命令激活它后:
setxkbmap -layout custom -option lv3:caps_switch
它按预期工作,除了烦恼:虽然我可以使用Caps+{H,J,K,L}
模拟箭头键进行导航,但不可能将其与其他修饰符结合使用。
例如,组合Super+Caps+{H,J,K,L}
或Ctrl+Shift+Caps+{H,J,K,L}
) 不起作用,我必须使用常规箭头键。
有没有办法让它工作或者这是 xkb 的限制?
答案1
我无法让两个人使用该lv3:caps_switch
选项。只有在为大写字母定义单独的两级修饰符后,模拟箭头键才能与其他修饰符(例如 SUPER)一起使用。
我已经使用 de 布局作为基础,但它也应该与其他布局一起使用。这是我的新/usr/share/X11/xkb/symbols/custom
文件(setxkbmap -layout custom -variant 5layer
要激活):
default partial alphanumeric_keys xkb_symbols "5layer" {
include "de(basic)"
include "ansi_hybrid(caps_layer)"
include "ansi_hybrid(ralt_layers)"
};
partial modifier_keys xkb_symbols "caps_layer" {
// caps layer key definitions
replace key <CAPS> {
type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Overlay1_Enable, Overlay1_Enable ],
actions[Group1] = [ SetControls(controls=Overlay1),
SetControls(controls=Overlay1) ]
};
key <LatH> { Overlay1 = <LEFT> };
key <LatJ> { Overlay1 = <DOWN> };
key <LatK> { Overlay1 = <UP> };
key <LatL> { Overlay1 = <RGHT> };
};
partial modifier_keys xkb_symbols "ralt_layers" {
// base, shift, ralt, shift+ralt layers key definitions
key <CODE> { [ base, shift, ralt_base, ralt_shift_symbol ] };
};