Compaq CPQ750TP scrolling horizontally causes vertical scrolling

Bug #317025 reported by DAP on 2009-01-14
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
xserver-xorg-input-evdev (Ubuntu)
Low
Unassigned

Bug Description

When attempting to scroll horizontally with my Compaq CPQ750TP I get fast vertical scrolling. This shows up as "Acrox USB & PS/2 Mouse" when plugged into the PC directly, and "ATEN CS1784" when plugged into my KVM (it works identically regardless how it is plugged in). The mouse has a scroll ball and 5 buttons.
I have spent quite some time attempting to get the horizontal scrolling to work.
I have the following in a .fdi file in the /etc/hal/fdi/policy directory:
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.product" string="Acrox USB &amp; PS/2 Mouse">
      <merge key="input.x11_options.XAxisMapping" type="string">6 7</merge>
    </match>
  </device>
  <device>
    <match key="info.product" string="ATEN CS1784">
      <merge key="input.x11_options.ButtonMapping" type="string">1 2 3 4 5 10 11 8 9 6 7</merge>
      <merge key="input.x11_options.Emulate3Buttons" type="string">0</merge>
      <merge key="input.x11_options.EmulateWheelButton" type="string">0</merge>
      <merge key="input.x11_options.XAxisMapping" type="string">10 11</merge>
    </match>
  </device>
</deviceinfo>

Horizontal scrolling works perfectly on Windows 2000 (different computer, same KVM & mouse). If I monitor events with "xinput test 4" Left button maps to button 1, middle button (pushing down on ball) maps to button 2, right button maps to button 3 left side button maps to button 8, right button maps to button 9, vertical scroll with ball maps to buttons 4 & 5, horizontal scroll with ball also maps to buttons 4 & 5, but each event is repeated 7 times.

It appears as if horizontal scrolling should be mapping to buttons 6 & 7. The hal file above was an attempt at a work rround to remap 6 & 7 to 10 & 11, but the remapping to 4 & 5 is still happening.

---
ApportVersion: 2.12.5-0ubuntu2.2
Architecture: amd64
DistUpgraded: 2013-10-19 16:58:55,355 DEBUG enabling apt cron job
DistroCodename: saucy
DistroRelease: Ubuntu 13.10
DistroVariant: ubuntu
InstallationDate: Installed on 2011-05-22 (973 days ago)
InstallationMedia: Ubuntu 11.04 "Natty Narwhal" - Release amd64 (20110427.1)
MachineType: System manufacturer System Product Name
MarkForUpload: True
NonfreeKernelModules: nvidia
Package: xserver-xorg-input-evdev 1:2.7.3-0ubuntu3.1
PackageArchitecture: amd64
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.11.0-15-generic root=UUID=c2921384-38b9-419e-b7ef-007bcc801561 ro nosplash debug --verbose
ProcVersionSignature: Ubuntu 3.11.0-15.23-generic 3.11.10
Tags: saucy possible-manual-nvidia-install ubuntu
Uname: Linux 3.11.0-15-generic x86_64
UpgradeStatus: Upgraded to saucy on 2013-10-19 (92 days ago)
UserGroups: adm admin audio cdrom dialout fax floppy fuse lpadmin mythtv plugdev sambashare video
dmi.bios.date: 09/21/2010
dmi.bios.vendor: American Megatrends Inc.
dmi.bios.version: 2209
dmi.board.asset.tag: To Be Filled By O.E.M.
dmi.board.name: P6T DELUXE
dmi.board.vendor: ASUSTeK Computer INC.
dmi.board.version: Rev 1.xx
dmi.chassis.asset.tag: Asset-1234567890
dmi.chassis.type: 3
dmi.chassis.vendor: Chassis Manufacture
dmi.chassis.version: Chassis Version
dmi.modalias: dmi:bvnAmericanMegatrendsInc.:bvr2209:bd09/21/2010:svnSystemmanufacturer:pnSystemProductName:pvrSystemVersion:rvnASUSTeKComputerINC.:rnP6TDELUXE:rvrRev1.xx:cvnChassisManufacture:ct3:cvrChassisVersion:
dmi.product.name: System Product Name
dmi.product.version: System Version
dmi.sys.vendor: System manufacturer
version.compiz: compiz 1:0.9.10+13.10.20131011-0ubuntu1
version.ia32-libs: ia32-libs 20090808ubuntu36
version.libdrm2: libdrm2 2.4.46-1ubuntu1
version.libgl1-mesa-dri: libgl1-mesa-dri 9.2.1-1ubuntu3
version.libgl1-mesa-dri-experimental: libgl1-mesa-dri-experimental N/A
version.libgl1-mesa-glx: libgl1-mesa-glx 9.2.1-1ubuntu3
version.xserver-xorg-core: xserver-xorg-core 2:1.14.5-1ubuntu2~saucy1
version.xserver-xorg-input-evdev: xserver-xorg-input-evdev 1:2.7.3-0ubuntu3.1
version.xserver-xorg-video-ati: xserver-xorg-video-ati 1:7.2.0-0ubuntu10
version.xserver-xorg-video-intel: xserver-xorg-video-intel 2:2.99.904-0ubuntu2
version.xserver-xorg-video-nouveau: xserver-xorg-video-nouveau 1:1.0.9-2ubuntu1
xserver.bootTime: Sun Jan 19 19:42:18 2014
xserver.logfile: /var/log/Xorg.0.log
xserver.version: 2:1.14.5-1ubuntu2~saucy1

DAP (akadap) wrote :
Download full text (12.0 KiB)

I went and tested a bunch of other mice that should have horizontal scrolling. All of them but the Kensington slimblade mouse have their horizontal scrolling converted into high speed vertical scrolling. The test results follow:

A4Tech www-5 PS/2 dual scroll wheel mouse.

lshal:
udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port'
  info.linux.driver = 'psmouse' (string)
  info.parent = '/org/freedesktop/Hal/devices/platform_i8042' (string)
  info.product = 'i8042 AUX port' (string)
  info.subsystem = 'serio' (string)
  info.udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port' (string)
  linux.hotplug_type = 2 (0x2) (int)
  linux.subsystem = 'serio' (string)
  linux.sysfs_path = '/sys/devices/platform/i8042/serio1' (string)
  serio.description = 'i8042 AUX port' (string)
  serio.id = 'serio1' (string)

udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port_logicaldev_input'
  info.callouts.add = {'hal-probe-vmmouse'} (string list)
  info.capabilities = {'input', 'input.mouse'} (string list)
  info.category = 'input' (string)
  info.parent = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port' (string)
  info.product = 'ImPS/2 Generic Wheel Mouse' (string)
  info.subsystem = 'input' (string)
  info.udi = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port_logicaldev_input' (string)
  input.device = '/dev/input/event7' (string)
  input.originating_device = '/org/freedesktop/Hal/devices/platform_i8042_i8042_AUX_port' (string)
  input.product = 'ImPS/2 Generic Wheel Mouse' (string)
  input.x11_driver = 'evdev' (string)
  linux.device_file = '/dev/input/event7' (string)
  linux.hotplug_type = 2 (0x2) (int)
  linux.subsystem = 'input' (string)
  linux.sysfs_path = '/sys/devices/platform/i8042/serio1/input/input7/event7' (string)

xinput list:
"ImPS/2 Generic Wheel Mouse" id=3 [XExtensionPointer]
 Num_buttons is 32
 Num_axes is 2
 Mode is Relative
 Motion_buffer is 256
 Axis 0 :
  Min_value is -1
  Max_value is -1
  Resolution is 1
 Axis 1 :
  Min_value is -1
  Max_value is -1
  Resolution is 1

xinput list-props:
Device 'ImPS/2 Generic Wheel Mouse':
 Device Enabled: 1
 Middle Button Emulation: 2
 Middle Button Timeout: 50
 Wheel Emulation Inertia: 10
 Wheel Emulation: 0
 Wheel Emulation X Axis: 0, 0
 Wheel Emulation Y Axis: 4, 5
 Wheel Emulation Timeout: 200
 Wheel Emulation Button: 4
 Drag Lock Buttons: 0

xinput test shows that horizontal scrolling shows up as doubled button 4 & 5 presses, virtical scrolling shows up as single button 4 & 5 presses.

Swann Opti-Pro Optical Mouse

lsusb:
Bus 007 Device 008: ID 04b4:aef6 Cypress Semiconductor Corp.

lshal:
udi = '/org/freedesktop/Hal/devices/usb_device_4b4_aef6_noserial_if0_logicaldev_input'
  info.capabilities = {'input', 'input.mouse'} (string list)
  info.category = 'input' (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_4b4_aef6_noserial_if0' (string)
  info.product = 'Magic ball Mouse Magic ball Mouse' (string)
  info.subsystem = 'input' (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_4b4_aef6_noserial_if0_logicaldev_input' (string)
  input.device = '/dev/input/even...

DAP (akadap) wrote :

I did an experiment that makes me believe that this is more of an unsupported feature than an actual bug.
I took the A4tech mouse, that is a PS/2 mouse, and plugged it into a PS/2 to USB converter, and ran that through a KVM. This means that Ubuntu has no idea that this is the same mouse tested before.
All other USB mice converted horizontal scrolling to 7 times faster vertical scrolling. This mouse, no matter how it is hooked up, converts horizontal scrolling to 2 times faster vertical scrolling.
So this proves to me that the mouse driver is not converting the horizontal scrolling into vertical scrolling, but the mouse itself.
So, either there needs to be a command sent to the mouse to change its behavior, or the driver is not interpreting the data from the horizontal scrolling correctly.
When I looked at the USB data under windows, vertical scrolling was either a +1 or -1 in the scroll data. I never saw anything else there. I'm guessing that in the default mode, USB mice are reporting +7 or -7 in this same byte for horizontal scrolling. In the mode that Windows activates, it appears that the mouse sends all zeros (via an interrupt transaction) which is an indication to the driver that it needs to ask the mouse (via a bulk transfer) to see what actually happened.

Could someone please point me at the source code for whatever part of Linux handles the mouse? I'd like to have a look at it.

DAP (akadap) wrote :

This is still a problem in 9.04

DAP (akadap) wrote :

I have attached a USB dump captured with Snoopypro on windows for the CPQ750TB mouse. Unfortunately you will need Snoopypro and windows to read this. I intend to attempt to figure out what is going on here, but if someone who has more than zero experience with this kind of thing takes a look, it will probably go faster.

DAP (akadap) wrote :

This is the same file as above, exported from Snoopypro in XML format. Unfortunately, though you can read this in Linux, it will be hard for a human to parse.

Adil Arif (adisari06) on 2009-07-17
affects: ubuntu → xserver-xorg-input-evdev (Ubuntu)
Bryce Harrington (bryce) on 2009-09-02
tags: added: intrepid
Bryce Harrington (bryce) wrote :

[This is an automatic notification.]

Hi DAP,

This bug was reported against an earlier version of Ubuntu, can you
test if it still occurs on Lucid?

Please note we also provide technical support for older versions of
Ubuntu, but not in the bug tracker. Instead, to raise the issue through
normal support channels, please see:

    http://www.ubuntu.com/support

If you are the original reporter and can still reproduce the issue on
Lucid, please run the following command to refresh the report:

  apport-collect 317025

If you are not the original reporter, please file a new bug report, so
we can work with you as the original reporter instead (you can reference
bug 317025 in your report if you think it may be related):

  ubuntu-bug xorg

If by chance you can no longer reproduce the issue on Lucid or if you
feel it is no longer relevant, please mark the bug report 'Fix Released'
or 'Invalid' as appropriate, at the following URL:

  https://bugs.launchpad.net/ubuntu/+bug/317025

Changed in xserver-xorg-input-evdev (Ubuntu):
status: New → Incomplete
tags: added: needs-retested-on-lucid-by-june
DAP (akadap) wrote :

This bug still exists on 10.04. I guess technically it is more a case of incomplete support for this type of mouse. One must send a command to this mouse to get it out of compatibility mode and enable the extra features.
I tried to look at the source code for this, but found it rather opaque and do not understand it yet (let alone know where all of it is, or how it is interconnected).

DAP (akadap) wrote :

I was unaware that I was supposed to change the status when I provided more info, I'll do that now.

Changed in xserver-xorg-input-evdev (Ubuntu):
status: Incomplete → New

DAP, this bug was reported a while ago and there hasn't been any activity in it recently. We were wondering if this is still an issue? If so, could you please test for this with the latest development release of Ubuntu? ISO images are available from http://cdimage.ubuntu.com/daily-live/current/ .

If it remains an issue, could you please run the following command in the development release from a Terminal (Applications->Accessories->Terminal), as it will automatically gather and attach updated debug information to this report:

apport-collect -p xserver-xorg-input-evdev REPLACE-WITH-BUG-NUMBER

Please note, given that the information from the prior release is already available, doing this on a release prior to the development one would not be helpful.

Thank you for your understanding.

Helpful bug reporting tips:
https://wiki.ubuntu.com/ReportingBugs

Changed in xserver-xorg-input-evdev (Ubuntu):
importance: Undecided → Low
status: New → Incomplete
DAP (akadap) wrote :

The problem still exists in Ubuntu 13.10.
I was unable to do the requested test in the daily build because the daily build is not functional enough.
Booting from the live CD, the mouse did no initially work. I had to unplug it and plug it back in before I could click on the "try ubuntu" button.
Once Ubuntu started, I had no menus at all. I had two icons: Install Ubuntu and examples. Clicking on the examples icon brought up a file browser in a fixed sized window with no window decorations (no maximize, no minimize, no close button)
I found a way to run firefox, it also had no window decorations. In an attempt to get a window up with a horizontal scroll bar, I tried typing a URL, and found that the keyboard was not working. At this point I realized I could do nothing usefull with this live CD, ejected it and hit the reset button on my computer.

DAP, fair enough. Could you please perform the requested apport-collect in Saucy?

tags: added: needs-apport-collect
removed: needs-retested-on-lucid-by-june
tags: added: saucy
DAP (akadap) wrote : BootDmesg.txt

apport information

tags: added: apport-collected possible-manual-nvidia-install ubuntu
description: updated
DAP (akadap) wrote : BootLog.txt

apport information

apport information

apport information

DAP (akadap) wrote : DpkgLog.txt

apport information

apport information

apport information

apport information

DAP (akadap) wrote : LightdmLog.txt

apport information

DAP (akadap) wrote : Lspci.txt

apport information

DAP (akadap) wrote : Lsusb.txt

apport information

DAP (akadap) wrote : ProcCpuinfo.txt

apport information

DAP (akadap) wrote : ProcEnviron.txt

apport information

apport information

DAP (akadap) wrote : ProcModules.txt

apport information

DAP (akadap) wrote : UdevDb.txt

apport information

DAP (akadap) wrote : UdevLog.txt

apport information

DAP (akadap) wrote : XorgConf.txt

apport information

DAP (akadap) wrote : XorgLog.txt

apport information

DAP (akadap) wrote : XorgLogOld.txt

apport information

apport information

DAP (akadap) wrote : peripherals.txt

apport information

DAP (akadap) wrote : xinput.txt

apport information

tags: added: latest-bios-2209

DAP, thank you for providing the requested information. As hal has been deprecated a few releases ago, have you had a chance to take a look at the evdev manpage to see if you could force the re-mapping WORKAROUND you noted in your Bug Description?

summary: - Scroll ball will not scroll horizontally
+ Compaq CPQ750TP scrolling horizontally causes vertical scrolling
tags: removed: needs-apport-collect
description: updated
DAP (akadap) wrote :

When I looked into this (years ago), from what I could tell, windows was enabling a different mode of operation in the mouse, one that sent both horizontal and vertical scrolling data to the computer. Linux was using the default mode which translated virticle scrolling to up and down button presses, and horizontal scrolling to tripled up or trippled down button presses. I was unable to do anything with this in hal.
The only thing I have noticed change in the years since I first reported this issue is that more than three buttons became supported on the mouse.

DAP, the issue you are reporting is an upstream one. Could you please report this problem via https://bugs.freedesktop.org/enter_bug.cgi?product=libevdev ?

Please provide a direct URL to your bug report once you have made it so that it may be tracked.

Thank you for your understanding.

Changed in xserver-xorg-input-evdev (Ubuntu):
status: Incomplete → Triaged
To post a comment you must log in.