Why are some of the setxkbmap options being ignored?
in share / X11 / xkb / rules / evdev / lst, I find this set of options for ctrl
ctrl Ctrl key position
ctrl:nocaps Caps Lock as Ctrl
ctrl:lctrl_meta Left Ctrl as Meta
ctrl:swapcaps Swap Ctrl and Caps Lock
ctrl:ac_ctrl At left of 'A'
ctrl:aa_ctrl At bottom left
ctrl:rctrl_ralt Right Ctrl as Right Alt
ctrl:menu_rctrl Menu as Right Ctrl
ctrl:ctrl_ralt Right Alt as Right Ctrl
ctrl:swap_lalt_lctl Swap Left Alt key with Left Ctrl key
ctrl:swap_lwin_lctl Swap Left Win key with Left Ctrl key
ctrl:swap_lalt_lctl_lwin Left Alt as Ctrl, Left Ctrl as Win, Left Win as Alt
Some of them work - if I run setxkbmap -option -option 'ctrl:nocaps'
I get the correct behavior. However, some of them are ignored, for example setxkbmap -option -option 'ctrl:swap_lalt_lctl_lwin'
.
One observation I made is that ignored options are shown setxkbmap -query
but not setxkbmap -print
. Here is a demonstration of this behavior.
$ setxkbmap -option -option ctrl:nocaps
$ setxkbmap -query
rules: evdev
model: pc104
layout: us
variant: colemak
options: ctrl:nocaps
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us(colemak)+inet(evdev)+ctrl(nocaps)" };
xkb_geometry { include "pc(pc104)" };
};
$ setxkbmap -option -option ctrl:swap_lalt_lctl_lwin
$ setxkbmap -query
rules: evdev
model: pc104
layout: us
variant: colemak
options: ctrl:swap_lalt_lctl_lwin
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us(colemak)+inet(evdev)" };
xkb_geometry { include "pc(pc104)" };
};
I don't know how to dig deeper into this. Additional information on the environment
- Linux distribution is NixOs
- window manager is XMonad, display manager is SLiM, desktop manager
- keyboard layout - colemak (problem persists if i switch to qwerty)
- setxkbmap version 1.3.0 according to the man page
source to share
it looks like not all of the parameters listed in the evdev.lst file are also in the adjacent evdev file. I asked the following question regarding why this is happening in why is the evdev file in / usr / share / X 11 / xkb / rules not the same as evdev.lst?
source to share