添加自定义 setxkbmap 选项

添加自定义 setxkbmap 选项

使用 setxkbmap 交换 Left Shift 和 Left Control描述如何与 xkbcomp 交换一些修饰键。但是,我只想添加自定义 setxkbmap 选项,而不是使用具有完整布局定义的 xkbcomp。与 类似setxkbmap -option local:swap_lwin_lctrl,我想交换右 win 和右控制,而不修改 /usr/share/X11/xkb 中的现有文件(这将在软件包升级时被覆盖)。

答案1

我有同样的问题。从文档中,人们可以猜测正确的语法是这样的:

$ setxkbmap -I$HOME/.config/xkb -option mine:accent

注意:~不适用于该-I选项

〜/.config/xkb/symbols/azerty_altgr

partial default
xkb_symbols "accent" {
    include "level3(ralt_switch)"
    key <AE02>  { [  NoSymbol, NoSymbol, eacute,      NoSymbol ] };
    key <AE07>  { [  NoSymbol, NoSymbol, egrave,      NoSymbol ] };
    key <AE09>  { [  NoSymbol, NoSymbol, asciicircum, NoSymbol ] };
    key <AE10>  { [  NoSymbol, NoSymbol, agrave,      NoSymbol ] };
};

或您拥有的任何符号文件

〜/.config/xkb/rules/evdev

! option        =   symbols
  mine:accent   =   +azerty_altgr(accent)

不幸的是,它不起作用。


我找到的唯一解决方案如下:使用上述相同的文件。使用设置所有本机选项setxkbmap -option caps:swapescape,whatever。然后 :

$ setxkbmap -print > tempfile.txt

并编辑tempfile.txt以在行中添加您的自定义选项xkb_symbols

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+fr:2+inet(evdev)+capslock(swapescape)+azerty_altgr(accent)"  };
    xkb_geometry  { include "pc(pc104)" };
};

最后:

xkbcomp -I$HOME/.config/xkb tempfile.txt $DISPLAY

它可以推广到任意数量的选项。根据以下规定,该解决方案已被弃用Archlinux 维基

相关内容