You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
sezanzeb 6cf52bd808 debian package 4 years ago
DEBIAN debian package 4 years ago
bin macro parser 4 years ago
data more space for macros by resizing the window 4 years ago
keymapper wip debian package 4 years ago
readme debian package 4 years ago
scripts debian package 4 years ago
tests testing connecting to the dbus 4 years ago
.gitignore update readme 4 years ago
.pylintrc pylint 9.70 4 years ago
HISTORY.md update HISTORY.md 4 years ago
LICENSE outlined some stuff 4 years ago
MANIFEST.in wip debian package 4 years ago
README.md wip debian package 4 years ago
setup.py debian package 4 years ago

README.md

Key Mapper

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


Usage

To open the UI to modify the mappings, use:

key-mapper-gtk

You can also start it via your applications menu.

To keep injecting the mapping after closing the window, the daemon needs to be running. If it doesn't already after logging in, you can use:

key-mapper-service

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

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

Git Installation

git clone https://github.com/sezanzeb/key-mapper.git
cd key-mapper
sudo python3 setup.py install
usermod -a -G input $USER
usermod -a -G plugdev $USER

Depending on how those packages are called in your distro, you need the following dependencies:

python3-evdev python3-dbus

It works with both Wayland and X11.

Tests

pylint keymapper --extension-pkg-whitelist=evdev
sudo python3 setup.py install && python3 tests/test.py

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 and .appimage files
  • automatically load presets when devices get plugged in after login