Skip to content

Commit 1f3aae6

Browse files
committed
README: Update to discuss libinput lua plugins
Maybe there's a credible future without the need for external tools like this one.
1 parent 25cdaae commit 1f3aae6

File tree

2 files changed

+12
-30
lines changed

2 files changed

+12
-30
lines changed

README.md

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,13 @@ client receives events, and then forward all un-modified events through
4545
your virtual device. It's annoying but unavoidable - you can't hide individual
4646
events from other clients.
4747

48-
## Why not evmapd
49-
50-
There is an existing project called [evmapd](https://github.com/thkala/evmapd)
51-
which is, ostensibly, exactly what we're looking for - a daemon that will
52-
take input events from one device, and then generate new events on a different
53-
uinput based device. I made a serious attempt at using it but ultimately found
54-
it too limiting to rely on:
55-
* It doesn't support 1:N mappings, which I particularly care about
56-
* eg: Mapping a mouse button to a key combination like `Super+A`
57-
* It relies on an obscure and hard to obtain library for command line
58-
argument handling (libcfg+)
59-
* It's written in C, which I will always respect, but which doesn't add much
60-
value to this kind of program
61-
* It's doesn't look actively maintained; it solved whatever problem the author
62-
originally had, and that was it.
63-
64-
Having said all that, it has a set of capabilities to handle remappings that
65-
are not from keys to other keys - particuarly creating virtual joystick axes
66-
from key events. If you care about those capabilities, you should use evmapd.
67-
I'm not going to expand beyond key to key remappings.
68-
69-
## Requirements
70-
71-
* Python >= 3.4 (for [asyncio](https://docs.python.org/3/library/asyncio.html))
72-
* [python-daemon](https://pypi.python.org/pypi/python-daemon) >= 2.1.2
73-
* [Python evdev binding](https://pypi.python.org/pypi/evdev) >= 0.7.0
74-
* [pyxdg](https://pypi.python.org/pypi/pyxdg) > 0.25
75-
* [PyYAML](https://pypi.python.org/pypi/PyYAML) >= 3.12
48+
## libinput's lua plugin based future?
49+
50+
In the years since I first wrote `evdevremapkeys`, there wasn'tt been any real
51+
movement towards exposing a meaningful remapping capability from libinput. In
52+
2025, they started development of a
53+
[lua](https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1192)
54+
plugin framework, which might turn out to be a real solution. When that lands,
55+
and as long as it doesn't depend on the Wayland compositor to expose access to
56+
it, it might turn out to be a better long term approach. But it's too early to
57+
say right now.

RUNNING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,13 @@ $ pipx install <source-tarball>
7171
You will not usually need a self-contained executable, given the existing options for running
7272
and installing the program, but it is possible to build one, if you wish.
7373

74-
Run `build-binary.sh`. It assumes you have pip installed. This will download and install all dependencies,
74+
Run `build-binary.sh`. It assumes you have uv installed. This will download and install all dependencies,
7575
compile the python to excutable code using PyInstaller, then bundle all the dynamic modules into a
7676
single static executable using StaticX. You may need to install patchelf on your system.
7777

7878
## Running evdevremapkeys as a user background service
7979

80-
You shouldn't run evdevremapkeys as a system service, these means everyone using the tablet will
80+
You shouldn't run evdevremapkeys as a system service, these means everyone using it will
8181
have the exact same config.
8282

8383
systemd supports user-level services, where each user can have their own evdevremapkeys instance. It

0 commit comments

Comments
 (0)