Home > lumio_driver

lumio_driver

Lumio_driver is a project mainly written in C, based on the View license.

A linux kernel driver for the lumio touchscreen. Supports dual touch with both 2 mice emulation or multitouch new kernel API.

.__ . . .
| |
|| __ | /__|| __ | | | | / | |/ _ / |_ / // _ | || | / Y Y ( <> ) / // | | | / | / /| | / |_ /|_|| /|_/ | || || _/ >_|
/ / /____
/ / /

Author: Quentin Casasnovas Licence: GPL2 Version: 0.1

  1. Description

    
    This driver is part of my last year project at Epita, a french engeeniring
    school ; it aims at making work a lumio touchscreen (which supports two finger
    touches) with linux kernel 2.6.XX.
    
    To do so it makes it appear to userland as if it was two different mice
    connected to the computer. Thanks to that, you'll be able to use your
    touchscreen directly in X graphic environment without adding new X driver for
    this input device.
    
    Unfortunaltly, as of today, X doesn't support multiple cursors nativly : what
    X does is kind off multiplexing the different mice in one cursor. To be able to
    use different cursors, a solution exists : MPX (Multi Pointer eXtension) which
    has been merged with X in 2009 and should therefore be part of the next X
    stable version (1.7). Using MPX parallell lumio_driver (and of course a lumio
    touchscreen) will take you to the wonderfull world of multi-touch in your
    prefered OS, GNU/Linux :)
    
    This is my second driver for Linux so it certainly isn't perfect, feel free
    to modify it to suit your needs and give me feedback about it :)
  2. Usage

    
    After having installed this driver, and as to be able to use it in X
    environnment, you should edit your xorg.conf to add two input devices which
    should be /dev/input/event{n,n+1} with evdev driver:

Section "ServerLayout" ... InputDevice "lumio1" InputDevice "lumio2" ... EndSection

Section "InputDevice" Identifier "lumio1" Driver "evdev" Option "Device" "/dev/input/lumio1" Option "GrabDevice" "true" # /! Don't forget that option Option "SendCoreEvents" "true" ... EndSection

Section "InputDevice" Identifier "lumio1" Driver "evdev" Option "Device" "/dev/input/lumio2" Option "GrabDevice" "true" # /! Don't forget that option Option "SendCoreEvents" "true" ... EndSection / ( ! ) ------------------------------------------------------------------------- / evdev is a generic X driver for input devices and as such may not suit your needs exactly. You may change it to "synaptics" driver which give good results too. I'm currently modifying it (the synaptics driver) to make it work with absolute coordinates, which will give a complete support for the touchscreen (double clic, tap and drag, ... etc).

If you have loaded MPX in your X server, you may want to associate a different cursor with each char device as to be able to try the multitouch in linux :) To do so, xinput is your friend:

42sh$ xinput list --short

This command should give you a tree of all devices recognized by X. Just remember that a "Master device" is a cursor on the screen (ie. master = virtual) and that a "Slave device" should be a physical device like a mouse or a keyboard. Now create two new master devices (cursors):

42sh$ xinput create-master "teton" 42sh$ xinput create-master "uretre"

At this point you should have 3 cursors on the screen (maybe you only see two of them because they overlap each other), it's time to attach the two slave devices that correspond to your touchscreen:

42sh$ xinput reattach 42sh$ xinput reattach

(To know the device associated with the newly created master device, just re-type xinput list --short).

There we go, your OS is miltitouch capable ;) Now, as almost none window manager has been ported to Xinput2, it should be very hard to play with those multiple cursors, but hey, who cares ? That rocks anyway :)

  1. Documentation

    
    The source code is fully documented, you may read the source files directly,
    or generate a doxygen documentation in html using the command:
    42sh$ make doc
    You must have the programm doxygen to generate the documentation.
  2. Miscellaneous

    
    The ascii font used in INSTALL and README files is "graffiti" ans has been
    generated with the online ascii generator present at
    http://www.network-science.de/ascii/
Previous:phplifestream