使用 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 维基。