Remap Keys in Linux

I'd like to switch my Ctrl and Alt keys under Linux (to make it more Mac-like). How do I do this?

If it helps, I'm running Ubuntu 9.04.


First off, try looking in Preferences > Keyboard > Layouts > Layout Options under the Alt/Win key behavior if there is a suitable option there for you.

If that doesn't do it for you, these xmodmap commands would switch left Ctrl with left Alt (at least with my keyboard).

xmodmap -e 'keycode 37 = Alt_L  ISO_Prev_Group ISO_Prev_Group NoSymbol ISO_Prev_Group' 
xmodmap -e 'keycode 64 = Control_L' 

To get your keycode, you can run the program xev in a terminal window and press first Ctrl and note the keycode, then Alt to get the keycode.


xmodmap - utility for modifying keymaps and pointer button mappings in X

showkey - examine the codes sent by the keyboard

setkeycodes - load kernel scancode-to-keycode mapping table entries


Do the following steps:

  1. Create a new file. Let's call it remap.txt.

  2. Add the following text to the file:

    !
    ! Swap Alt_L and Control_L
    !
    remove mod1 = Alt_L
    remove Control = Control_L
    keysym Control_L = Alt_L
    keysym Alt_L = Control_L
    add mod1 = Alt_L
    add Control = Control_L
    

    The above is like a script for xmodmap. It will change the current key bindings.

  3. Run the following commands to run the script:

    # xmodmap remap.txt
    
  4. (optional) To load the same settings after reboot run:

    # sudo dumpkeys > ~/.Xmodmap