Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Python interface to the Input Subsystem's input_event and uinput
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Type||Name||Latest commit message||Commit time|
|Failed to load latest commit information.|
Summary ======= PyInputEvent provides a python interface to Linux's input subsystem using the `/dev/input/event*` devices, as well as providing a means to pass new events to the input subsystem using the `uinput` kernel module and `/dev/uinput`. Also included is the `keytrans` package to do translations of incoming events to new output events, by means of a config file and (possibly) python scripts. Included is a config file for the HAMA MCE Remote. How to use pyinputevent ======================= In the `pyinputevent.py` file, the core classes are `InputEvent` and `SimpleDevice`. `scancodes.py` contains all the relevant magic values, taken directly from `/usr/include/linux/input.h` `InputEvent` encapsulates a single `struct input_event`, and can `.pack` and `.unpack` values. It can be instantiated with either a byte-buffer as the constructor argument or for a hand-crafted event with `InputEvent.new(etype, ecode, evalue)` SimpleDevice can be instantiated with the constructor arguments `device_name` and `device_path`. For example: sd = SimpleDevice("mouse", "/dev/input/event6") sd.read() # will perform a non-blocking read and return # an input_event or None SimpleDevice implemented fileno(), which means that you can use the `select` module easily to determine when data has arrived. TODO: Document `Controller`, `HIDevice`, and `main()` How to use uinput ================= TODO: For the moment see hamacontrol.py How to use keytrans =================== TODO: For the moment see hamacontrol.py How to use hamacontrol ====================== `hamacontrol.py` combined pyinputevent, uinput, and keytrans together with a configuration file (`keymap.txt`) to provide support for the HAMA MCE Remote. If the USB IR receiver is plugged in, running `python hamacontrol.py` will automatically detect the devices, listen for events on them, translate them based on the config file, then pass the translated events to a newly created `uinput` device. You may have to run `modprobe uinput` before running this script, and you either have to change the permissions on these devices, or run this script as root. X11 Device Detection ==================== The original device should be ignored by X when you start hamacontrol.py because we now try to open it with the exclusive flag, which should stop X using it without any HAL or Xorg.conf hacks required. If you still have problems, try including the following in your Xorg.conf file (with thanks to Graeme Blackman for this tidbit): :: Section "InputClass" Identifier "Hama Control" MatchProduct "9881" MatchVendor "05a4" Option "Ignore" "yes" EndSection License ======= Released under the MIT license. See the `LICENSE` file.