How to permanently switch Caps Lock and Esc
Solution 1:
Another way to do this is through the dconf-editor
. This method has a few extra steps from gnome-tweak-tool
, but is useful if you don't want to pull in the dependencies from the tweak tool.
This will allow you to use the caps:swapescape
syntax and automatically make the change permanent.
sudo apt-get install dconf-tools
After starting the dconf-editor
, navigate to org >> gnome >> desktop >> input-sources
Add the options that you need in xkb-options
. The option strings are surrounded by single quotes and separated by commas. Be careful not to delete the brackets on the ends.
You can use this method to enter most of the traditional xkb options that are no longer available in System Settings >> Text Entry. The exception are the settings for switching the keyboard layouts, which currently do not work because of a bug.
For a list of the options and the syntax, use man 7 xkeyboard-config
in a terminal.
Another common option that could be used is terminate:ctrl_alt_bksp
to allow ctrl+alt+backspace to end the X-session.
Solution 2:
A solution that should work for most linux distros:
setxkbmap -option caps:swapescape
Other options are possible:
-
caps:none
to deactivate -
caps:escape
to make it an additional escape -
caps:super
to make it an additional super (windows) key.
To make this work at startup, you can put it in ~/.profile
as this will only run after the interactive login.
If the switch does not persist between logins (e.g. when suspending your machine) you can also create a .xinitrc
file in your home directory and put it there. Linux mint 20 on a laptop works impeccable with this option.
Solution 3:
Okay, found a way to do this using gnome-tweak-tool.
From a terminal, run
sudo apt-get install gnome-tweak-tool -y && gnome-tweak-tool
You can find an option to swap Caps Lock and Esc in "Typing -> Caps Lock key behavior".
Update: In Ubuntu 18.04 and 20.04 it can be found in Keyboard & Mouse > Additional Layout Options > Caps Lock Behavior (Thanks to Adracus's comment below)
Solution 4:
You can use xmodmap in terminal to swap Caps Lock with Esc:
xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock" #this will make Esc to act as Caps Lock
xmodmap -e "keycode 66 = Escape NoSymbol Escape" #this will make Caps Lock to act as Esc
To get this change for every session, after you have run the previous commands create a file called .xmodmap
with the new keymaps, using the following command:
xmodmap -pke > ~/.xmodmap
Then, create a file called .xinitrc
in your home directory, containing the following line/command:
xmodmap .xmodmap
Solution 5:
Similar to @Radu's answer, but compatible with 14.04 (see also this answer).
xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock"
xmodmap -e "keycode 66 = Escape NoSymbol Escape"
xmodmap -pke > ~/.xmodmap
If it does not work, replace:
xmodmap -e "remove Lock = Caps_Lock"
with:
xmodmap -e "clear Lock"