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.
input-remapper/README.md

132 lines
4.4 KiB
Markdown

4 years ago
<h1 align="center">Key Mapper</h1>
4 years ago
<p align="center">A tool to change and program the mapping of your input device buttons.</p>
4 years ago
<p align="center"><img src="readme/pylint.svg"/> <img src="readme/coverage.svg"/></p>
4 years ago
<p align="center"><img src="readme/screenshot.png"/></p>
4 years ago
<br/>
4 years ago
## Usage
4 years ago
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.
4 years ago
If stuff doesn't work, check the output of `key-mapper-gtk -d` and feel free
to open up an issue here.
4 years ago
##### 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
4 years ago
- `k(1).h(k(2)).k(3)` writes 1 2 2 ... 2 2 3 while the key is pressed
Documentation:
4 years ago
- `r` repeats the execution of the second parameter
- `w` waits in milliseconds
4 years ago
- `k` writes a single keystroke
- `m` holds a modifier while executing the second parameter
- `h` executes the parameter as long as the key is pressed down
- `.` executes two actions behind each other
4 years ago
Syntax errors are shown in the UI on save. each `k` function adds a short
delay of 10ms that can be configured in `~/.config/key-mapper/config`.
4 years ago
##### Names
4 years ago
For a list of supported keystrokes and their names for the middle column,
check the output of `key-mapper-service --names`. Examples:
4 years ago
- Alphanumeric `a` to `z` and `0` to `9`
- Modifiers `Alt_L` `Control_L` `Control_R` `Shift_L` `Shift_R`
4 years ago
- Mouse buttons `BTN_LEFT` `BTN_RIGHT` `BTN_MIDDLE` `BTN_SIDE` ...
4 years ago
- Multimedia keys `KEY_NEXTSONG` `KEY_PLAYPAUSE` ...
4 years ago
##### Gamepads
4 years ago
Tested with the XBOX 360 Gamepad.
- Joystick movements will be translated to mouse movements
- The second joystick acts as a mouse wheel
- Buttons can be mapped to keycodes or macros
- The D-Pad only works as two buttons - horizontal and vertical
4 years ago
## Installation
4 years ago
The tool shows and logs if there are issues, but usually, 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. You may also need to grant yourself write access to
`/dev/uinput` to be able to inject your programmed mapping.
There is a shortcut for configuring this stuff:
```bash
sudo key-mapper-service --setup-permissions
# now log out and back in
```
4 years ago
##### Manjaro/Arch
```bash
pacaur -S key-mapper-git
```
4 years ago
##### Ubuntu/Debian
4 years ago
```bash
4 years ago
wget "https://github.com/sezanzeb/key-mapper/releases/"\
4 years ago
"download/0.2.0/python3-key-mapper_0.2.0-1_all.deb"
sudo dpkg -i python3-key-mapper_0.2.0-1_all.deb
```
4 years ago
##### Git/pip
4 years ago
Depending on your distro, maybe you need to use both methods with `--force`
to get all your files properly in place and overwrite a previous installation
of key-mapper.
4 years ago
```bash
# method 1
4 years ago
sudo pip install git+https://github.com/sezanzeb/key-mapper.git
# method 2
4 years ago
git clone https://github.com/sezanzeb/key-mapper.git
cd key-mapper && sudo python3 setup.py install
```
4 years ago
## Roadmap
4 years ago
- [x] show a dropdown to select valid devices
4 years ago
- [x] creating presets per device
- [x] renaming presets
4 years ago
- [x] show a mapping table
4 years ago
- [x] make that list extend itself automatically
4 years ago
- [x] read keycodes with evdev
- [x] inject the mapping
4 years ago
- [x] keep the system defaults for unmapped buttons
4 years ago
- [x] button to stop mapping and using system defaults
- [x] highlight changes and alert before discarding unsaved changes
4 years ago
- [x] automatically load presets on login for plugged in devices
- [x] make sure it works on wayland
4 years ago
- [x] support timed macros, maybe using some sort of syntax
4 years ago
- [x] add to the AUR, provide .deb file
4 years ago
- [x] basic support for gamepads as keyboard and mouse combi
- [x] executing a macro forever while holding down the key
4 years ago
- [ ] map D-Pad and Joystick directions as buttons, joystick purpose via config
4 years ago
- [ ] automatically load presets when devices get plugged in after login
4 years ago
- [ ] option to write hwdb configs for lower level mappings ([Remapping keys using hwdb files](https://www.reddit.com/r/linux_gaming/comments/k3h9qv/remapping_keys_using_hwdb_files/))
4 years ago
- [ ] mapping a combined button press to a key
4 years ago
## Tests
```bash
pylint keymapper --extension-pkg-whitelist=evdev
sudo pip install . && coverage run tests/test.py
4 years ago
coverage combine && coverage report -m
4 years ago
```
4 years ago
4 years ago
To read events, `evtest` is very helpful. Add `-d` to `key-mapper-gtk`
to get debug outbut.