USB-Mäuse...

...für und mit Amiga OS4

Moderator: OS4Welt-Team

Benutzeravatar
whose
Beiträge: 1016
Registriert: 26. November 2010 15:48

USB-Mäuse...

Beitrag von whose »

Ahoi!

Für größere Sachen fehlt mir momentan etwas die Zeit, aber ganz ruht die Arbeit daran trotzdem nie ;-)

Nichts desto trotz, da ich gerade so schön im Fluß bin:

Wer hat eine USB-Maus, die er sich für den Amiga zugelegt hat, aber nicht mit aller Funktionalität nutzen kann?

Ich hatte mir die Cherry Xero zugelegt und es nervte mich ziemlich, daß das ganze Tasten-Geraffel so out-of-the-box nicht funktionierte. Mit keinem der mitgelieferten Treiber (bootmouse.fdclass oder hid.fdclass).

Da habe ich mich auf den Hintern gesetzt und mit Rene W. Olsens rMouse-Treiber experimentiert. Kurz: Das Teilchen funktioniert jetzt. Vollständig. Es gibt noch, je nach Maus, ein Problem beim Vergrößern/Verkleinern von Fenstern, das laggt dann ziemlich. Ich habe bereits Kontakt mir Rene W. Olsen aufgenommen und wir arbeiten an dem Problem.

Bis wir das gelöst haben, kann ich aber trotzdem für die eine oder andere Maus schon was machen. Wenn also jemand eine Maus "über" hat, so kann er mir die zuschicken, ich bringe das Ding zum Laufen und schicke die Maus dann wieder zurück. Den zugehörigen Treiber schicke ich per email ;-) Als "Lohn" reicht es, wenn ich das Rückporto dazugelegt bekomme. Wer das machen will, mag mir eine PM oder email schicken. Dann kaspern wir alles andere ab. Die Maus selbst benötige ich aus leicht ersichtlichem Grund: Ich muß den Datenfluß beobachten können ;-)

Mein Ziel ist es, eine etwas umfangreichere Sammlung von Maustreibern (evtl. später auch Tastaturen, Gamer-Tastas vor allem) aufzubauen, die ggf. auch im Sourcecode zur Verfügung steht. Irgendwer muß ja damit anfangen, wenn aus anderen Richtungen sonst nichts kommt. Diese Stagnation geht mir irgendwie ziemlich auf den Zeiger inzwischen...
Wolfgang Hosemann von Insane-Software.de - Spiele und Software für Amiga OS 4.x
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3514
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 34 Mal

Re: USB-Mäuse...

Beitrag von Cyborg »

Nutzt Deine Xero herstellerspezifisches Gelumpe für die Zusatztasten? Soweit ich weiß - aber ich bin nicht unbedingt USB Experte - definiert HID schon eine ganze Menge an Buttons und Rädchen, so daß es mich schon wundert, daß die Maus nicht einfach so mit HID Class funktioniert :huh:

Und insbesondere wundert es mich, daß RWO Dir zwar bei Deiner Arbeit hilft, aber nicht auf die Idee kommt, solche Verbesserungen in Sirion direkt einzupflegen.. gut, sein rmouse soll ein bootmouse Class Treiber sein.. das bootmouse Protocol ist gegenüber HID stark vereinfacht, von daher kann es gut sein, daß das nie für mehr als 2 Buttons gedacht war.. bin mir da aber nicht sicher. Trotzdem sollten solche Verbesserungen in der Kompatibilität definitiv in Sirions HID Klasse landen..
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
whose
Beiträge: 1016
Registriert: 26. November 2010 15:48

Re: USB-Mäuse...

Beitrag von whose »

Hm, so einfach ist das leider nicht, deswegen gibts ja dieses Zusatz-Geraffel an Treibern für Windoof...

Ich erläutere das mal anhand der Xero: Das HID-Protokoll unterstützt bis zu 8 digitale "Kanäle" für Buttons und so Zeug. Das Gleiche gilt für das Bootmouse-Protokoll, wobei bei beiden Protokollen nur die ersten 3 Tasten wirklich fest definiert sind (und demnach in der Hardware kompatibel sein müssen). Der Rest ist "widewidewie sie mir gefäääällt". Da fängt das Drama schon an. Ich hab keine Ahnung, wer sich das HID-Protokoll hat einfallen lassen, aber der gehört auf jeden Fall geteert und gefedert ;-) Richtig spannend wirds aber erst mit den Bewegungsachsen. Die sind, aus mir völlig unerfindlichem Grund, in HID und Bootmouse unterschiedlich definiert. Sprich, die können an unterschiedlichen Stellen des Packets auftauchen. Daher funktioniert die Xero in Sachen "Mauszeiger schieben" nicht korrekt mit bootmouse.fdclass, wohl aber mit hid.fdclass (letzteres scheint die Reports auszuwerten/zu interpretieren). Die Packetgröße gäbe das problemlos her, da die Xero ein 6-Byte-Packet sendet, in dem ALLE Daten enthalten sind (Knöpfe, Bewegungsachsen, Scrollrad). Ich wette, das ist bei den meisten anderen Mäusen auch der Fall. Wie immer jedoch wurde den Herstellern reichlich Spielraum gelassen, den die freudig nutzen, um ihr eigenes Süppchen zu kochen (immer die gleiche Geschmacksrichtung, nur die Farbe der Nudelbuchstaben ist leicht anders).

Für uns bedeutet das, daß wir hid.fdclass entweder korrektes Interpretieren der Reports beibringen müßten oder hid.fdclass einen Ankerpunkt für externe Zusatztreiber bräuchte (für jede sich daneben benehmende Maus wieder einen eigenen, mit eigener Kennung und blah). Ehrlich gesagt, mit einem Bloatware-hid.fdclass wäre ich überhaupt nicht glücklich.

Daher mein Thread hier. Für jede Maus einen simplen Treiber. Mein weiteres Ziel ist, den auch Kickstart-tauglich zu machen, so daß die Dinger dann auch problemlos fürs Early-Startup brauchbar sind (die Mäuse). Ist erstmal simpler, als hid.fdclass die Report-Interpretiererei richtig beizubringen (Du weißt selbst, daß das ne ganze Weile dauern kann).

Je mehr Mäuse ich in die Finger kriege, desto eher fällt mir vielleicht eine Gemeinsamkeit ins Auge, die man beim Interpretieren der Reports ausnutzen könnte. Aber ich muß die Dinger bei der Arbeit beobachten können, da jeder Hersteller sein Protokoll vermutlich unter den Atomwaffen-Sperrvertrag gestellt hat und daher Null öffentliche Informationen zu kriegen sind, wer welches Detail wie "gelöst" hat.

Könnte man jedenfalls meinen, so ein irres Geheimnis, wie die daraus immer machen...
Wolfgang Hosemann von Insane-Software.de - Spiele und Software für Amiga OS 4.x
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3514
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 34 Mal

Re: USB-Mäuse...

Beitrag von Cyborg »

Stimmt schon, USB ist eines der übelsten Negativbeispiele für Pseudo-Standardisierung.. wird wohl nur noch von der HBCI "Spezifikation" getoppt, bei der gefühlt 80% aller Felder als "optional" gekennzeichnet sind, damit jede Hinz- und Kunzbank auch ja damit zufrieden ist :bang:

Trotzdem wäre ich persönlich nicht so glücklich mit 5 Millionen Einzeltreiber... Wenn irgendwie möglich, sollten die schon auf einen einzigen (bzw. zwei: bootmous/HID) eingedampft werden, finde ich... wenn wirklich mal ein übler Exot dabei ist und einen eigenen Treiber braucht, gut.. aber ansonsten.. Wie Du schon angedeutet hast, kann der Treiber ja teils modular sein, aber nach außen (sprich zum User hin) sollte immer nur HID oder bootmouse sichtbar sein .. das Thema habe ich schon Mal vor längerer Zeit aufgebracht, denke ich... ideal wäre, wenn es immer nur 1 "Treiber" pro "Klasse" geben würde.. also z.B. ethernet.device, wireless.device, ide.device, etc... die Gerätespezifischen Teile sollten am Besten als Plugins realisiert sein. Der Benutzer wird dann nicht verwirrt oder muß mühsam nach der Chipbezeichnung auf seiner Netzwerkkarte suchen, sondern wählt einfach "ethernet.device" oder gar "network.device" und entweder geht seine Karte oder eben nicht. Dieser "Zillionen Treiber Urwald wo sich jeder Otto-Normal-User verirren MUSS" in AmigaOS ist mir wie gesagt schon lange ein Dorn im Auge.. aber ich schweife ab :)

Was mich an Deiner Antwort noch verwirrt: Zuerst sagst Du, die Xero läuft mit HID einwandfrei, aber nicht mit bootmouse. Später sagst Du, wir müssten HID die entsprechenden Reports beibringen :huh: was denn nun? ;)
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
whose
Beiträge: 1016
Registriert: 26. November 2010 15:48

Re: USB-Mäuse...

Beitrag von whose »

Hupsi, etwas unklar ausgedrückt meinerseits...

also, mit hid.fdclass geht alles, was das Bootmouse-Protokoll an Minimum-Funktionen definiert und 4. und 5. Button. Lustigerweise funktioniert bei der Xero mit bootmouse.fdclass die Erkennung der Bewegungsachsen dann nicht einwandfrei (was mich aber nicht wundert, weil Cherry so brilliant war, die Daten insgesamt 1 Byte "nach hinten" zu schieben. Das Packet beginnt IMMER mit 0x20, erst danach kommen die tatsächlichen Nutzdaten. Frag mich nicht, was das soll...).

Die Funktion des Tilt-Wheels funktioniert mit hid.fdclass NICHT. rMouse.fdclass hingegen bedient diese Funktion auf Anhieb korrekt. Dafür ist dann das Scrollwheel invertiert und auch hier funktioniert die Achsen-Erkennung nicht korrekt... :spinner:

Ich mußte gar nicht viel verändern, nur das 0x20-Byte mit einbeziehen, das Scrollwheel invertieren und 4. + 5. Button hinzufügen, das wars.

Mir erscheint es so, als würden die Reports und Descriptors in hid.fdclass nicht vollständig oder nicht korrekt ausgewertet, sonst müßte das Tilt-Wheel auch auf Anhieb funktionieren, da es ganz simpel ein zweites Wheel (Horizontal halt) "emuliert". Es ist echt SO simpel ;-) Insofern ist es umso lustiger, daß man für das Tilt auch unter Windoof nen Extra-Treiber braucht :super:

Das Lagging-Problem scheint übrigens tiefer zu sitzen. Mit einer 1000DPI-Wintech-Maus gibt es dieses Lagging nicht (so stark). Die Änderungen, die René vorgeschlagen hatte, haben bisher auch nur Crashes ergeben ;-) Ich glaube allerdings auch nicht, daß sich da groß was am Lag verändern würde.

Mit einer "echten" Bootmouse zum Beispiel tritt es überhaupt nicht auf. Mit der Xero tritt es auch nur im Zusammenhang mit der Größenänderung eines Fensters/Scrolling im ReAction-/MUI-Kontext auf. Opaque Move ist genauso schnell wie immer. Irgendwas bremst da höllisch, sobald es mit der Xero in "Verbindung" kommt.

Ich habe "Kollege OHCI" im Verdacht...
Wolfgang Hosemann von Insane-Software.de - Spiele und Software für Amiga OS 4.x
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3514
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 34 Mal

Re: USB-Mäuse...

Beitrag von Cyborg »

Nun, mir wurde gesagt, daß HID mit aufgrund der üblen Spezifikation ein rechtes Monster wurde. Abgesehen davon war in der Vergangenheit tatsächlich oftmals HID das Problem, falls irgendein Inputdevice nicht korrekt funktionierte.. Sebastian hatte oft genug seine liebe Freude mit HID :( Kann also sehr gut sein, daß da mal wieder nicht alles rund läuft. :roll:

Über RWO's (System-)Codingkönnen und -stil behalte ich meine Meinung mal lieber für mich.

Falls die Xero noch weitere Blödsinnigkeiten macht, kann es sehr gut sein, daß der HCI-Treiber da mehr Abfragen machen muss oder sogar auf Polling umschwenkt, etc... Sebastian hat sehr viele Sicherheitsnetze in die HCI-Treiber eingebaut, damit die soviel Device-Blödsinn wie möglich abfedern können, nach dem sinnvollen Motto "Eine stotternde Maus ist besser als gar keine". Aber wie gesagt, ich hab zwar mal ein wenig im USB Stack rumgepfuscht und auch mit Treibern hantiert, aber meine Kenntnisse reichen nicht, um Dir jetzt einen Verdächtigen liefern zu können, sorry.
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
whose
Beiträge: 1016
Registriert: 26. November 2010 15:48

Re: USB-Mäuse...

Beitrag von whose »

Och Menno, immer noch unklar... :-D

Also, die Xero selbst stottert nicht. Solange man kein Fenster-Vergrößern oder Scrollen macht, läuft das Ding wunderbar glatt und reagiert blitzartig. Also ganz so, wie es sein soll.

RWO ist bei seinem Coding-Stil manchmal sehr direkt (simples Problem, simple Lösung), ansonsten konnte ich da nichts finden, was irgendwie ungeschickt gewesen wäre.

Bemerkenswert an der Xero ist eben dieses Verhalten beim Fenster-Vergößern/Scrollen. Das passiert auch, wenn sie via hid.fdclass "angetrieben" wird.

Ich mache später noch einen Versuch mit Multi-Buffering im Treiber (ne Hand voll USBIOReq), evtl. hilft das weiter. Wenn ja, dann kommt der OHCI-Treiber mit irgendwas an der Maus nicht ganz klar und verbrät mehr CPU-Zeit, als ihm zusteht (zu viele/zu lange dauernde Interrupts).
Wolfgang Hosemann von Insane-Software.de - Spiele und Software für Amiga OS 4.x
Benutzeravatar
whose
Beiträge: 1016
Registriert: 26. November 2010 15:48

Re: USB-Mäuse...

Beitrag von whose »

Ich glaube, ich kenne jetzt des Rätsels Lösung :-D

Der Verdacht ging in die völlig falsche Richtung... "Schuld" am Lag ist tatsächlich das SAM440ep!

Mit dem IO-Multibuffering konnte ich das Lag deutlich reduzieren, es ist aber noch da. Ich wurde ja schon stutzig, daß es da Unterschiede zwischen Resizing und Dragging eines Fensters gab, aber jetzt sieht man deutlich, wo es hakt. Ziehen eines kompletten Fensters ist jetzt exakt so schnell, wie man die Maus bewegt. Da wird die Hauptarbeit von der Gpu erledigt. Das Neuzeichnen beim Resizing erledigt aber hauptsächlich die Cpu, und die ist halt kein Dampfhammer :-D

Geht morgen dann ins Depot. Mit Installer-Script und entsprechendem Readme.
Wolfgang Hosemann von Insane-Software.de - Spiele und Software für Amiga OS 4.x
Benutzeravatar
Cyborg
AmigaOS Entwickler
Beiträge: 3514
Registriert: 28. September 2009 11:10
Hat sich bedankt: 12 Mal
Danksagung erhalten: 34 Mal

Re: USB-Mäuse...

Beitrag von Cyborg »

Wie gesagt, zu RWO sag ich nichts weiter.


Und nein, mir war es nicht mehr unklar, ob Du HID und/oder bootmouse bemängelst, hab das dann schon verstanden. Was ich meinte war, daß es durchaus sein kann, daß irgendetwas durcheinander kommt, wenn eine bestimmte Konstellation an Ereignissen gleichzeitig auftritt... z.B. Linke Maustaste gedrückt halten und X/Y Bewegung. Ähnliche Probleme gab es bereits.

Daß es letztendlich an der mangelnden CPU-Power liegt, ist einerseits erfreulich, aber andererseits natürlich äußerst bedauerlich.. Ist doch "nur" ein Windowresize... naja, um absolut sicher zu gehen, könntest Du noch versuchen, ob es tatsächlich schneller ist, wenn Du "mit Inhalt Größe ändern" in Prefs/GUI ausschaltest.
.. der SysOp hat immer recht :evil:

PGP Schlüssel verfügbar
Benutzeravatar
whose
Beiträge: 1016
Registriert: 26. November 2010 15:48

Re: USB-Mäuse...

Beitrag von whose »

Blitzschnell ists...
Wolfgang Hosemann von Insane-Software.de - Spiele und Software für Amiga OS 4.x
Antworten