xkeysnail

xkeysnail is yet another keyboard remapping tool for X environment
written in Python. It's like xmodmap but allows more flexible
remappings.


Pros

1. Has high-level and flexible remapping mechanisms, such as
   per-application keybindings can be defined
2. multiple stroke keybindings can be defined such as Ctrl+x Ctrl+c
   to Ctrl+q
3. not only key remapping but arbitrary commands defined by Python
   can be bound to a key
4. Runs in low-level layer (evdev and uinput), making remapping work
   in almost all the places

Cons

1. Runs in root-mode (requires sudo)

The key remapping mechanism of xkeysnail is based on pykeymacs
