Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 May 2011 12:13:08 -0700
From:      Maksim Yevmenkin <maksim.yevmenkin@gmail.com>
To:        David Demelier <demelier.david@gmail.com>
Cc:        freebsd-bluetooth@freebsd.org
Subject:   Re: Bluetooth mouse does not connect after reboot
Message-ID:  <BANLkTikeiZ61NwRSRh7xNqMTy97soxjc_A@mail.gmail.com>
In-Reply-To: <4DC0513A.5000805@gmail.com>
References:  <4D3889D2.80508@gmail.com> <201101202043.p0KKhDIB076736@lurza.secnetix.de> <AANLkTindTyEBAgGV3cBcSs6tGMtN8JtQ3_sHOF4n%2BnEs@mail.gmail.com> <4DBF0D26.8020703@gmail.com> <BANLkTi=dYv5R6jkqNhTj6m%2BZHK=afLXvow@mail.gmail.com> <4DC0513A.5000805@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, May 3, 2011 at 12:02 PM, David Demelier
<demelier.david@gmail.com> wrote:
> On 02/05/2011 22:24, Maksim Yevmenkin wrote:
>>
>> On Mon, May 2, 2011 at 12:59 PM, David Demelier
>> <demelier.david@gmail.com> =A0wrote:
>>
>>>
>>> I'm sorry to disturb you again.. I'm still guessin where to search how =
to
>>> get these horizontal events with my bluetooth mouse. I thing the
>>> mouse_info
>>> structure does not need to be extended I have a USB mouse that has the
>>> same
>>> horizontal buttons and they just works !
>>>
>>> They sends 7 and 8 events to X (checked with xev)
>>>
>>> What can I do to extend bthidd and this button support ?
>>
>> like i said before, you need to decode AC_Pan data from the report. i
>> just took a quick look at ums(4) driver and, it appears, that AC_Pan
>> events are translated into button events, i.e. values< =A00 is mask (1
>> << =A03) and values> =A00 is mask (1<< =A04) . you can add identical
>> translation to bthidd(8) to see if it works. you will need to modify
>> hid_interrupt() function in hid.c
>
> Max,
>
> I successfully made the patch but it's not the same mask. This diff just
> works!
>
> --- hid.c.orig =A02011-05-02 22:09:48.000000000 +0200
> +++ hid.c =A0 =A0 =A0 2011-05-03 20:57:46.000000000 +0200
> @@ -168,6 +168,16 @@
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0usage =3D HID_USAGE(h.usage);
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0val =3D hid_get_data(data, &h);
>
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* Horizontal buttons */
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (page =3D=3D HUP_CONSUMER && usage =3D=
=3D HUC_AC_PAN) {
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (val < 0)
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 mouse_butt =
|=3D (1 << 5);
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 else if (val > 0)
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 mouse_butt =
|=3D (1 << 6);
> +
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 mevents ++;
> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 }
> +
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0switch (page) {
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0case HUP_GENERIC_DESKTOP:
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0switch (usage) {
>
> Do you think it's a diff suitable to commit ?
>
> I'm so happy to make my horizontal buttons working :):)

ah, i see you already figured it out :) i can commit something like
this, i suppose. i would just move the statement into switch() below.
i suppose we could just document that ac_pan is encoded as 8 and 9
button presses.

thanks,
max



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTikeiZ61NwRSRh7xNqMTy97soxjc_A>