<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - IBM Scrollpoint mouse: libinput mouse scrolling speed insanely fast"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=106036#c6">Comment # 6</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - IBM Scrollpoint mouse: libinput mouse scrolling speed insanely fast"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=106036">bug 106036</a>
              from <span class="vcard"><a class="email" href="mailto:peter.ganzhorn@gmail.com" title="peter.ganzhorn@gmail.com">peter.ganzhorn@gmail.com</a>
</span></b>
        <pre>I think I figured this out and have a working solution right now like this:

        if (dispatch->wheel.y != 0) {
                wheel_degrees.y = -1 * dispatch->wheel.y *
                                        device->scroll.wheel_click_angle.y;
                if (device->model_flags & EVDEV_MODEL_SCROLLPOINT) {
                        discrete.y = 0;

                        source = LIBINPUT_POINTER_AXIS_SOURCE_CONTINUOUS;
                } else {
                        discrete.y = -1 * dispatch->wheel.y;

                        source = device->scroll.is_tilt.vertical ?
                                LIBINPUT_POINTER_AXIS_SOURCE_WHEEL_TILT:
                                LIBINPUT_POINTER_AXIS_SOURCE_WHEEL;
                }

                evdev_notify_axis(
                        device,
                        time,
                        AS_MASK(LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL),
                        source,
                        &wheel_degrees,
                        &discrete);
                dispatch->wheel.y = 0;
        }

I implemented the same for the x-axis as well.
There is one issue left where I'd like to get your feedback:

libinput-debug-events reports 15° wheel movements as smallest value possible
and easily goes up to around 500° without increasing force on the scrolling
device a lot. Actually hitting only 15° is almost impossible.
This makes scrolling still way too fast, but with the changes I made to
libinput and adding the following to /lib/udev/hwdb.d/70-mouse.hwdb I have
usable results:
mouse:usb:v04b3p3100:*
mouse:usb:v04b3p3103:*
mouse:usb:v04b3p3105:*
mouse:usb:v04b3p3108:*
mouse:usb:v04b3p3109:*
mouse:usb:v14efp6049:*
 MOUSE_WHEEL_CLICK_ANGLE=2
 MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL=2

This file is not part of the libinput sources, so where could I add this to be
set by default? Without this part the changes I made to libinput don't really
improve usability of the scrollpoint.
Without the changes I made to libinput so far these options do not seem to have
any noticeable effect.

As soon as I know where to put this, I will create a patch against libinput to
add support for the scrollpoint mice for review.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>