Linux: Keyboard Software Guide

By Xah Lee. Date: . Last updated: .

This page is a overview of how to create keyboard shortcuts, how to remap/swap keys, how to change keyboard layout.

In Linux, there are 2 steps to create keyboard shortcuts:

  1. Action: A shell command that does something, for example, switch/close window, simulate key press, mouse click, launch app, open file, empty trash.
  2. Bind Key: Make a key press run a shell command/script.

First, let's look at the easy way.

Basic of Keybinding Using Control Panel

The most easy way to add a new keyboard shortcut or keyboard layout, is the system control panel in a graphical user interface (available in any of the Gnome, KDE, Ubuntu, Xfce, LXDE). Under the system control panel (aka Setting Manager or System Preference), usually there are apps named Window Manager, or Keyboard, or Keyboard Layout.

xfce window manager keys setup  2013-06-07
xfce window manager keys setup

The window manager typically lets you set keys related to manipulating windows, system-wide, such as switching windows, close window, max/min window, move window, show/hide/iconify window, switch workspace (aka virtual screen), etc.

xfce keyboard setting panel 2013-06-01
xfce keyboard setting panel

The keyboard setting tool typically lets you set a key to launch app, or run a shell script. But it does not lets you swap keys, or set a key to send key combo such as 【Ctrl+s

Swapping Keys, Remap Keys


xmodmap is a simple tool that lets you remap/swap keys for apps running under X11.

〔►see Linux: xmodmap Tutorial

scancode, keycode, keysym

To work with keys in Linux X11, you must understand {scancode, keycode, keysym} because many key tools use their concept and syntax.

How find the scancode of a key?

〔►see Linux: Find Keyboard Key Scancode

How to find the keycode / keysym of a key?

〔►see Linux: X11 Keyboard Key Names

How to set system keyboard layout?

〔►see Linux: Set System Keyboard Layout

Tool to Bind Key


if your desktop doesn't provide a way to bind a key to launch a script, then you can use xbindkeys.

〔►see Linux: xbindkeys Tutorial

Tool for Key Actions

「wmctrl」 for Switch Windows

wmctrl is a command line tool to {switch, close, move, resize, set title, list, …} windows.

〔►see Linux: Add Keyboard Shortcut to Switch App

「xvkbd」 for Sending Keychords

xvkbd is a virtual keyboard for X window system. It is useful as a shell command to send keys.

see Linux: Set F2 F3 F4 to Cut Copy Paste

Linux: Control Sound Level by Command Line

Linux: Change Volume by Command


xdotool. «programatically simulate keyboard input and mouse activity. It does this using X11's XTEST extension and other Xlib functions.»

(note: i tried xdotool under Ubuntu/xfce. Doesn't work in my first 30 min of looking into it.)

#Install xdotool
 sudo apt-get install xdotool

Example. Send 【Ctrl+w】 to close tab.

xdotool key --delay 40 Control_L+w

Example. Click on upper left corner, (90, 10) pixels.

xdotool mousemove 90 10 click 1

「autokey」 for Expanding Abbreviations

AutoKey. For expanding abbrev to full words/text.

Install: sudo apt-get install autokey-gtk (for Gnome) or sudo apt-get install autokey-qt (for KDE)

(note: i haven't used AutoKey, and the project seems dead as of 2017-06-06.)

Other Keyboard Tools

Mouse Extra Button Tools

How to set 5 buttons mouse?

apt-get install imwheel for config mouse buttons.

Bind Keys in Emacs

See: Emacs Keybinding, Keyboard, Articles Index.


Linux utility to configure modifier keys to act as other keys when pressed and released on their own.

Linux Keybinding Topic

  1. Linux: Keyboard Software Guide
  2. Linux: Swap Control Alt Keys, xmodmap
  3. Linux: Set F2 F3 F4 to Cut Copy Paste
  4. Linux: Swap CapsLock Escape Keys
  5. Linux: Make CapsLock Do Home Key
  6. Linux: Setup Shift Lock Key
  7. Linux: Add Keyboard Shortcut to Switch App
  8. Linux: Set Key Repeat Rate
  9. Linux: Set System Keyboard Layout
  10. Linux: How to Switch to Dvorak Keyboard Layout
  11. Linux: Change Volume by Command
  12. Linux: xmodmap Tutorial
  13. Linux: xbindkeys Tutorial
  14. Linux: xvkbd tutorial
  15. Linux: Find Keyboard Key Scancode
  16. Linux: X11 Keyboard Key Names

Linux Desktop Topic

  1. Linux: How to Switch to LXDE, Xfce
  2. Linux: LXDE Keyboard Shortcuts
  3. Linux: LXDE/Openbox, Change Keyboard Shortcuts
  4. Linux: LXDE Set Key Repeat Rate
  5. Linux: LXDE/OpenBox, Disable Mouse Scroll Wheel Hide Window
  6. Linux: Xfce Keyboard Shortcuts
  7. Linux: Xfce Good Themes
  8. Linux: xmonad Keybinding
  9. Why Tiling Window Manager Sucks (xmonad, ratpoison, dwm, …)

  1. Linux: Set Default App
  2. Linux: Shell Commands for GUI Apps
  3. Linux: Image Viewers
  4. Linux: Move File to Trash by Command