pymt icon indicating copy to clipboard operation
pymt copied to clipboard

A multitouch python framework

PyMT - A Multitouch Framework for Python

Website: http://pymt.eu/ Planet: http://pymt.eu/planet/

About 0.5

This is beta, so keep in mind that it might not work as intended at all times. You can post bug reports and feature requests on our Google Project page :

http://code.google.com/p/pymt/issues/list

If you need more help, you can discuss on mailing list :

We also have an IRC channel :

  • Server : irc.freenode.net
  • Channel : #pymt

Introduction

PyMT is a python module for developing multi-touch enabled media rich applications. Currently the aim is to allow for quick and easy interaction design and rapid prototype development.

PyMT is written in python, based on OpenGL and supports different input methods like Mouse, Dual Mouse, TUIO, WiiMote, WM_TOUCH, HIDtouch etc.

PyMT is actively being developed by a community and free to use. It operates on all major platforms (Linux, OSX, Windows).

Installation

Depending on your operating system you can follow one of the following guides to install PyMT and the dependencies:

  • http://pymt.eu/wiki/DevGuide/InstallPymtUbuntu
  • http://pymt.eu/wiki/DevGuide/InstallPymtMacOSX
  • http://pymt.eu/wiki/DevGuide/InstallPymtWindows

If you chose to install all the dependencies (see below) yourself, you can invoke the setup script as follows to install pymt systemwide for python:

python setup.py install

Dependencies

Since we abstract from the libraries that we use, some dependencies are optional and may be used instead of others. A list of dependencies and what we use them for is http://pymt.eu/wiki/Devel/FeaturesByLibraries

Here is what works best:

  • python (>= 2.6, < 3.0) - http://python.org
  • PyOpenGL >= 3.0.1
  • Pygame
  • PIL
  • GST + PyGST
  • Cython

Dcoumentation, Examples & Tutorials

There is an API reference included in doc. Check the doc/README about how to build the documentation. It's also available online at :

http://pymt.eu/docs/api/

There is some simple example apps in the examples folder that should get you started for now. Additionally you may want to take a look at our wiki at :

http://pymt.eu/wiki/

Configuration

[pymt]

show/hide fps

show_fps = (0|1)

set log level

log_level = (debug|info|warning|error|critical)

detection time of double tap (in milliseconds)

double_tap_time =

max distance allowed for double tap (normalized in range 0 - 1000)

double_tap_distance =

detection time of retain touch (in milliseconds)

retain_time =

max distance allowed for retain touch (normalized in range 0 - 1000)

retain_distance =

max distance to detect jittering (normalized in range 0 - 1000)

jitter_distance =

list of device to ignore jittering

jitter_ignore_devices = ,...

log directory

log_dir =

log name (can use format string from strftime)

log_name =

activate logging on file

log_enable = (0|1)

GL error check (disable to have more speed)

gl_error_check = (0|1)

ignore list

ignore = [(xmin, ymin, xmax, ymax), ...]

INTERNAL, NEVER TOUCH TO config_version !!

config_version =

[keyboard]

default layout of keyboard

layout = (azerty|qwerty)

repeat delay of the on-screen keyboard

repeat_delay =

repeat rate of the on-screen keyboard

repeat_rate =

[graphics]

maximum fps allowed

if fps is <= 0, and vsync activated, the default maximum

fps will be set to 60.

fps =

activate fullscreen

fullscreen = (0|1)

width of window

width =

height of window

height =

force vsync

vsync = (0|1)

force fbo type

fbo = (hardware|software|force-hardware)

opengl line smooth

line_smooth = (0|1)

show cursor on fullscreen

show_cursor = (0|1)

position of the window on the screen

"auto" mean you have no control about the initial position

"custom" mean the position is controled with "top" and "left" attribute

position = (auto|custom)

top position of the window (if position is custom)

top =

left position of the window (if position is custom)

left =

path to the window icon (for replacing the default pygame icon.)

window_icon =

rotation of the window

rotation = (0|90|180|270)

[input]

example of input provider instance

yourid = providerid,parameters

example for tuio provider

default = tuio,127.0.0.1:3333 mytable = tuio,192.168.0.1:3334

[dump]

activate record of frames

enabled = (0|1)

prefix to use for dump

prefix =

format of dump image

format = <jpeg|png>

[widgets]

mtlist control

maximum distance to trigger down/up on child (pixels)

list_trigger_distance =

friction (factor, 1 = no friction)

list_friction =

friction when a bound have been hit

list_friction_bound =

keyboard type

keyboard_type = <real|virtual>

[modules]

modulename= to activate a module

you can have a list of module with :

python example.py -m list

example:

keybinding= closeapp= feedback= touchring=

Other python/MT resources

movid.org ^^^^^^^^^

Another image tracker we are working on.

nuigroup.com ^^^^^^^^^^^^

THE resource and research community for open source multi touch and other natural user interfaces.