Re: Logitech MediaPlay

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 3 Feb 2006 11:32:59 +0100 (CET)

Christian Holzberger <molle(at)idontgivemynametoamachine.net> wrote:
> Oliver Fromme wrote:
> > Christian Holzberger <molle(at)idontgivemynametoamachine.net> wrote:
> > > Das stimmt so nicht. Xev erkennt schon 7 der 12 Buttons,
> >
> > Xev »erkennt« gar nichts, sondern gibt nur Events aus.
> > Daß die Buttons irgendwelche Events generieren, mag ja
> > durchaus sein.
>
> hehe, das wollt ich doch sagen, Xev gibt für 7 buttons events aus:

[aufs wesentliche gekürzt]

> state 0x10, button 1, same_screen YES
> state 0x10, button 4, same_screen YES
> state 0x10, button 6, same_screen YES

Das sind ja erstmal nur drei verschiedene Buttons. Die
Button-Nummern können von 0 bis 255 gehen.

Ich habe mir mal kurz die Mühe gemacht, den aktuellen
Button-Support von X zu recherchieren. Leider ist das
ganze ein wenig verwirrend. Das normale X-Protokoll
unterstützt nach wie vor nur fünf verschiedene Buttons
(die, wie gesagt, Codes von 0 bis 255 haben können,
was man mit xmodmap(1) konfigurieren kann). Siehe z.B.
die Ausgabe von:

$ grep Button /usr/X11R6/include/X11/X.h

Selbst die XInputExtension unterstützt nur fünf Buttons,
siehe XOpenDevice(3X11).

An einigen Stellen scheinen es aber die Entwickler von
X.org aufgebohrt zu haben. Während auf einem Rechner,
auf dem ich noch XFree86 4.4.0 laufen habe (aktuell ist
4.5.0), auch xmodmap und andere Tools maximal fünf
Pointer-Buttons handhaben wollen, scheint das unter
einem aktuellen X.org auf elf erhöht worden zu sein.
Allerdings gehe ich davon aus, daß das inkompatibel
mit anderen X-Server ist.

Du kannst ja mal testweise »xmodmap -pp« eingeben und
gucken, was das ausgibt.

> > > Wie gesagt ich kann 7 nutzen also stimmt die Aussage so nicht.
> >
> > Was meinst Du mit »nutzen«? Wie nutzt Du diese sieben
> > denn? Daß das X-Protokoll nur fünf Pointer-Buttons unter-
> > scheiden kann, ist nunmal so und läßt sich nicht ohne wei-
> > teres ändern.
>
> Warum kann mir Xev diese anderen Buttons dann anzeigen?

Wir reden aneinander vorbei. :-)

Es mag ja durchaus sein, daß xev bei jedem Knöpfchen ein
Event anzeigt. Das heißt aber noch lange nicht, daß (a)
alle Buttons im X-Protokoll und somit auf Applikations-
ebene unterschieden werden können, und daß (b) irgendwel-
chen Anwendungen die Buttons konkret nutzen können.

Wenn ich von »nutzen« sprach, meinte ich nicht xev, denn
xev ist nur ein Debugging-Tool, keine Anwendung. Mit
»nutzen« meine ich, ob Du z.B. im Webbrowser oder Office-
Programm (oder sonstwo) verschiedene Aktionen mit jedem
der Buttons verknüpfen kannst.

Und interessant wäre dann auch, ob das auch remote mit
einem anderen X-Server funktioniert. Da tippe ich mal
auf ein definitives »nein«. :-)

In einer anderen Mail schriebst Du:
> Kann man den UMS irgendwie ohne Codeänderungen zwingen mehr als 7
> Buttons zu erkennen? Per sysctl finde ich da nichts... (habe aber mit
> kerneloptionstuning in fbsd aber auch nicht so die Erfahrung)
>
> ums0: Logitech USB Receiver, rev 1.10/25.00, addr 2, iclass 3/1
> ums0: 7 buttons and Z dir.
> ^ hmmmmm.... (das stimmt so nicht)

Aha, warum hast Du die Ausgabe nicht mal früher gezeigt?
Das ist doch mal etwas handfestes.

Ein oberflächlicher Blick in /usr/src/sys/dev/usb/ums.c
liefert nach einer Sekunde folgende Zeile:

#define MAX_BUTTONS 7 /* chosen because sc_buttons is u_char */

Du könntest mal versuchen, das Limit auf 15 zu erhöhen.
Du mußt dann allerdings auch an einigen Stellen die
Typen anpassen, damit das funktioniert, z.B. in der
Funktion ums_intr() in der Zeile »u_char buttons = 0;«
einen int draus machen.

Per moused sollten dann immerhin zehn Buttons nutzbar sein
(mehr gibt das sysmouse-Protokoll nicht her). Bei direkter
Verwendung des ums-Treibers sollten alle 12 Buttons gehen.
Was X11 daraus macht, ist natürlich wieder ein andere
Frage, siehe oben.

Gruß
   Olli

PS: Falls das mit dem Patch an ums.c funktioniert, kannst
Du ja mal versuchen, das per send-pr einzureichen.

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"I have stopped reading Stephen King novels.
Now I just read C code instead."
        -- Richard A. O'Keefe
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 03 Feb 2006 - 11:36:19 CET

search this site