Linux: Make CapsLock Do Home Key

By Xah Lee. Date: . Last updated: .

How to make CapsLock do Home Key on Linux?

Create a file at ~/.Xmodmap with the following content:

! 2017-02-08
! Linux: Make CapsLock Do Home Key

! keycode  66 = Caps_Lock NoSymbol Caps_Lock
! keycode 110 = Home NoSymbol Home

clear Lock
keycode 66 = Home NoSymbol Home

Now, run this line in terminal:

xmodmap ~/.Xmodmap

When you restart, that file will run automatically.

Note, xmodmap only works for X11 apps. If you are in Linux: Virtual Terminal , it won't work.

Here's how to change the key for console.

Change Key for Virtual Console

Written by 11fdriver, on 2018-12-18

Xmodmap does not work when Emacs is used in the console (accessed with Ctrl+Alt+F1 to Ctrl+Alt+F6 ) rather than X11. It's still reasonably simple to change.

Enter the keymap directory (see bottom of man loadkeys), and make a copy of your preferred keyboard layout. I use the Dvorak keyboard layout on Void Linux, so my commands are:

$ cd /usr/share/kbd/keymap/i386/dvorak/
# cp
# Emacs

Note: Debian and derivatives users may need to install the console-data package:

# apt-get install console-data
$ cd /usr/share/keymaps/i386/dvorak/
# cp dvorak.kmap.gz xah-fly.kmap.gz
# Emacs xah-fly.kmap.gz

The Caps_Lock key is usually bound to keycode 58, and Home to 102, but you should check these yourself using the showkey command.

Keymaps often already contain a Caps_Lock binding; just find replace Caps_Lock with Home . The Home key generally needs an extra line to change it to Caps_Lock:

keycode 102 = Caps_Lock !Note: End this file with a blank line.

Test out your new keymap with the loadkeys command:

# loadkeys

On most Linux distributions, load this keymap at boot by editing the relevant line in /etc/rc.conf to read:


Debian-based distributions instead require you to add this line to /etc/default/keyboard:


back to Linux: xmodmap Tutorial

Linux xmodmap keybinding