Go to file
2020-12-02 12:36:03 +01:00
bin moving the cursor with the gamepad 2020-11-30 19:40:17 +01:00
data support for linux kernel keycode constants 2020-11-30 16:22:17 +01:00
DEBIAN ubuntu fixes 2020-12-01 11:01:11 +01:00
keymapper tested mapping metadata saving and loading 2020-12-02 12:36:03 +01:00
readme fixed coverage badge 2020-12-02 00:14:02 +01:00
scripts fixed coverage badge 2020-12-02 00:14:02 +01:00
tests tested mapping metadata saving and loading 2020-12-02 12:36:03 +01:00
.coveragerc no .terminate anymore, proper multiprocessing coverage, some minor cleanup in injector 2020-12-01 23:53:32 +01:00
.gitignore deb packaging seems to work now 2020-11-29 17:32:31 +01:00
.pylintrc pylint 9.70 2020-11-22 21:41:29 +01:00
HISTORY.md update HISTORY.md 2020-11-29 12:49:22 +01:00
LICENSE outlined some stuff 2020-10-26 23:45:55 +01:00
MANIFEST.in more work on distribution 2020-11-29 13:55:37 +01:00
README.md no .terminate anymore, proper multiprocessing coverage, some minor cleanup in injector 2020-12-01 23:53:32 +01:00
setup.py setup.py dependencies 2020-11-29 14:19:32 +01:00

Key Mapper

A tool to change and program the mapping of your input device buttons.


Usage

To open the UI to modify the mappings, look into your applications menu and search for 'Key Mapper' in settings. You can also start it via key-mapper-gtk. It works with both Wayland and X11.

If stuff doesn't work, check the output of key-mapper-gtk -d and feel free to open up an issue here.

Macros

It is possible to write timed macros into the center column:

  • k(1).k(2) 1, 2
  • r(3, k(a).w(500)) a, a, a with 500ms pause
  • m(Control_L, k(a).k(x)) CTRL + a, CTRL + x

Documentation:

  • r repeats the execution of the second parameter
  • w waits in milliseconds
  • k writes a single keystroke
  • m holds a modifier while executing the second parameter
  • . executes two actions behind each other
Names

For a list of supported keystrokes and their names, check the output of xmodmap -pke

  • Alphanumeric a to z and 0 to 9
  • Modifiers Alt_L Control_L Control_R Shift_L Shift_R

If you can't find what you need, consult linux/input-event-codes.h

  • Mouse buttons BTN_LEFT BTN_RIGHT BTN_MIDDLE BTN_SIDE
  • Macro special keys KEY_MACRO1 KEY_MACRO2 ...

Installation

After your installation, independent of the method, you should add yourself to the input and plugdev groups so that you can read information from your devices. You have to start the application via sudo otherwise.

sudo usermod -a -G plugdev,input $USER
# log out and back in or restart, the two groups should be visible with:
groups
Git/pip
git clone https://github.com/sezanzeb/key-mapper.git
cd key-mapper && sudo python3 setup.py install
Manjaro/Arch
pacaur -S key-mapper-git
Ubuntu/Debian
wget "https://github.com/sezanzeb/key-mapper/releases/"\
"download/0.1.0/python3-key-mapper_0.1.0-1_all.deb"
sudo dpkg -i python3-key-mapper_0.1.0-1_all.deb

Roadmap

  • show a dropdown to select valid devices
  • creating presets per device
  • renaming presets
  • show a mapping table
  • make that list extend itself automatically
  • read keycodes with evdev
  • inject the mapping
  • keep the system defaults for unmapped buttons
  • button to stop mapping and using system defaults
  • highlight changes and alert before discarding unsaved changes
  • automatically load presets on login for plugged in devices
  • make sure it works on wayland
  • support timed macros, maybe using some sort of syntax
  • add to the AUR, provide .deb file
  • automatically load presets when devices get plugged in after login
  • support gamepads as keyboard and mouse combi (partially done)

Tests

pylint keymapper --extension-pkg-whitelist=evdev
sudo pip install -e . && coverage run tests/test.py
coverage combine && coverage report -m