Forum: Mikrocontroller und Digitale Elektronik mit AVR µC Mausklick an bestimmter Position simulieren


von Alex P. (alex-p)


Lesenswert?

Hallo Forengemeinde,
ist es möglich (und wenn ja, wie), mittels Tastendruck eines auf einem 
am µC angeschlossenen Hardware Switch einen Touchklick an einer 
bestimmten Bildschirmposition zu simulieren?

Ein bisschen was zur Erklärung:

Ich habe derzeit an einen Linux Rechner einen Touchscreen Monitor via 
DVI und USB angeschlossen. Die µC Applikation soll über ein Standard 
USB-HUB, welches in die USB Verbindung Monitor - Rechner signaltechnisch 
integriert werden wird, eingebunden werden.

Da mir das Platinenätzen etc. hierfür zu aufwendig ist, dachte ich an 
ein Evaluation Board wie bspw. ATXMEGAA3BU-XPLD von ATMEL. Der XMega 256 
hat bereits einen USB Anschluss integriert.

Es ist NICHT möglich an der Linux Software etwas zu ändern oder in Linux 
das Programm zu schreiben, auch wenn dies sicher der einfachere Weg 
wäre.

Ich hoffe auf Hilfe und freue mich auf eure Beiträge.

Danke schon einmal vorab.

Gruß

Alex

von Phil J. (exloermond)


Lesenswert?

Ja, machbar.
Der AVR muss ein HID simulieren.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Dann musst du ein Zeichentablet simulieren, nicht eine Maus. Denn die 
Maus liefert keine absoluten Koordinaten.

von Markus F. (mfro)


Lesenswert?

Stefan U. schrieb:
> Dann musst du ein Zeichentablet simulieren, nicht eine Maus. Denn die
> Maus liefert keine absoluten Koordinaten.

Das ist richtig, läßt sich aber leicht dadurch umgehen, daß man mittels 
entsprechend großer Relativbewegungen den Mauszeiger zunächst mal in 
eine Bildschirmecke manövriert.

von justav (Gast)


Lesenswert?

Windows bietet dafür mit Eingabehilfen eine direkte Eingabe über RS232.

Vielleicht hat Linux sowas auch.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Wie schon geschrieben wurde, geht das per HID an USB. Am einfachsten 
vielleicht mit einem ATtiny85 und VUSB. Dafür gibts auch Beispielcodes 
bzw. Beispielprojekte vom VUSB-Entwickler.

justav schrieb:
> Windows bietet dafür mit Eingabehilfen eine direkte Eingabe über RS232.
>
> Vielleicht hat Linux sowas auch.

Linux ist da einfacher.

Zuerst das Tool "xdotool" installieren. Bei Linux reicht dazu 
üblicherweise ein einfaches Kommando:
1
sudo apt-get install xdotool

Dann – ebenfalls per Kommando – einen Maustastendruck simulieren, z.B. 
an der Position 1000/200 (nach rechts und nach unten von der linken 
oberen Bildschirmecke aus).
1
xdotool mousemove 1000 200 click 1

Weiter Infos zu "xdotool" mit dem Kommando
1
man xdotool

Fast schon schade, dass man nun keinen Mikrocontroller einsetzen muss 
und deswegen keine Ausrede hat, mal wieder etwas zu löten. ;-)

von Baendiger (Gast)


Lesenswert?

Für Arduino gibt es eine Library um genau das zu machen. In der findest 
du Anregungen oder du nutzt gleich die Library. Sie funktioniert für 
alle AtMega32u4 basierten Arduino Boards.

von Alex P. (alex-p)


Lesenswert?

Baendiger schrieb:
> Für Arduino gibt es eine Library um genau das zu machen. In der
> findest
> du Anregungen oder du nutzt gleich die Library. Sie funktioniert für
> alle AtMega32u4 basierten Arduino Boards.

Wow! Wahnsinn!

Danke für die wirklich vielen Antworten. Leider ist es so, dass der 
Linux-Rechner als Black Box zu sehen ist, dass heisst ich benötige 
zwingend Arduino oder einen µC (also vielleicht doch löten ;-) )

@ Baendiger: Weisst du zufällig wie diese Library heisst? Zufällig 
"Mouse" (Siehe: https://www.arduino.cc/en/Reference/MouseKeyboard)?

Ich finde die Arduino Umsetzung sehr interessant. Leider ist das Problem 
ja, dass eine Maus relative Werte überträgt und ein Touchmodul am 
Bildschirm absolute Werte, oder liege ich da falsch?

Danke.


Gruß.

Alex

von DerDom (Gast)


Lesenswert?

Google mal nach "Digispark ATTiny85".Ist so für 1€ zuhaben und macht 
genau was du willst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.