promethean activboard · 2012-04-10 ·...

22
Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung Promethean ActivBoard Max Kr¨ uger, Thorsten Wißmann 16. M¨ arz 2012 Stand: 16. M¨ arz 2012 Max Kr¨ uger, Thorsten Wißmann Promethean ActivBoard 16. M¨ arz 2012 1 / 21

Upload: others

Post on 30-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Promethean ActivBoard

Max Kruger, Thorsten Wißmann

16. Marz 2012

Stand: 16. Marz 2012

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 1 / 21

Page 2: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Ziel

Aufbau eines Multitouch-fahigen und freien Systems unterVerwendung von:

Promethean ActivBoard als EingabegeratArchLinux (oder auch jeder anderen Linux-Distribution)

Bereitstellen von Programmpaketen zur leichten Reproduktiondurch andere

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 2 / 21

Page 3: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Schichten

1 Hardware

2 Kernel-Modul

3 evdev

4 xf86-input-evdev

5 XInput2.2

6 X-Anwendungen

7 Zusammenfassung

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 3 / 21

Page 4: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Schichten - Graphisch

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 4 / 21

Page 5: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Eingabegerat: Promethean ActivBoard

Erkennt bis zu 4 Finger

Kapazitive Erkennung

Stift und Fingereingabe nicht gleichzeitig moglich

Eingabedaten per USB

Bild per HDMI / DVI

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 5 / 21

Page 6: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Ausgangslage

In /usr/src eines Binarpaketes fur Debian auf derHerstellerseite zu finden

Unter GPL lizensiert

USB-Kommunikation bereits komplett implementiert

Weiterreichen der Singletouch-Events an evdev fur Stiftebereits implementiert

Multitouch-Events fur Finger großtenteils implementiert

Konfigurierbar per Geratedatei /dev/ACTIVBOARD*

Werkzeug zum Laden der Kalibrierungsdaten ohne Angabeeiner Lizenz

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 6 / 21

Page 7: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Anderungen

Einpflegen in git

Quellcode fur Multitouch-Events aktivieren

Neuschreiben des Werkzeuges zum Laden der Kalibierung undLizensierung unter der MIT License

Multitouch-Events korrekt an evdev weiterreichen(input mt sync(), ABS MT POSITION *)

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 7 / 21

Page 8: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

evdev

Kernel Schnittstelle

evdev definiert eine Eventbasierte Schnittstelle fur Eingabegerate.Im Gegensatz zu dem alten Inputsystem lassen sich alle Gerate alsuniforme Quellen von Eingabeereignissen nutzen.⇒ /dev/input/event*

Testwerkzeug: evtest

Liest event-Dateien aus und stellt die Nachrichten dieser Schichtzur verfugung.

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 8 / 21

Page 9: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Treiber Eventtypen – evdev

ABS MT POSITION {X,Y}ABS MT TRACKING ID x, x ∈ N0

ABS MT POSITION {X,Y}ABS MT TRACKING ID x

ABS MT POSITION {X,Y}ABS MT TRACKING ID -1

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 9 / 21

Page 10: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

xf86-input-evdev

Aufgabe

Ubersetzen der Ereignisse aus Geratedateien in Anweisungen anXInput

Testwerkzeug: xinput

Analogon zu evtest auf Ebene der Ereignisse fur X

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 10 / 21

Page 11: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

xf86-input-evdev – Anderungen

Benotigt mtdev wahrend des Kompiliervorgangs zuraktivierung des Programmteils zur Abwicklung vonMultitouch-Events

Verwirft ABS X-,ABS Y-Events bei aktiviertem Multitouch

⇒ Weiterreichen der ABS X-,ABS Y-Events trotz aktiviertemMultitouch

⇒ Einreichen des Patches auf der XOrg-Mailingliste undBugTracker

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 11 / 21

Page 12: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

XInput 2.2

Multitouch-Eingaben werden bereits korrekt von xf86-input-evdevempfangen, verwaltet und an X-Anwendungen weitergegeben.

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 12 / 21

Page 13: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Eventtypen – evdev (zur Erinnerung)

ABS MT POSITION {X,Y}ABS MT TRACKING ID x, x ∈ N0

ABS MT POSITION {X,Y}ABS MT TRACKING ID x

ABS MT POSITION {X,Y}ABS MT TRACKING ID -1

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 13 / 21

Page 14: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Eventtypen – XInput 2.2

type = XI TouchBegin,detail = x , x ∈ N0

type = XI TouchMotion,detail = x

type = XI TouchEnd,detail = x

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 13 / 21

Page 15: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

xinput

xinput --test-xi2

Listet die XI Touch*-Events auf

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 14 / 21

Page 16: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

GTK 3.4

GTK kann ab 3.4 Multitouch-Events verarbeiten

In Demo-Anwendung lassen sich Rechtecke via Multitouchbewegen, drehen skalieren

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 15 / 21

Page 17: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

XMTPong

Selbst entwickelte Demoanwendung

Benutzt X11 und XI2

Kein Toolkit benotigt

Spieler konnen ihre Schlager intuitiv durch Beruhrungverschieben

⇒ Bei bis zu 4 gleichzeitig moglichen Multitouch-Bewegungenbis zu 4 Mitspieler moglich

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 16 / 21

Page 18: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

XMTPong – Demonstration

Video

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 17 / 21

Page 19: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Mehrfingereingaben unter Linux

Alle benutzten Schnittstellen sind auf dem Weg in den Hauptzweigder jeweiligen Projekte, jedoch sind noch nicht alle dortangekommen.

Schnellinstallation eines Multitouch-fahigen Systems mitArchLinux:

Installation Grundsystem

Aktivierung des Repository testing (fur aktuelles XInput2.2)

Installiere xf86-input-evdev-multitouch-git (aus dem AUR)

Installiere promethean-activboard-git (aus dem AUR)

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 18 / 21

Page 20: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Ausblick

Kalibrierung des Promethean ActivBoard

Wahrend das freie Kernel-Modul funktioniert, ist die Erstellung derKalibrierungsdaten bisher nur durch ein Closed-Source-Werkzeugmoglich. Ohne dieses Werkzeug erscheint auch die Aufnahme derKernel-Moduls in Linux noch wenig sinnvoll.

xf86-input-evdev

Der Patch muss nurnoch in den Hauptzweig von xf86-input-evdevubernommen werden.

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 19 / 21

Page 21: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Quellen

ABS *-Patch im XOrg-Bugtracker:https://bugs.freedesktop.org/show_bug.cgi?id=47382

XMTPong http://git.cs.fau.de/?p=re06huxa/xmtpong

Kernel-Treiber:http://git.cs.fau.de/?p=re06huxa/promethean-activboard

Arch-Paket des Kernel-Treibers:https://aur.archlinux.org/packages.php?ID=57656

Arch-Paket des modifizierten xf86-input-evdevhttps://aur.archlinux.org/packages.php?ID=57650

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 20 / 21

Page 22: Promethean ActivBoard · 2012-04-10 · HardwareKernel-Modulevdevxf86-input-evdevXInput2.2X-AnwendungenZusammenfassung Schichten 1 Hardware 2 Kernel-Modul 3 evdev 4 xf86-input-evdev

Hardware Kernel-Modul evdev xf86-input-evdev XInput2.2 X-Anwendungen Zusammenfassung

Weiterfuhrende Informationen & Dokumentation

Multitouch in GTK3.4:http://git.gnome.org/browse/gtk+/?h=multitouch

Patches fur X: http://who-t.blogspot.com/2011/12/multitouch-patches-posted.html

Multitouch in Fedora 17 https://fedoraproject.org/w/index.

php?title=Features/Multitouch_support&oldid=270635

Multi-touch (MT) Protocol http://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt

Max Kruger, Thorsten Wißmann Promethean ActivBoard 16. Marz 2012 21 / 21