我想将AltGr+绑定W到æ
,以及其他一些组合,该怎么做?我还需要AltGr+ Shift+W来Æ
。
我通常setxkbmap
用来更改键盘映射。
您可以使用自定义XKB映射来实现这一点。我建议您使用来转储当前地图xkbcomp $DISPLAY dump.xkb
,对其进行编辑并使用进行加载xkbcomp newmap.xkb $DISPLAY
。转储文件很大,并且包含很多多余的信息。
进行编辑的最简单方法是查找altgr在当前地图中的使用方式。通常是ISO_LEVEL3修饰符。如果您当前的键盘映射不使用altgr,则可以尝试加载一个键盘映射来查看如何完成。例如,-layout us -variant altgr-intl
范围很广,并且绑定了大多数(如果不是全部)欧洲密钥。以下是正在发生的事情的简短入门。
xkb从内核获取键码,为每个键码设置一个标签,并使用该标签和修饰键来决定应输出的键符。每个键都有一个分配给它的类型,该类型定义了期望的修饰键以及每种组合的输出。查看您得到的转储xkbcomp
:标签在中定义xkb_keycodes
,类型在中xkb_types
,标签到键符号在中xkb_symbols
。其中xkb_symbols
一个是您要编辑的,另两个是参考的,以了解要更改的内容。您也可以仅查看xkb_symbols
并查找其当前工作方式,并根据需要进行修改。
xkb_types
部分为键定义保留了不同的修饰符级别,您将需要一个具有altgr和shift模式的修饰符级别。例子:
type "FOUR_LEVEL_ALPHABETIC" {
modifiers= Shift+Lock+LevelThree;
map[Shift]= Level2;
map[Lock]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Lock+LevelThree]= Level4;
map[Shift+Lock+LevelThree]= Level3;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
level_name[Level4]= "Shift Alt";
};
这意味着标记为的键FOUR_LEVEL_ALPHABETIC
具有四种模式。正常,移位/大写,altgr,altgr-shift听起来像您要找的东西。
现在,如果您还不知道w的键码,则想知道它是什么。xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
为您提供您按的键的键代码。grep
在那里使输出更具可读性。
将您之前获得的密钥代码与xkb_keycodes
转储映射部分中的内容进行交叉引用。对我来说,w给出了键码25。less
转储并找到了正确的键码<LABEL> = ##;
,例如example <AD02> = 25;
。或者cat dump.xkb| grep ' = 25;'
Label只是xkb在后面的部分中用来引用密钥的名称。
有了标签后,转到xkb_symbols
将标签实际映射到键符的位置。格式是
key <AD02> {
type= "FOUR_LEVEL_ALPHABETIC",
symbols[Group1]= [ w, W, aring, Aring ]
};
type=
是您在本xkb_types
节中想要的类型,symbols[Group1]=
对于该类型所需的每种模式都有一个键符号。同样,这种类型的normal,shift / caps,altgr,shift-altgr也是如此。[Group1]
,据我所知,这是一种使用多个键映射的方法,您可以通过设置的锁定键即时更改。我自己不使用组,所以对我来说一切都是group1。
要找到您可以在此处使用的所有不同的键盘符号,请选中/usr/include/X11/keysymdef.h
。您要查找的两个符号分别ae
是æ和AE
Æ。
key <AD02> {
type= "FOUR_LEVEL_ALPHABETIC",
symbols[Group1]= [ w, W, ae, AE ]
};
我可能已经漫步了一下。在XKB上查看Arch Wiki的页面,无论您使用什么操作系统或发行版,它都是好东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句