I prefer to swap caps lock as control key, as it better suites my requirement. I used localectl to add ''ctrl:swapcaps" to xkboptions. But, its only effective on the Login screen. After that, it seems to revert back to normal setup(without key swap).
Output of /etc/X11/xorg.conf.d/00-keyboard.conf:
[ruthra@localhost xorg.conf.d]$ cat 00-keyboard.conf
# Written by systemd-localed(8), read by systemd-localed and Xorg. It's
# probably wise not to edit this file manually. Use localectl(1) to
# instruct systemd-localed to update it.
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us"
Option "XkbOptions" "ctrl:swapcaps"
EndSection
does /usr/bin/setxkbmap -option "caps:swapescape" work after you’ve logged in?
If you’re running Gnome you could give gnome-tweaks a go. sudo dnf install gnome-tweaks
Run gnome tweaks, go to keyboard & mouse additional layout options
or gsettings set org.gnome.desktop.input-sources xkb-options '["caps:ctrl_modifier"]'
Gnome. Its a fresh install of Fedora 33. One thing i want to point out, the same xkboption works on another machine that runs Fedora 33 that was upgraded from 32.
/usr/bin/setxkbmap -option “caps:swapescape”
It appears that this config doesn’t survive a session.
[ruthra@localhost ~]$ /usr/bin/setxkbmap -option “caps:swapescape”
[ruthra@localhost ~]$ /usr/bin/setxkbmap -print -v 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev…
Trying to load rules file /usr/share/X11/xkb/rules/evdev…
Success.
Applied rules from evdev:
rules: evdev
model: pc105
layout: us
options: caps:swapescape
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us+inet(evdev)+capslock(swapescape)
geometry: pc(pc105)
xkb_keymap {
xkb_keycodes { include “evdev+aliases(qwerty)” };
xkb_types { include “complete” };
xkb_compat { include “complete” };
xkb_symbols { include “pc+us+inet(evdev)+capslock(swapescape)” };
xkb_geometry { include “pc(pc105)” };
};
Logged off. Key swap is ineffective on the login screen itself (tried rebooting as well with same results).
After login:
[ruthra@localhost ~]$ /usr/bin/setxkbmap -print -v 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev…
Trying to load rules file /usr/share/X11/xkb/rules/evdev…
Success.
Applied rules from evdev:
rules: evdev
model: pc105
layout: us
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us+inet(evdev)
geometry: pc(pc105)
xkb_keymap {
xkb_keycodes { include “evdev+aliases(qwerty)” };
xkb_types { include “complete” };
xkb_compat { include “complete” };
xkb_symbols { include “pc+us+inet(evdev)” };
xkb_geometry { include “pc(pc105)” };
};
So, I used localectl to set this option in /etc/X11/xorg.conf.d/00-keyboard.conf. Similar behaviour to swapcaps, only works on Login screen.
gsettings set org.gnome.desktop.input-sources xkb-options ‘[“caps:ctrl_modifier”]’