[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1011749: ITP: interception-tools -- minimal composable infrastructure on top of libudev and libevdev



Package: wnpp
Severity: wishlist
Owner: Osamu Aoki <osamu@debian.org>
X-Debbugs-Cc: debian-devel@lists.debian.org, Ethan Djeric <me@ethandjeric.com>, Francisco Lopes <francisco@nosubstance.me>

* Package name    : interception-tools
  Version         : 0.6.8
  Upstream Author : Francisco Lopes <francisco@nosubstance.me>
* URL             : https://gitlab.com/interception/linux/tools
* License         : GPLv3
  Programming Lang: C, C++
  Description     : minimal composable infrastructure on top of libudev and libevdev

The Interception Tools is a small set of utilities for operating on input
events of evdev devices, including udevmon, intercept, uninput and mux.

In short, this is a generic helper tool to mangle keyboard input in very
low level within Linux kernel.  This works for Wayland, X, or Linux
virtual console.  Home position mod-tap etc. can be implemented using
this.

Longer explanation goes:

The tools here relying on libevdev are intercept and uinput.
intercept's purpose is to capture input from a given device (optionally
grabbing it) and write such raw input to stdout. uinput does the reverse,
it receives raw input from stdin and write it to a virtual uinput device
created by cloning characteristics of real devices, from YAML configuration, or
both.

So, assuming $DEVNODE as the path of the device, something like
/dev/input/by-id/some-kbd-id, the following results in a no-op:
intercept -g $DEVNODE | uinput -d $DEVNODE
In this case using -g is important so that the target device is grabbed for
exclusive access, allowing the new virtual device created by uinput to
substitute it completely: we grab it and others can grab the clone.
Now additional processing can be added in the middle easily.

There were Ubuntu PPA by Ethan Djeric <me@ethandjeric.com>.  I used it
as the starting point.  I have tidied up packaging so it can pass
piuparts and lintian test.  I also created manpages.

At this moment, I have this on github and in good shape.  Once accepted,
I will move this to salsa.

   https://github.com/osamuaoki/interception-tools

This offer 4 commands and one of it is "intercept". Debian already have
"intercept" in the "bear" package.

As you know generic name and short name are problematic.

I am wondering if I need to rename as:

  intercept -> evdev-intercept
  udevmon   -> evdev-udevmon
  uinput    -> evdev-uinput
  mux       -> evdev-mux

(I am asking thought of upstream too.)

Here are associated programs to give idea what we can.

Additional Tools
 uswitch: redirect stdin to a muxer if logged user matches
 xswitch: redirect stdin to a muxer if window matches
Official Plugins
  caps2esc:   transforming the most useless key ever in the most useful one
  space2meta: turn your space key into the meta key when chorded to
              another key (on key release only)
  hideaway: move the mouse pointer out of sight after a couple of seconds
  dual-function-keys: tap for one key, hold for another
Some Community Plugins
  ralt2hyper: Remap Right Alt (commonly AltGr) to Hyper (i.e. Control, Alt and Super)
  chorded_keymap
  interception-vimproved
  interception-k2k

Also, if Ubuntu PPA person wishes to co-maintain, I will be happy to
sponsor.

Regards,

Osamu


Reply to: