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
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.
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.
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.
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
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
Ist in dem Fall ein android Betriebsystem auf einer TV Box Soweit ich das bisher gesehen habe gab es da keine Einstellung
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.
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 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.
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.
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
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
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.
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.
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.
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.
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.
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
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
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
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'
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.