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

2 Answers 2


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.

  • Thanks for your answer, but this still doesn't helps me. After doing this caps lock and escape buttons works in a similar way: both simultaneously switches caps lock mode and works like escape.
    – simplylizz
    Oct 29, 2012 at 11:47
  • @simplylizz Ok- I'm still trying to find a solution for it.
    – user76204
    Oct 29, 2012 at 11:48
  • Thanks. As for me I think that the root of problem is in mixing xmodmap and setxkbd commands. Looks like they abandones effects of each other.
    – simplylizz
    Oct 29, 2012 at 11:51
  • @simplylizz Yes, I think that might be the problem.
    – user76204
    Oct 29, 2012 at 11:53
  • Thanks for your answers, just found valid answer after looked here: askubuntu.com/questions/94503/…
    – simplylizz
    Oct 29, 2012 at 12:21

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.

  • BTW, I use xmodmap to get german umlauts with my us layout. I defined 'AltGr' as Mode_switch and i.e. keycode 38 = a A adiaeresis Adiaeresis for typing ä using AltGr + a. For writing cyrillic this could be a bit straining though. Oct 27, 2012 at 21:34
  • Thanks for the answer, but after doing this I've got strange behaviour: Caps Lock button makes 2 actions - switches Caps mode and works as Escape. Also Escape buttin works like Caps Lock (in meaning of switching registers) but not switches layouts.
    – simplylizz
    Oct 28, 2012 at 15:26
  • Oh cool, after now trying it out myself i got the same... seems that caps lock is special somehow... grml Oct 28, 2012 at 15:28

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .