irgendwie liegt es wohl daran das beim 2.touch x und y keine wechselnden
werte erhalten habe, habe auch noch usleeps(8000) eingefügt,
aufjedenfall erhalte mit evtest was vernünftiges, siehe unten. NUR...
wie teste ich das? Mit tslib habe ich kein erfolg? evtl. Paint, aber
welches Paint unterstützt touch?
Aufjedenfall funktionieren html5 touch programme nicht :-(
evtest:
************************
Event: time 1483050928.364221, type 3 (EV_ABS), code 47 (ABS_MT_SLOT),
value 0
Event: time 1483050928.364221, type 3 (EV_ABS), code 53
(ABS_MT_POSITION_X), value 507
Event: time 1483050928.364221, type 3 (EV_ABS), code 54
(ABS_MT_POSITION_Y), value 507
Event: time 1483050928.364221, type 3 (EV_ABS), code 47 (ABS_MT_SLOT),
value 1
Event: time 1483050928.364221, type 3 (EV_ABS), code 53
(ABS_MT_POSITION_X), value 707
Event: time 1483050928.364221, type 3 (EV_ABS), code 54
(ABS_MT_POSITION_Y), value 707
Event: time 1483050928.364221, ++++++++++++++ EV_REL ++++++++++++
Event: time 1483050928.364221, -------------- EV_SYN ------------
Event: time 1483050928.460511, type 3 (EV_ABS), code 47 (ABS_MT_SLOT),
value 0
Event: time 1483050928.460511, type 3 (EV_ABS), code 53
(ABS_MT_POSITION_X), value 508
Event: time 1483050928.460511, type 3 (EV_ABS), code 54
(ABS_MT_POSITION_Y), value 508
Event: time 1483050928.460511, type 3 (EV_ABS), code 47 (ABS_MT_SLOT),
value 1
Event: time 1483050928.460511, type 3 (EV_ABS), code 53
(ABS_MT_POSITION_X), value 708
Event: time 1483050928.460511, type 3 (EV_ABS), code 54
(ABS_MT_POSITION_Y), value 708
Event: time 1483050928.460511, ++++++++++++++ EV_REL ++++++++++++
Event: time 1483050928.460511, -------------- EV_SYN ------------
Event: time 1483050928.556866, type 3 (EV_ABS), code 47 (ABS_MT_SLOT),
value 0
Event: time 1483050928.556866, type 3 (EV_ABS), code 53
(ABS_MT_POSITION_X), value 509
Event: time 1483050928.556866, type 3 (EV_ABS), code 54
(ABS_MT_POSITION_Y), value 509
Event: time 1483050928.556866, type 3 (EV_ABS), code 47 (ABS_MT_SLOT),
value 1
Event: time 1483050928.556866, type 3 (EV_ABS), code 53
(ABS_MT_POSITION_X), value 709
Event: time 1483050928.556866, type 3 (EV_ABS), code 54
(ABS_MT_POSITION_Y), value 709
Event: time 1483050928.556866, ++++++++++++++ EV_REL ++++++++++++
Event: time 1483050928.556866, -------------- EV_SYN ------------
Event: time 1483050928.653166, type 3 (EV_ABS), code 47 (ABS_MT_SLOT),
value 0
Event: time 1483050928.653166, type 3 (EV_ABS), code 53
(ABS_MT_POSITION_X), value 510
Event: time 1483050928.653166, type 3 (EV_ABS), code 54
(ABS_MT_POSITION_Y), value 510
Event: time 1483050928.653166, type 3 (EV_ABS), code 47 (ABS_MT_SLOT),
value 1
Event: time 1483050928.653166, type 3 (EV_ABS), code 53
(ABS_MT_POSITION_X), value 710
Event: time 1483050928.653166, type 3 (EV_ABS), code 54
(ABS_MT_POSITION_Y), value 710
Event: time 1483050928.653166, ++++++++++++++ EV_REL ++++++++++++
Event: time 1483050928.653166, -------------- EV_SYN ------------
Epi K. schrieb:> irgendwie liegt es wohl daran das beim 2.touch x und y keine wechselnden> werte erhalten habe, habe auch noch usleeps(8000) eingefügt,> aufjedenfall erhalte mit evtest was vernünftiges, siehe unten. NUR...> wie teste ich das? Mit tslib habe ich kein erfolg?
Es könnte sein, dass der tslib die ABS_X und ABS_Y-Achse fehlen. Ich
glaube älteren Versionen wollten auch unbedingt die ABS_PRESSURE-Achse
sehen, wobei die allerdings von der Kernel-API her eigentlich nur
vorgesehen ist, wenn sie tatsächlich variable Werte liefert (und nicht
nur 0/1 als Synonym für den BTN_TOUCH).
Ansonsten komprimiert der Kernel die Events und liefert nur die aus, die
tatsächlich geänderte Werte enthalten.
Viele Grüße,
Simon
vielen Dank. Werde dies mal versuchen...
wobei so wie es jetzt ist, auf der HTML Seite
http://scripty2.com/demos/touch/touchspector/
wird kein Touch erkannt... also wird es wohl kaum funktionieren.
Im Moment versuche ich es deshalb direkt über ein "touchemulator
javascript"
https://github.com/hammerjs/touchemulator
Der Browser übernimmt die touch-Daten ja von irgendwo und übergibt Sie
weiter, und hier versuche ich zu manipulieren und die eigenen X-Y Daten
zu übergeben.
Naja sehr schade, dass all dies nicht einfacher geht :-((
Betrachten wir nochmal alle Threads:
Beitrag "evdev, mousemove, multitouch auf Raspberry"Beitrag "X11, xlib, multi touch simulation"Beitrag "I2C read mit C-Programm Raspberry PI"
Zuerst versuchst du es mit python zu emulieren, dann mit C, und dann
kommst du zum schluss, dass:
Epi K. schrieb:> Naja sehr schade, dass all dies nicht einfacher geht :-((
Und nun willst es auf einem noch höheren Layer emulieren. Ich meine,
Come on, das ist doch von hinten durch die Brust ins Auge. Was spricht
dagegen es auf dem normalen weg zu lösen:
Daniel A. schrieb:> Verstehe ich dass jetzt richtig, du willst einfach einen noch nicht von> linux unterstützten I2C Touchscreen verwenden? Wäre es da nicht> einfacher den Linux kernel neu zu kompilieren, und darin einen i2c hid> treiber zu schreiben/anzupassen?
Wie auch immer, hast du nachgeschaut ob xinput dein Input device
auflistet? Damit kann man sich glaub ich auchnoch die Events anzeigen
lassen, die X von einem Input device sieht. Falls es in xinput nicht
auftaucht, muss man es in Xorg erst bekannt machen. Früher ging das über
/etc/Xorg.conf, heuzutage ist eher /etc/X11/xorg.conf.d/ in mode.
PS: Sind wirklich derart viele Threads notwendig? In diesem Forum wird
viel Diskutiert, anders als in anderen reinen Frage=>Antwort Foren.
Dabei ist es immer nützlich, wenn man den gesammten Kontext sieht.
Hoi Daniel
Daniel A. schrieb:> PS: Sind wirklich derart viele Threads notwendig? In diesem Forum wird> viel Diskutiert, anders als in anderen reinen Frage=>Antwort Foren.> Dabei ist es immer nützlich, wenn man den gesammten Kontext sieht.
jo das ist ein wenig viel, entschuldigung. Habe verschiedene Wege im
Kopf gehabt...
Daniel A. schrieb:> Wie auch immer, hast du nachgeschaut ob xinput dein Input device> auflistet? Damit kann man sich glaub ich auchnoch die Events anzeigen> lassen, die X von einem Input device sieht. Falls es in xinput nicht> auftaucht, muss man es in Xorg erst bekannt machen. Früher ging das über> /etc/Xorg.conf, heuzutage ist eher /etc/X11/xorg.conf.d/ in mode.
auf Xinput wird es nicht gelistet. Habe lange versucht eine Anleitung zu
finden dies auf Xinput bekannt zu machen... ich werde mir dein Link mal
anschauen. Danke.
Daniel A. schrieb:> Und nun willst es auf einem noch höheren Layer emulieren. Ich meine,> Come on, das ist doch von hinten durch die Brust ins Auge. Was spricht> dagegen es auf dem normalen weg zu lösen:
was dagegegen spricht? ganz einfach ich habe noch nie ein Treiber
geschrieben und integriert. Und wenn ich mir so die Quell-Codes von
verschiedenen Touch-Treiber anschaue kriege ich ne Panik-Attacke...
Und zu alldem müsste ich diese auch noch in den Kernel integrieren.
Ganz ehrlich mir ist es schwer gefallen eine einfache Anleitung für
Treiber Implementierung zu finden.
Ich habe doch einfach nur 10 x und Y Koordinaten und dann noch die ID zu
jedem Touch und die Info ob aktiv oder nicht aktiv. Und das muss
irgendwo übergeben werden... tja
pi@raspberrypi:~ $ evtest
No device specified, trying to scan all of /dev/input/event*
Not running as root, no devices may be available.
Available devices:
/dev/input/event0: uinput-sample
Select the device event number [0-0]: 0
pi@raspberrypi:~ $ export DISPLAY=':0'
pi@raspberrypi:~ $ xinput
⎡ Virtual core pointer id=2 [master pointer
(3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer
(2)]
⎣ Virtual core keyboard id=3 [master keyboard
(2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard
(3)]
wie sieht der code ungefährt aus um uinput-sample or whatever auf
/etc/X11/xorg.conf.d/ bekannt zu machen, vorallem aber habe ich nicht
mal ein xorg.conf...bzw. nur dort: /usr/share/X11/xorg.conf.d/?
Epi K. schrieb:> pi@raspberrypi:~ $ export DISPLAY=':0'> pi@raspberrypi:~ $ xinput
Probiere mal das tatsächlich aus einer gestarteten X-Session heraus zu
tun. Eigentlich sollte der evdev-Treiber von Xorg das Ding automatisch
aufpicken (Auf meinem Laptop tut er das).
Ansonsten: Sicherstellen, dass dein "uinput"-Programm läuft und dann X
restarten.
Grüße,
Simon
Daniel A. schrieb:> Und nun willst es auf einem noch höheren Layer emulieren. Ich meine,> Come on, das ist doch von hinten durch die Brust ins Auge. Was spricht> dagegen es auf dem normalen weg zu lösen:
Naja, es ist halt leider echt doof, dass die ganzen "Desktop"-Browser
mit Multitouch-Input nur sehr bedingt klarkommen (im Gegensatz zu den
Android-Mobile-Browsern). Insofern kann ich schon nachvollziehen, dass
hier die Luft langsam dünn wird und man nach Strohhalmen greift.
Das ganze Zeugs ist aus irgendwelchen doofen Gründen echt Arbeit. Und
ein ordentlich im Kernel implementierter Treiber - so einfach das
scheinbar ist - garantiert halt leider noch lange nicht, dass die
Multitouch-taugliche Webseite wie geplant funktioniert...
Grüße,
Simon
Simon B. schrieb:> Naja, es ist halt leider echt doof, dass die ganzen "Desktop"-Browser> mit Multitouch-Input nur sehr bedingt klarkommen (im Gegensatz zu den> Android-Mobile-Browsern). Insofern kann ich schon nachvollziehen, dass> hier die Luft langsam dünn wird und man nach Strohhalmen greift.
ich bin mir da nicht sicher ob dass wirklich nicht funktionieren
sollte... weil mit richtig implementierten Treiber funktionieren ja
Touch's auch auf Browser einwandfrei... und die arbeiten ja auch nur mit
X?!
Wenn es auf deinem Laptop läuft, also auf Xinput auch was angezeigt
wird...
dann könntest du mir doch gleich auf folgender Homepage testen ob auch
ein Touch angeigt wird:
http://scripty2.com/demos/touch/touchspector/Simon B. schrieb:> Probiere mal das tatsächlich aus einer gestarteten X-Session heraus zu> tun. Eigentlich sollte der evdev-Treiber von Xorg das Ding automatisch> aufpicken (Auf meinem Laptop tut er das).
phu leider blicke ich bei diesem X-Zeug noch nicht so durch... wie
meinst du das?
Epi K. schrieb:> Simon B. schrieb:>> Naja, es ist halt leider echt doof, dass die ganzen "Desktop"-Browser>> mit Multitouch-Input nur sehr bedingt klarkommen (im Gegensatz zu den>> Android-Mobile-Browsern). Insofern kann ich schon nachvollziehen, dass>> hier die Luft langsam dünn wird und man nach Strohhalmen greift.>> ich bin mir da nicht sicher ob dass wirklich nicht funktionieren> sollte... weil mit richtig implementierten Treiber funktionieren ja> Touch's auch auf Browser einwandfrei... und die arbeiten ja auch nur mit> X?!
Aha? Tun sie? Redest Du von Multi-Touch? Wie hast Du das verifiziert?
> Wenn es auf deinem Laptop läuft, also auf Xinput auch was angezeigt> wird...> dann könntest du mir doch gleich auf folgender Homepage testen ob auch> ein Touch angeigt wird:> http://scripty2.com/demos/touch/touchspector/
Mit meinem Firefox (Debian Unstable) funktioniert der ordentlich
konfigurierte und in xinput verfügbare Wacom-Multitouch-Touchscreen
nicht (bzw. nur als Mausersatz). Lustigerweise funktionieren ein paar
Gesten (zwei-Finger-Scrolling und Pinch-Zooming).
Keinen Schimmer warum.
>> Simon B. schrieb:>> Probiere mal das tatsächlich aus einer gestarteten X-Session heraus zu>> tun. Eigentlich sollte der evdev-Treiber von Xorg das Ding automatisch>> aufpicken (Auf meinem Laptop tut er das).> phu leider blicke ich bei diesem X-Zeug noch nicht so durch... wie> meinst du das?
Du hast explizit ein export DISPLAY=:0 gemacht, was für mich darauf
hindeutete, dass Du das via SSH von remote gemacht hast. Starte dein
uinput-Dings mal aus einem xterminal heraus.
Grüße,
Simon
Simon B. schrieb:>> ich bin mir da nicht sicher ob dass wirklich nicht funktionieren>> sollte... weil mit richtig implementierten Treiber funktionieren ja>> Touch's auch auf Browser einwandfrei... und die arbeiten ja auch nur mit>> X?!>> Aha? Tun sie? Redest Du von Multi-Touch? Wie hast Du das verifiziert?
von https://www.bytesatwork.ch/ weiss ich, dass die mit Linux (Yocto)
und HTML5 arbeiten und z.B. EDT Touches bis 10 Finger (z.B. zeichnen)
ohne Probleme funktioniert...
Danke für den Tip bzgl. xterminal... aber jetzt habe ich einfach
XTerminal gestartet, und
export DISPLAY=':0'
sudo ./touch & (meine Anwendung gestartet
dann: evtest
es erscheint "uinput-sample"
dann: xinput
wird kein uinput-sample oder was ähnliches aufgelistet...
habs auch mal ohne export DISPLAY=':0' gemacht.
Und jetzt auch alles nicht per SSH.
Danke
Epi K. schrieb:> Simon B. schrieb:>>> ich bin mir da nicht sicher ob dass wirklich nicht funktionieren>>> sollte... weil mit richtig implementierten Treiber funktionieren ja>>> Touch's auch auf Browser einwandfrei... und die arbeiten ja auch nur mit>>> X?!>>>> Aha? Tun sie? Redest Du von Multi-Touch? Wie hast Du das verifiziert?>> von https://www.bytesatwork.ch/ weiss ich, dass die mit Linux (Yocto)> und HTML5 arbeiten und z.B. EDT Touches bis 10 Finger (z.B. zeichnen)> ohne Probleme funktioniert...
Die spannende Frage ist: Mit welchem Browser in welcher Version?
> wird kein uinput-sample oder was ähnliches aufgelistet...
Ok, dann muss man da mal gucken ob man den Xorg irgendwie noch weiter
konfigurieren muss damit da was tut. Spontan gehen mir da erstmal die
Ideen aus.
Grüße,
Simon
Simon B. schrieb:> Ok, dann muss man da mal gucken ob man den Xorg irgendwie noch weiter> konfigurieren muss damit da was tut. Spontan gehen mir da erstmal die> Ideen aus.>> Grüße,> Simon
was genau wird bei dir auf xinput aufgelistet? Und wie gehst du schritt
für schritt vor?
Weil wenn es bei dir aufgelistet wird, dann fehlt noch irgendein x
-paket im raspberry...
Danke
Epi K. schrieb:> Simon B. schrieb:>> Ok, dann muss man da mal gucken ob man den Xorg irgendwie noch weiter>> konfigurieren muss damit da was tut. Spontan gehen mir da erstmal die>> Ideen aus.>>>> Grüße,>> Simon>> was genau wird bei dir auf xinput aufgelistet? Und wie gehst du schritt> für schritt vor?
Vorher:
↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
16
↳ ThinkPad Extra Buttons id=15 [slave keyboard (3)]
Starten deines uinput-Programms (ich glaube quasi ohne Änderung - bis
auf ein paar Delay-Dinge die meinen Computer benutzbar halten indem
nicht sofort Events geschickt werden):
1
simon@mezzanine:/tmp$ sudo ./uinput
2
^Z
3
[1]+ Stopped sudo ./uinput
4
simon@mezzanine:/tmp$ bg
5
[1]+ sudo ./uinput &
Und dann anschließend die Ausgabe mit uinput-sample:
Epi K. schrieb:> ok. interessant danke, und wird bei dir ein Touch auf> http://scripty2.com/demos/touch/touchspector/ angezeigt?
Nachdem das schon mit meinem Wacom-Multitouch im Firefox nicht
funktioniert (siehe oben) habe ich das gar nicht erst probiert (und sehe
auch keinen Sinn darin).
Ich bin mir sehr sicher, dass - sofern man die richtigen Events
bereitstellt - es für das Xorg quasi keinen Unterschied darstellt ob ein
Device ein reales physikalisches Gerät ist (und z.B. erst nachträglich
durch Anstecken eines USB-Geräts auftaucht) oder ob das per uinput
simuliert wird.
Grüße,
Simon
Simon B. schrieb:> Nachdem das schon mit meinem Wacom-Multitouch im Firefox nicht> funktioniert (siehe oben) habe ich das gar nicht erst probiert (und sehe> auch keinen Sinn darin).
ok. wie schauts mit Chrome bzw. Chromium aus? Der scheint ziemlich gut
Multitouch fähig zu sein?... Ich werde mal bei gelegenheit bei
byte@works nachfragen welchen browser sie den verwenden.
Aber ich glaube nicht, dass es ein spezieller ist.
Danke
Epi K. schrieb:> ok. wie schauts mit Chrome bzw. Chromium aus? Der scheint ziemlich gut> Multitouch fähig zu sein?...
Chromium nicht bei mir. Chrome habe ich nicht installiert.
Grüße,
Simon
och schade vielleicht kannst du für mich mal den chrome installieren...
anyway ich bin jetzt in der Lage mit dem touch-emulator() mulittouch's
zu simulieren.
D.h. ich muss jetzt einfach bei jeder Touch-Fähigen Homepage dieses
script vorher starten..
was jetzt noch fehlt, ich muss meine X-Y Daten diesem java-script
übergeben können... evtl. JSON. Aber irgendwie suche ich ne
Browser-Schnittstelle um einfach nur Array's zu übergeben... und es muss
mindestens 30mal in der Sekunde abrufbar sein...
Müsste fast ein weiteren Thread dafür erstellen, aber ich lass es mal..
Simon B. schrieb:> Chromium nicht bei mir.
Ach guck: mit "chromium --touch-events=enabled" sehe ich mit dem
Wacom-Touchscreen mehrere Berührpunkte. Er meldet mir auch 10 Punkte
wenn ich alle Finger auflege, malt aber anscheinend nicht um alle die
Rahmen (warum auch immer)...
Viele Grüße,
Simon
Epi K. schrieb:> oh cool, das prg. rendert glaubs nur max. 5 touch's, wie siehts mit> uinput aus?
Dein Programm von oben realisiert noch keine mehrfachen Touches - und
ich werde unbezahlt da auch erstmal keine Zeit reinstecken, das zu
implementieren.
Generell kannst Du aber diese Tests auch selber machen - du brauchst nur
ein Desktop-Linux und kannst da nach Herzenslust selber rumfrickeln. Und
dann kannst Du probieren, an welcher Stelle es beim Raspberry dann ggf.
scheitert.
Viele Grüße,
Simon
Darf Ich zwischenfragen, ob jemand ein Tutorial kennt, aus dem man
entnehmen könnte, wie das überhaupt geht mit dem Multitouch? Ist das auf
Basis einer Multiplexfunktion?
Ich meine, wenn Ich mir ein Gitter mit den Spannungen vorstelle, die
sich infolge des Widerstandes ändern, bekomme Ich eigentlich bei mehr,
als einer Berührung einen Mittelwert, oder?
Eine eigene Frage?
Dieser Thread ist über 9 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.