Re: Logitech MediaPlay

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 3 Feb 2006 15:28:14 +0100 (CET)

Christian Holzberger <molle(at)idontgivemynametoamachine.net> wrote:
> Oliver Fromme wrote:
> > Christian Holzberger <molle(at)idontgivemynametoamachine.net> wrote:
> > > 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.
>
> aber int waehr auch nicht richtig, da es ja bei 64 bit maschinen auch 64
> bit entspricht bei 32 bit maschinen 32 bit (oder so aehnlich :) usw.
> gibt es da nicht einen fixen 32 bit typen?

Bitte nicht komplizierter machen als es ist. :-)

Der Treiber speichert in der Variablen eine Bitmaske (pro
Button ein Bit). Das oberste Bit bleibt ungenutzt, somit
ist im ursprünglichen u_char Platz für den Status von
sieben Buttons.

Ein int ist auf _allen_ Architekturen, auf denen FreeBSD
läuft, 32 Bits groß, somit würden 15 Buttons bequem rein-
passen. Du kannst das Limit sogar auf 31 erhöhen, wenn
Du magst.

Selbst _wenn_ ein int auf einer bestimmten Plattform 64
Bits umfassen würde, wäre das nicht tragisch. Die oberen
Bits blieben dann halt ungenutzt. Übrigens, wenn Du mal
in /usr/include/sys/mouse.h reinguckst, wirst Du fest-
stellen, daß dort im struct mousestatus die Buttons eben-
falls in einem int festgehalten werden.

Gruß
   Olli

-- 
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.
"Being really good at C++ is like being really good
at using rocks to sharpen sticks."
        -- Thant Tessman
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 - 15:33:26 CET

search this site