Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Python interface to the Input Subsystem's input_event and uinput

branch: master
README
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.
Something went wrong with that request. Please try again.