6

I can only set separately: switching layouts on caps lock or swap escape and caps lock keys, but has no success in trying to do it simultaneously. The final variant I want is to get caps lock behavior like escape key and use escape key for layout switching.

I have tried something like this:

setxkbmap -option grp:switch,grp:caps_toggle,grp_led:caps,caps:swapescape us,ru
Mitch
  • 109,787
simplylizz
  • 63
  • 9

2 Answers2

4

You should be able to swap around the keys with xmodmap if you can't quite do it with setxkbmap. You need the remove Lock modifier for caps lock, as it is a 'special' key.

remove Lock = Caps_Lock
keycode 66 = Escape NoSymbol
keycode 9 = Caps_Lock ISO_Next_Group

You could place the above in your ~/.Xmodmap, which is still read at startup if the correct command is in your ~/.xinitrc, as I explain further in this answer:

However, you cannot easily mix the xmodmap and setxkbmap commands, as the latter cancels out changes made with the former, as we discussed in the comments.

To execute these xmodmap commands in the terminal to test them, you would run, for example,

xmodmap -e "remove Lock = Caps_Lock"

but you would only place remove Lock = Caps_Lock in your ~/.Xmodmap file, as I explain further in my above linked answer.

1

Use xmodmap to switch the keys.

You can write a file ... i.e. name it .switch_keys

keycode 9 = Caps_Lock
keycode 66 = Escape

This redefines the keycodes on my keyboard. Check with xev if your keyboard uses the same keycodes.

Save the file and install the modmap by running xmodmap .switch_keys. Do this after you configured the layout switching with setxkbmap.

After that your Escape key works as Caps Lock and vice versa.

Paul Hänsch
  • 3,237