Bluetooth mouse does not connect after reboot

Maksim Yevmenkin maksim.yevmenkin at gmail.com
Fri Jan 21 23:41:37 UTC 2011


On Fri, Jan 21, 2011 at 11:44 AM, Iain Hibbert <plunky at rya-online.net> wrote:
> On Fri, 21 Jan 2011, David Demelier wrote:
>
> the HID descriptor you posted decodes as
>
> Collection page=Generic_Desktop usage=Mouse
> Collection page=Generic_Desktop usage=Pointer
>  Input id=2 size=1 count=1 page=Button usage=Button_1 Variable, logical range 0..1
>  Input id=2 size=1 count=1 page=Button usage=Button_2 Variable, logical range 0..1
>  Input id=2 size=1 count=1 page=Button usage=Button_3 Variable, logical range 0..1
>  Input id=2 size=1 count=1 page=Button usage=Button_4 Variable, logical range 0..1
>  Input id=2 size=1 count=1 page=Button usage=Button_5 Variable, logical range 0..1
>  Input id=2 size=1 count=1 page=Button usage=Button_6 Variable, logical range 0..1
>  Input id=2 size=1 count=1 page=Button usage=Button_7 Variable, logical range 0..1
>  Input id=2 size=1 count=1 page=Button usage=Button_8 Variable, logical range 0..1
>  Input id=2 size=12 count=1 page=Generic_Desktop usage=X Variable Relative, logical range -2047..2047
>  Input id=2 size=12 count=1 page=Generic_Desktop usage=Y Variable Relative, logical range -2047..2047
>  Input id=2 size=8 count=1 page=Generic_Desktop usage=Wheel Variable Relative, logical range -127..127
>  Input id=2 size=8 count=1 page=Consumer usage=AC_Pan Variable Relative, logical range -127..127
> End collection
> End collection
>  Input id=16 size=8 count=6 page=Microsoft usage=0x0001, logical range 0..255
>  Output id=16 size=8 count=6 page=Microsoft usage=0x0001, logical range 0..255
> Collection page=Microsoft usage=0x0001
>
> so for report # 2 we expect a six byte report at the end of the packet
> (the rest is ACL (5), L2CAP (4) and HID (2) headers..)
>
>> for wheel up:
>> > 02 0C 20 0C 00 08 00 43 00 A1 02 00 00 00 00 01 00
>>
>> for wheel down:
>> > 02 0C 20 0C 00 08 00 43 00 A1 02 00 00 00 00 FF 00
>
> those are GenericDesktop/Wheel +1 (01) and -1 (FF) values, probably you
> can make them larger by spinning the wheel faster
>
>> for wheel logical button to left:
>> > 02 0C 20 0C 00 08 00 43 00 A1 02 00 00 00 00 00 FF
>> > 02 0C 20 0C 00 08 00 43 00 A1 02 00 00 00 00 00 00
>>
>> and for wheel logical button to right:
>> > 02 0C 20 0C 00 08 00 43 00 A1 02 00 00 00 00 00 01
>> > 02 0C 20 0C 00 08 00 43 00 A1 02 00 00 00 00 00 00
>
> and Consumer/AC_PAN -1 (ff) and +1 (01) and since it comes from a button
> you probably can't increase the speed - might accelerate, if you held it
> down? They sent a 00 on release though I don't think that is required
> (don't think my apple magic mouse ever did that with PAN)

thank you Iain :)

so, yes, those events decode as Consumer/AC_PAN (aka "w" direction).
as i mentioned before, mouse_info structure (or more specifically
mouse_data structure) does not contain place to report "w" direction.
the good news is that mouse_data is a part of a union inside
mouse_info structure. theoretically, it should be possible to add
place for "w" direction in mouse_data, or, even create completely new
mouse_data2. of course there is still a work to do with ioctl.

another option is decode those as button clicks, i.e. less than zero -
button X, more than zero - button X+1. not sure if this is a good idea
though.

thanks,
max


More information about the freebsd-bluetooth mailing list