Forum: PC Hard- und Software absolute Mausbewegung


von Max H. (max7198)


Lesenswert?

Ich nutze bisher wenn ich eine Maussteuerung per Arduino mache immer die 
relative Mausbewegung. Das ist aber zum Teil echt stressig, weil dann 
die Bewegung je nach Geschwindigkeit ect wieder völlig unterschiedlich 
groß ist.

Weiß jemand wie eine absolute Mausbewegung möglich ist? Habe es im 
Internet ein paar mal gefunden, aber ist immer schon einige Jahre alt.
Hat jemand von euch zufällig die veränderte HID Datei für eine 
aktuellere Version?

: Verschoben durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Erklär mal bitte, wie der Arduino da reinkommt. Soll der Arduino eine 
Maus nachbilden oder schliesst du an den eine Maus an?

Ein absolutes Pointer Device mit USB braucht keinerlei geänderte HID 
Datei, sondern einen entsprechenden USB Descriptor - am Host ändert sich 
nix, sofern überhaupt Pointer Devices erlaubt sind.
Wenn du einen solchen Descriptor brauchst, kann ich dir einen von meinem 
USB Tablet Projekt raussuchen. Aber erstmal musst du mitteilen, was da 
nun wo angeschlossen werden soll.

von Jacko (Gast)


Lesenswert?

Absolute Mausbewegung? - Schwer vorstellbar, was ist denn, wenn
man die Maus anhebt und woanders hinsetzt???

Aus deinen weiteren Bemerkungen schließe ich, dass dich die
Maus-Optimierungen stören. Die sind aber für die normale Bedienung
eher vorteilhaft - oder willst du die Maus dreimal (mit abheben)
über das Mouse-Pad schieben, um von einem Bildschirmrand zum anderen
zu kommen?

Für exakte Eingaben (z.B. CAD) gab es mal Grafik-Tablets.

Heute, bei Wisch-und-Spreiz-und-Hoppla-wollte-ich-nicht,
scheint da kein Bedarf mehr zu sein.

von Bastler (Gast)


Lesenswert?

Ziemlich sicher, er meint den (USB)-Arduino als HID (Maus) am Rechner 
anschließen und will dann starr relative Bewegungen einfach absolute 
Koordinaten an den Rechner geben.

Also Grafiktablet/Touchpad mit abs. Koordinaten statt Maus wo es nur 
relativ gibt.

von Max (Gast)


Lesenswert?

Sorry habe ich schlecht beschrieben
Genau möchte einfach Koordinaten anfahren und mag dafür die relative 
Bewegung nicht wirklich, die es ja bei Arduino Leonardo standardmäßig 
gibt

von Max (Gast)


Lesenswert?

Und meine die HID.cpp direkt von Arduino

von Kolja L. (kolja82)


Lesenswert?

Geh doch vor jedem wirklichen Schritt, einen in die Referenz Ecke?

von Max (Gast)


Lesenswert?

Das Problem ist, dass ich zB zu einer bestimmten Pixelkoordinate fahren 
will die auch bekannt ist
Nun muss ich mit der relativen Bewegung eine Zahl auswählen bei der ich 
denke sie könnte Ca richtig sein, dann teste ich schaue wo die Maus 
wirklich rauskommt und verändere die relative Bewegung. Mit unter 10 
Versuchen kommt man dementsprechend niemals auf die richtige Koordinate. 
Hat man nun ein Programm, dass viele dieser Bewegungen benötigt, so wird 
das schon sehr langwierig und sobald man natürlich die 
Bewegungsgeschwindigkeit ändert oder aufs nächste Gerät wechselt kann 
man absolut alle Bewegungen nochmals neu erstellen
Das würde durch eine absolute Mausbewegung schon sehr stark vereinfacht

von Peter D. (peda)


Lesenswert?

Die Dynamik macht der Maustreiber. Siehe Gerätemanager->Maus.

von Max (Gast)


Lesenswert?

Ist in dem Fall ein android Betriebsystem auf einer TV Box
Soweit ich das bisher gesehen habe gab es da keine Einstellung

von Cursor (Gast)


Lesenswert?

Jacko schrieb:
> Absolute Mausbewegung? - Schwer vorstellbar, was ist denn, wenn
> man die Maus anhebt und woanders hinsetzt???
> Aus deinen weiteren Bemerkungen schließe ich, dass dich die
> Maus-Optimierungen stören. Die sind aber für die normale Bedienung eher
> vorteilhaft - oder willst du die Maus dreimal (mit abheben) über das
> Mouse-Pad schieben, um von einem Bildschirmrand zum anderen zu kommen?
> Für exakte Eingaben (z.B. CAD) gab es mal Grafik-Tablets.
> Heute, bei Wisch-und-Spreiz-und-Hoppla-wollte-ich-nicht, scheint da kein
> Bedarf mehr zu sein.

Ich komme mit meinem Zeiger über zwei Bildschirme ohne 
Beschleunigungsquatsch und ohne anheben zu müssen; dabei kann ich selbst 
die kleinen GUI Elemente noch zuverlässig treffen. Ich glaube ihr macht 
was falsch.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Hmm, also wie versprochen poste ich mal den USB Descriptors meines 
Tablet Adapters, der absolute Koordinaten an den Host liefert.
Das ist ein V-USB Projekt gewesen, sollte aber trotzdem verständlich 
sein:
1
/* ----------------------------- USB interface ----------------------------- */
2
/* declare a digitzer device generated with HID Descriptor tool */
3
/* 4 buttons (reports only 3 for compatibility), absolute pointer , normally generates X/Y valus of max. 15 bits    
4
 * this represents an absolute pointer device with a resolution of 0.1 mm (2972 dots on a 29,7 cm tablet)
5
 * to the OS . 
6
*/
7
PROGMEM char usbHidReportDescriptor[60] = {
8
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
9
    0x09, 0x02,                    // USAGE (Mouse)
10
    0xa1, 0x01,                    // COLLECTION (Application)
11
    0x09, 0x01,                    //   USAGE (Pointer)
12
    0xa1, 0x00,                    //   COLLECTION (Physical)
13
    0x05, 0x09,                    //     USAGE_PAGE (Button)
14
    0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)
15
    0x29, 0x03,                    //     USAGE_MAXIMUM (Button 3)
16
    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
17
    0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)
18
    0x95, 0x03,                    //     REPORT_COUNT (3)
19
    0x75, 0x01,                    //     REPORT_SIZE (1)
20
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
21
    0x95, 0x01,                    //     REPORT_COUNT (1)
22
    0x75, 0x05,                    //     REPORT_SIZE (5)
23
    0x81, 0x03,                    //     INPUT (Cnst,Var,Abs)
24
    0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)
25
    0x09, 0x30,                    //     USAGE (X)
26
    0x09, 0x31,                    //     USAGE (Y)
27
    0x35, 0x00,                    //     PHYSICAL_MINIMUM (0)
28
    0x46, 0x9d, 0x0b,              //     PHYSICAL_MAXIMUM (2973)
29
    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
30
    0x26, 0x9d, 0x0b,              //     LOGICAL_MAXIMUM (2973)
31
    0x65, 0x11,                    //     UNIT (SI Lin:Distance)
32
    0x55, 0x0e,                    //     UNIT_EXPONENT (-2)
33
    0x75, 0x10,                    //     REPORT_SIZE (16)
34
    0x95, 0x02,                    //     REPORT_COUNT (2)
35
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
36
    0xc0,                          //   END_COLLECTION
37
    0xc0                           // END_COLLECTION
38
};
Wie man sieht, ist das ein 12" Tablett mit 2974 * 2974 Pixeln für X und 
Y.

Ansonsten meldet sich das Dings als normales Pointer Device unter Linux, 
Windows und Mac OS am Rechner. Ein HID File oder so habe ich nie ändern 
müssen.

: Bearbeitet durch User
von npn (Gast)


Lesenswert?

Von einer Maus können prinzipbedingt keine absoluten Koordinaten kommen.
Die Bewegung der Maus bringt lediglich Increment-Schritte in die 
Bewegungsrichtung. Wenn du die Maus anhebst und 10cm weiter wieder 
absetzt, kommt keine andere Position. Nur die Bewegung auf der 
Tischplatte verändert die Position des Mauszeigers.
Absolute Koordinaten hast du z.B. bei einem Grafiktablett. Dort wird die 
Stelle, wo du den Stift auf das Tablett setzt, als Koordinaten 
übermittelt. Und dort funktioniert das auch, daß du den Stift links 
unten vom Tablett abhebst und rechts oben wieder auf das Tablett setzt. 
Dann wird der Mauscursor auch rechts oben auftauchen. Eben weil hier 
absolute Koordinaten übertragen werden. Und zwar nicht vom Stift, 
sondern vom Tablett.
Die kann aber eine normale Maus nie liefern. Weil sie keinerlei 
absoluten Bezug zur Tischplatte hat.

von Lars (Gast)


Lesenswert?

npn schrieb:
> Von einer Maus können prinzipbedingt keine absoluten Koordinaten kommen.

Das ist ja im Grunde nicht die Frage. Die Frage ist eher ob der 
HID-Treiber das unterstüzt. Ich vermute, dass er das tut weil es auch 
Zeigergeräte mit absoluter Postitionierung gibt (Resistive Touchscreens 
die via USB angebunden wurden z.B. in alten Kassensystemen).Und die sind 
vmtl. auch in der HID-Klasse abgedeckt. Es ist also eine Frage der 
HID-Implementierung auf dem Arduino.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Lars schrieb:
> Die Frage ist eher ob der
> HID-Treiber das unterstüzt.

Tut er, wie oben beschrieben. Mein Tablet läuft an den genannten OS ohne 
irgendwelche Zusatztreiber. Bei Mac OS 9 und X ist es schwer 
rauszufinden, aber unter Windows wird der normale generische Maustreiber 
benutzt. Auch der ulkige Gnome Desktop unter Debian schluckt das Tablett 
ohne Murren.

npn schrieb:
> Die kann aber eine normale Maus nie liefern. Weil sie keinerlei
> absoluten Bezug zur Tischplatte hat.

Darum gehts auch nicht. Der TE möchte eine Maus nachbilden, nur eben mit 
absoluten Koordinaten.

: Bearbeitet durch User
von georg (Gast)


Lesenswert?

Matthias S. schrieb:
> Der TE möchte eine Maus nachbilden, nur eben mit
> absoluten Koordinaten.

Das geht eben nicht - man kann mit einem Tablett eine Maus emulieren, 
aber nicht umgekehrt. Eine Maus erfasst Bewegungen relativ zum letzten 
Position. Aus relativen Koordinaten kann man keine absoluten errechnen. 
Wenn ich die Maus in die obere linke Ecke des Mauspads setze, woher soll 
das arme Mäuschen wissen, dass es links oben ist? Und dann noch ohne 
Mauspad??

Deswegen gibt es auch immer noch Tabletts in jeder Grösse.

Georg

von Rolf M. (rmagnus)


Lesenswert?

georg schrieb:
> Matthias S. schrieb:
>> Der TE möchte eine Maus nachbilden, nur eben mit
>> absoluten Koordinaten.
>
> Das geht eben nicht - man kann mit einem Tablett eine Maus emulieren,
> aber nicht umgekehrt.

Mit "Maus" ist hier ganz offensichtlich einfach allgemein ein Zeigegerät 
gemeint. Die gibt es relativ oder absolut. Wie das mechanisch ausgeführt 
ist, spielt für den USB und den Rechner überhaupt keine Rolle. Der muss 
nur wissen, ob er relative oder absolute Koordinaten bekommt.
Der TE hat auch überhaupt keine echte Maus, sondern einfach ein Gerät, 
das als Zeigegerät fungiert und Koordinaten für den Mauszeiger sendet. 
Momentan sind das relative Koordinaten, aber die sind für seinen 
Anwendungsfall ungeeignet, weshalb er lieber absolute Koordinaten senden 
will.
Dazu muss man sich nicht auf den Begriff "Maus" versteifen.

>> Heute, bei Wisch-und-Spreiz-und-Hoppla-wollte-ich-nicht, scheint da kein
>> Bedarf mehr zu sein.
>
> Ich komme mit meinem Zeiger über zwei Bildschirme ohne
> Beschleunigungsquatsch und ohne anheben zu müssen; dabei kann ich selbst
> die kleinen GUI Elemente noch zuverlässig treffen. Ich glaube ihr macht
> was falsch.

Seh ich auch so. Diese Mausbeschleunigung ist was furchtbares. Ich weiß 
nicht, wie man präzise steuern soll, wenn der Faktor zwischen Bewegung 
der Maus und der des Mauszeigers dauernd variiert, abhängig davon, wie 
schnell man die Maus bewegt.
Bewege ich die Maus zu langsam, muss ich Meter zurücklegen, um an mein 
Ziel zu kommen, bewege ich sie zu schnell, klebt der Mauszeiger sofort 
am Bildrand. Ist natürlich etwas überspitzt formuliert, aber so ungefähr 
fühlt sich "Mausbeschleunigung" für mich an.

von npn (Gast)


Lesenswert?

Rolf M. schrieb:
> Bewege ich die Maus zu langsam, muss ich Meter zurücklegen, um an mein
> Ziel zu kommen, bewege ich sie zu schnell, klebt der Mauszeiger sofort
> am Bildrand. Ist natürlich etwas überspitzt formuliert, aber so ungefähr
> fühlt sich "Mausbeschleunigung" für mich an.

Du weißt aber schon, daß man den Beschleunigungsfaktor einstellen kann, 
oder? Für mich funktioniert es einwandfrei. Ich hab die Geschwindigkeit 
etwa in der Mitte stehen und das Häkchen bei "Zeigerbeschleunigung 
verbessern". Mir ist es noch nie vorgekommen, dass ich an den 
Bildschirmrand geknallt bin.

von Rolf M. (rmagnus)


Lesenswert?

npn schrieb:
> Rolf M. schrieb:
>> Bewege ich die Maus zu langsam, muss ich Meter zurücklegen, um an mein
>> Ziel zu kommen, bewege ich sie zu schnell, klebt der Mauszeiger sofort
>> am Bildrand. Ist natürlich etwas überspitzt formuliert, aber so ungefähr
>> fühlt sich "Mausbeschleunigung" für mich an.
>
> Du weißt aber schon, daß man den Beschleunigungsfaktor einstellen kann,
> oder?

Ja. Trotzdem ist die Proportionalität zwischen dem Weg, den die Maus 
zurücklegt und dem Weg, den der Mauszeiger zurücklegt, für mich 
essenziell. Alles andere finde ich extrem irritierend.

> Für mich funktioniert es einwandfrei. Ich hab die Geschwindigkeit
> etwa in der Mitte stehen und das Häkchen bei "Zeigerbeschleunigung
> verbessern". Mir ist es noch nie vorgekommen, dass ich an den
> Bildschirmrand geknallt bin.

Ja, wie gesagt, das war die überspitzte Variante. Bei eingeschalteter 
Mausbeschleunigung sieht das bei mir etwa so aus: Wenn ich zu einem vom 
Mauszeiger recht weit entfernten Ziel will, bewege ich die Maus schnell 
dorthin. Dabei schieße ich dann über das Ziel hinaus, zu dem ich 
eigentlich wollte, weil sich der Mauszeiger zu schnell bewegt. Dann 
bewege ich die Maus zum Zielen langsamer zurück und muss dann aber einen 
gefühlt ewig weiten Weg zurücklegen, um endlich am Ziel anzukommen. 
Wesentlich weiter jedenfalls als ich basierend auf der letzten 
Mausbewegung erwarten würde.
Die Mausbeschleunigung stört einfach meine Hand-Auge-Koordination.

von Peter D. (peda)


Lesenswert?

Wie schon gesagt, die Dynamik macht der Treiber in Deinem OS. Wenn das 
OS keine Einstellung zuläßt, dann nimm ein anderes OS.

Rolf M. schrieb:
> Die Mausbeschleunigung stört einfach meine Hand-Auge-Koordination.

Das scheint nur so, der Mensch gewöhnt sich schnell an etwas. Ist wie 
beim Autofahren lernen, da lenkt man zuerst auch ganz unbeholfen und 
landet auf der Gegenspur oder dem Fußweg.

Bei meinem W10-Notebook mit Touchpad ohne Maustasten habe ich auch erst 
geflucht und ständig öffneten sich Programme ungewollt. Mit der Zeit 
geht das Tippen aber schon ganz gut.

von Rolf M. (rmagnus)


Lesenswert?

Peter D. schrieb:
> Wie schon gesagt, die Dynamik macht der Treiber in Deinem OS. Wenn das
> OS keine Einstellung zuläßt, dann nimm ein anderes OS.

In meinem OS ist so ein Mist gar nicht erst per Default eingestellt.

Peter D. schrieb:
> Rolf M. schrieb:
>> Die Mausbeschleunigung stört einfach meine Hand-Auge-Koordination.
>
> Das scheint nur so, der Mensch gewöhnt sich schnell an etwas. Ist wie
> beim Autofahren lernen, da lenkt man zuerst auch ganz unbeholfen und
> landet auf der Gegenspur oder dem Fußweg.

Ich glaube, da hätte ich ähnliche Probleme, wenn die Lenkübersetzung 
sich ändern würde, abhängig davon, wie schnell man das Lenkrad dreht.

> Bei meinem W10-Notebook mit Touchpad ohne Maustasten habe ich auch erst
> geflucht und ständig öffneten sich Programme ungewollt. Mit der Zeit
> geht das Tippen aber schon ganz gut.

Sowas kaufe ich erst gar nicht. Ich bevorzuge Dinge, die so sind, wie 
ich sie brauche oder sich entsprechend anpassen lassen und nicht welche, 
an die man sich nicht erst gewöhnen muss und die "mit der Zeit schon 
ganz gut" gehen, weil jemand meinte, das sei so schicker oder billiger 
oder so.
Ich kenne mehrere Leute, die inzwischen bei ihrem Laptop immer eine Maus 
mitnehmen, weil die Touchpads nicht mehr zu gebrauchen sind.

von npn (Gast)


Lesenswert?

Rolf M. schrieb:
> Ich glaube, da hätte ich ähnliche Probleme, wenn die Lenkübersetzung
> sich ändern würde, abhängig davon, wie schnell man das Lenkrad dreht.

Di wirst lachen. Es gibt tatsächlich Autos, da wird der Lenkausschlag 
bei größeren Geschwindigkeiten reduziert...

https://www.welt.de/motor/news/article128944770/Geschwindigkeitsabhaengige-Lenkung-von-Ford.html

von Rolf M. (rmagnus)


Lesenswert?

npn schrieb:
> Es gibt tatsächlich Autos, da wird der Lenkausschlag
> bei größeren Geschwindigkeiten reduziert...

Ja, bei größeren Fahrzeuggeschwindigkeiten, aber nicht abhängig davon, 
wie schnell man das Lenkrad dreht.
Wobei man da auch aufpassen muss. Wenn das nachher nicht zwischen 
zwei/drei Varianten umschaltbar ist, wird's bestimmt einige Leute geben, 
für die sich die Lenkung komisch anfühlt und die das Auto deshalb dann 
gar nicht kaufen.

: Bearbeitet durch User
von Lutz H. (luhe)


Lesenswert?

Matthias S. schrieb:
> V-USB Projekt

Ist https://www.obdev.at/products/vusb/index-de.html  richtig?

Was für eine geheimnisvolle Abkürzung.
Ich würde gern etwas genaueres über das Projekt lesen.
Bitte einen Link.

Danke.

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Lutz H. schrieb:
> Was für eine geheimnisvolle Abkürzung.

Steht wohl für 'Virtuelles USB', da es ja keinerlei besondere USB 
Technik benutzt.

Lutz H. schrieb:
> Ich würde gern etwas genaueres über das Projekt lesen.

Über welches Projekt? Falls du meinen Tabletkonverter meínst, der ein 
altes Tektronix Qualitätstablet auf USB umschnurzelt, das findest du 
hier:
http://www.schoeldgen.de/avr/
Roll ein wenig runter auf 'USB Interface for Tektronix 4957 tablet using 
V-USB'

von Lutz H. (luhe)


Lesenswert?

Danke

von Bastler (Gast)


Lesenswert?

V-USB hieß früher mal anders, Obdev musste den Namen aber ändern weil 
der schon beansprucht wurde. Ich glaub es hier mal avr-usb und das 
wollte Atmel für sich selbst benutzen? Ist ja auch egal, nur so ist der 
Name V-USB zustande gekommen.

Arduino scheint einen absoluten Modus für ihre HID-Bibliothek zu können:
https://forum.arduino.cc/index.php?topic=94140.0

Da ist zumindest eine beschreibung wie man es erreichen kann. Ob die 
noch geht hab ich nicht probiert.

von Max H. (max7198)


Lesenswert?

Habe gerade nochmal etwas Zeit gehabt und mal einige Library's getestet 
und bin fündig geworden:


https://github.com/NicoHood/HID

Heißt HID-Project.h und funktioniert einwandfrei sowohl für absolute, 
als auch relative Bewegungen.
Obere Linke Ecke ist immer Koordinate 0/0 und unten rechts 32767/32767
dh wenn man es dann wirklich auf genaue Pixel haben möchte muss man halt 
einfach noch einmal mappen :)

Die Library hat auch ansonsten noch einige HID Befehle, die es 
standardmäßig bei Arduino nicht gibt

Danke für eure Hilfe

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.