Opened 4 years ago
Last modified 4 years ago
#16764 new bug
Mouse scrolls too much
Reported by: | miqlas | Owned by: | nobody |
---|---|---|---|
Priority: | normal | Milestone: | Unscheduled |
Component: | Drivers/Input/HID/USB | Version: | R1/beta2 |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | x86-64 |
Description (last modified by )
This is hrev54904 x86-64.
I have a "Microsoft Wireless Mobile Mouse 1000" wireless mouse, which reports itself as:
045e:0745 /dev/bus/usb/0/11 "Microsoft Corp." "Nano Transceiver v1.0 for Bluetooth" ver. 0634
Scrolling with this mouse scrolls one page at time in WebPositive for example, while other mouse scrolls around 3 lines. I can't seem to find any option to set the scroll amount in Haiku.
USB hid report descriptors attached.
Removing and reattaching the USB receiver fixed it for now
Attachments (3)
Change History (10)
by , 4 years ago
Attachment: | usb_hid_report_descriptor_045e_0745_0.bin added |
---|
by , 4 years ago
Attachment: | usb_hid_report_descriptor_045e_0745_1.bin added |
---|
by , 4 years ago
Attachment: | usb_hid_report_descriptor_045e_0745_2.bin added |
---|
comment:1 by , 4 years ago
comment:2 by , 4 years ago
I have actually had this happen on Windows with some mice, but in reverse, i.e. scrolls too little, and removing/reinserting the dongle fixes the problem. So possibly not a Haiku issue, if it occurs in Linux intermittently or something like that.
comment:3 by , 4 years ago
Description: | modified (diff) |
---|
comment:4 by , 4 years ago
Description: | modified (diff) |
---|
comment:5 by , 4 years ago
First descriptor:
0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x06, // Usage (Keyboard) 0xA1, 0x01, // Collection (Application) 0x05, 0x08, // Usage Page (LEDs) 0x19, 0x01, // Usage Minimum (Num Lock) 0x29, 0x03, // Usage Maximum (Scroll Lock) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x75, 0x01, // Report Size (1) 0x95, 0x03, // Report Count (3) 0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x95, 0x05, // Report Count (5) 0x91, 0x01, // Output (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x05, 0x07, // Usage Page (Kbrd/Keypad) 0x1A, 0xE0, 0x00, // Usage Minimum (0xE0) 0x2A, 0xE7, 0x00, // Usage Maximum (0xE7) 0x95, 0x08, // Report Count (8) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x75, 0x08, // Report Size (8) 0x95, 0x01, // Report Count (1) 0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x19, 0x00, // Usage Minimum (0x00) 0x2A, 0x91, 0x00, // Usage Maximum (0x91) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x95, 0x06, // Report Count (6) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection
Second:
0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x02, // Usage (Mouse) 0xA1, 0x01, // Collection (Application) 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x02, // Usage (Mouse) 0xA1, 0x02, // Collection (Logical) 0x85, 0x1A, // Report ID (26) 0x09, 0x01, // Usage (Pointer) 0xA1, 0x00, // Collection (Physical) 0x05, 0x09, // Usage Page (Button) 0x19, 0x01, // Usage Minimum (0x01) 0x29, 0x05, // Usage Maximum (0x05) 0x95, 0x05, // Report Count (5) 0x75, 0x01, // Report Size (1) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x75, 0x03, // Report Size (3) 0x95, 0x01, // Report Count (1) 0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x30, // Usage (X) 0x09, 0x31, // Usage (Y) 0x95, 0x02, // Report Count (2) 0x75, 0x10, // Report Size (16) 0x16, 0x01, 0x80, // Logical Minimum (-32767) 0x26, 0xFF, 0x7F, // Logical Maximum (32767) 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) 0xA1, 0x02, // Collection (Logical) 0x85, 0x12, // Report ID (18) 0x09, 0x48, // Usage (0x48) 0x95, 0x01, // Report Count (1) 0x75, 0x02, // Report Size (2) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x35, 0x01, // Physical Minimum (1) 0x45, 0x10, // Physical Maximum (16) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x85, 0x1A, // Report ID (26) 0x09, 0x38, // Usage (Wheel) 0x35, 0x00, // Physical Minimum (0) 0x45, 0x00, // Physical Maximum (0) 0x95, 0x01, // Report Count (1) 0x75, 0x10, // Report Size (16) 0x16, 0x01, 0x80, // Logical Minimum (-32767) 0x26, 0xFF, 0x7F, // Logical Maximum (32767) 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection 0xA1, 0x02, // Collection (Logical) 0x85, 0x12, // Report ID (18) 0x09, 0x48, // Usage (0x48) 0x75, 0x02, // Report Size (2) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x35, 0x01, // Physical Minimum (1) 0x45, 0x10, // Physical Maximum (16) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x35, 0x00, // Physical Minimum (0) 0x45, 0x00, // Physical Maximum (0) 0x75, 0x04, // Report Size (4) 0xB1, 0x01, // Feature (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x85, 0x1A, // Report ID (26) 0x05, 0x0C, // Usage Page (Consumer) 0x95, 0x01, // Report Count (1) 0x75, 0x10, // Report Size (16) 0x16, 0x01, 0x80, // Logical Minimum (-32767) 0x26, 0xFF, 0x7F, // Logical Maximum (32767) 0x0A, 0x38, 0x02, // Usage (AC Pan) 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection 0xC0, // End Collection 0xC0, // End Collection 0xC0, // End Collection 0x05, 0x0C, // Usage Page (Consumer) 0x09, 0x01, // Usage (Consumer Control) 0xA1, 0x01, // Collection (Application) 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x02, // Usage (Mouse) 0xA1, 0x02, // Collection (Logical) 0x85, 0x1F, // Report ID (31) 0x05, 0x0C, // Usage Page (Consumer) 0x0A, 0x38, 0x02, // Usage (AC Pan) 0x95, 0x01, // Report Count (1) 0x75, 0x10, // Report Size (16) 0x16, 0x01, 0x80, // Logical Minimum (-32767) 0x26, 0xFF, 0x7F, // Logical Maximum (32767) 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) 0x85, 0x17, // Report ID (23) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x0A, 0x06, 0xFF, // Usage (0xFF06) 0x0A, 0x0F, 0xFF, // Usage (0xFF0F) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x35, 0x01, // Physical Minimum (1) 0x45, 0x10, // Physical Maximum (16) 0x95, 0x02, // Report Count (2) 0x75, 0x02, // Report Size (2) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x0A, 0x04, 0xFF, // Usage (0xFF04) 0x35, 0x00, // Physical Minimum (0) 0x45, 0x00, // Physical Maximum (0) 0x95, 0x01, // Report Count (1) 0x75, 0x01, // Report Size (1) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x75, 0x03, // Report Size (3) 0xB1, 0x01, // Feature (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0xC0, // End Collection 0x85, 0x16, // Report ID (22) 0x05, 0x0C, // Usage Page (Consumer) 0x19, 0x00, // Usage Minimum (Unassigned) 0x2A, 0xFF, 0x03, // Usage Maximum (0x03FF) 0x95, 0x01, // Report Count (1) 0x75, 0x10, // Report Size (16) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x03, // Logical Maximum (1023) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x1A, 0x01, 0xFD, // Usage Minimum (0xFD01) 0x2A, 0xFF, 0xFD, // Usage Maximum (0xFDFF) 0x15, 0x01, // Logical Minimum (1) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x85, 0x1C, // Report ID (28) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x0A, 0x25, 0xFF, // Usage (0xFF25) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x04, // Logical Maximum (4) 0x75, 0x08, // Report Size (8) 0x95, 0x01, // Report Count (1) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x0A, 0x26, 0xFF, // Usage (0xFF26) 0x75, 0x10, // Report Size (16) 0x15, 0x00, // Logical Minimum (0) 0x27, 0xFF, 0xFF, 0x00, 0x00, // Logical Maximum (65534) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection
Third:
0x05, 0x0C, // Usage Page (Consumer) 0x09, 0x01, // Usage (Consumer Control) 0xA1, 0x01, // Collection (Application) 0x85, 0x20, // Report ID (32) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x95, 0x12, // Report Count (18) 0x0A, 0x0A, 0xFA, // Usage (0xFA0A) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x85, 0x21, // Report ID (33) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x75, 0x01, // Report Size (1) 0x95, 0x10, // Report Count (16) 0x1A, 0x10, 0xFA, // Usage Minimum (0xFA10) 0x2A, 0x1F, 0xFA, // Usage Maximum (0xFA1F) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x85, 0x28, // Report ID (40) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x1A, 0x10, 0xFA, // Usage Minimum (0xFA10) 0x2A, 0x1F, 0xFA, // Usage Maximum (0xFA1F) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x85, 0x22, // Report ID (34) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x95, 0x1A, // Report Count (26) 0x0A, 0x0A, 0xFA, // Usage (0xFA0A) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x85, 0x23, // Report ID (35) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x0A, 0x0A, 0xFA, // Usage (0xFA0A) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x85, 0x24, // Report ID (36) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x95, 0x1F, // Report Count (31) 0x0A, 0x0A, 0xFA, // Usage (0xFA0A) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x85, 0x25, // Report ID (37) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x0A, 0x0A, 0xFA, // Usage (0xFA0A) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x85, 0x26, // Report ID (38) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x0A, 0x0A, 0xFA, // Usage (0xFA0A) 0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x85, 0x27, // Report ID (39) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x0A, 0x0A, 0xFA, // Usage (0xFA0A) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x85, 0x14, // Report ID (20) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x03, // Logical Maximum (3) 0x75, 0x02, // Report Size (2) 0x95, 0x01, // Report Count (1) 0x0A, 0x01, 0xFE, // Usage (0xFE01) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x75, 0x06, // Report Size (6) 0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x85, 0x04, // Report ID (4) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x03, // Logical Maximum (3) 0x75, 0x02, // Report Size (2) 0x95, 0x01, // Report Count (1) 0x0A, 0x01, 0xFE, // Usage (0xFE01) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x75, 0x06, // Report Size (6) 0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection 0x05, 0x0C, // Usage Page (Consumer) 0x09, 0x01, // Usage (Consumer Control) 0xA1, 0x01, // Collection (Application) 0x85, 0x07, // Report ID (7) 0x05, 0x0C, // Usage Page (Consumer) 0x19, 0x00, // Usage Minimum (Unassigned) 0x2A, 0xFF, 0x03, // Usage Maximum (0x03FF) 0x95, 0x01, // Report Count (1) 0x75, 0x10, // Report Size (16) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x03, // Logical Maximum (1023) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x05, 0x07, // Usage Page (Kbrd/Keypad) 0x19, 0x00, // Usage Minimum (0x00) 0x29, 0xFF, // Usage Maximum (0xFF) 0x75, 0x08, // Report Size (8) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x0A, 0x03, 0xFE, // Usage (0xFE03) 0x0A, 0x04, 0xFE, // Usage (0xFE04) 0x75, 0x01, // Report Size (1) 0x95, 0x02, // Report Count (2) 0x25, 0x01, // Logical Maximum (1) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x0A, 0x05, 0xFF, // Usage (0xFF05) 0x95, 0x01, // Report Count (1) 0x75, 0x05, // Report Size (5) 0x25, 0x1F, // Logical Maximum (31) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x75, 0x01, // Report Size (1) 0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x1A, 0x01, 0xFD, // Usage Minimum (0xFD01) 0x2A, 0xFF, 0xFD, // Usage Maximum (0xFDFF) 0x15, 0x01, // Logical Minimum (1) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x0A, 0x02, 0xFF, // Usage (0xFF02) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x15, 0x00, // Logical Minimum (0) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection 0x06, 0xBC, 0xFF, // Usage Page (Vendor Defined 0xFFBC) 0x09, 0x88, // Usage (0x88) 0xA1, 0x01, // Collection (Application) 0x85, 0x08, // Report ID (8) 0x19, 0x01, // Usage Minimum (0x01) 0x29, 0xFF, // Usage Maximum (0xFF) 0x15, 0x01, // Logical Minimum (1) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x95, 0x01, // Report Count (1) 0x75, 0x08, // Report Size (8) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x80, // Usage (Sys Control) 0xA1, 0x01, // Collection (Application) 0x85, 0x03, // Report ID (3) 0x19, 0x00, // Usage Minimum (Undefined) 0x29, 0xFF, // Usage Maximum (0xFF) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection
comment:6 by , 4 years ago
The first descriptor tells me that your mouse is also a keyboard. I suspect because the wireless receiver can be used for both?
The second is a mouse that seems pretty normal but has some custom extensions.
The third is entirely custom things.
It is hard to say anything more from the descriptors and the behavior description. We would need an application that logs the exact received events, so we can check if there is anything strange with the mouse wheel events.
I have edited the description to note what you added in your comment (that the problem disappeared after unplugging/reconnecting the mouse) because it probably eliminates a problem in HID reports parsing (that would happen all the time when you use that mouse)
comment:7 by , 4 years ago
Good day,
Same here. In my case, unplugging and replugging the USB receiver renders the mouse useless whatsoever and need a reboot to be able to use the mouse again. The mouse is a Microsoft Sculpt Ergonomic Mouse, though in my case works fine under Windows or Linux.
It seems, though I still need to certify this, that after booting Windows, shut down the pc, remove the Windows external drive, and boot to Haiku with the internal drive, makes the mouse scroll go nuts. Not certain yet about this, I'll post again when I'm 100% sure about it.
(Edit) Now I'm sure. What I'm doing is, if I use an external drive to boot the box, be it Linux or Windows, if later I boot to Haiku, the mouse wheel scrolls by pages, way too much. So in order to get proper scroll again, once I turn off the box and remove the Linux/Windows external drive, then I unplug the usb keyboard/mouse cable, and replug it. Then, when I start Haiku again, I get the proper smooth scroll -strange behavior though-.
~> uname -a Haiku Corvus 1 hrev54948 Feb 7 2021 07:12:46 x86_64 x86_64 Haiku
~> listusb 8087:0025 /dev/bus/usb/0/13 "Intel Corp." "" ver. 0002 0000:0000 /dev/bus/usb/0/hub "HAIKU Inc." "XHCI RootHub" ver. 0300 256c:006e /dev/bus/usb/1/2/1 "" "PenTablet " ver. 0000 045e:07a5 /dev/bus/usb/1/2/2 "Microsoft Corp." "Wireless Receiver 1461C" ver. 0777 1ea7:0907 /dev/bus/usb/1/2/3 "SHARKOON Technologies GmbH" "USB-HID Gaming Keyboard" ver. 0300 1a40:0101 /dev/bus/usb/1/2/hub "Terminus Technology Inc." "Hub" ver. 0111 0451:8027 /dev/bus/usb/1/3/2/hub "Texas Instruments, Inc." "" ver. 0110 0451:ca01 /dev/bus/usb/1/3/3 "Texas Instruments, Inc." "Texas Instruments USBtoI2C Solution" ver. 0100 0451:8142 /dev/bus/usb/1/3/hub "Texas Instruments, Inc." "TUSB8041 4-Port Hub" ver. 0100 0000:0000 /dev/bus/usb/1/hub "HAIKU Inc." "XHCI RootHub" ver. 0300 ~>
Now on reboot, mouse scroll seems smoother than before, as @miqlas said, not scrolling from page to page, but three lines each scroll wheel click.
Regards,
RR
This problem does not happens with other mouse, the mouse works ok on other OS. Removing and reattaching the USB receiver fixed it for now, so it seems it is a bug somewhere in Haiku's input processing chain.