CapsLock Remap Howto

Revision as of 16:56, 5 August 2006 by Root (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Basically you need to remap keycode 58 from "Caps_Lock" to "Control" in your keymap file, then load the keymap using loadkeys. The keymap files are stored in different places depending on your version of Linux. Usually I do a locate for "defkeymap".

The keyboard maps in Ubuntu are stored here:


On Red Hat Enterprise 4 this file is stored here:


The following script takes care of this for Ubuntu Linux:

echo "transmogrify the Caps_Lock key into another Control key"
gunzip /usr/share/keymaps/i386/qwerty/defkeymap.kmap.gz
sed -i -e "s/Caps_Lock/Control/" /usr/share/keymaps/i386/qwerty/defkeymap.kmap
gzip /usr/share/keymaps/i386/qwerty/defkeymap.kmap
loadkeys -d

These settings are not permanent. I add this to my .bashrc file. This is a bit overkill since it will run this everytime I start a shell.

case "$TERM" in
    # X terminals
    if [ -f ~/.xmodmap ]; then
        xmodmap -quiet ~/.xmodmap 2>/dev/null
    # console
    LK=`which loadkeys 2>/dev/null`
    if [ -x "$$LK" ]; then
        loadkeys -d

When running XWindows you need to modify the X11 map using xmodmap. It is not sufficient to just modify the console keyboard mapping. .xmodmap file:

remove Lock = Caps_Lock
keycode 0x42 = Control_L
add Control = Control_L