Hi Peter, > Input: Add smooth-scrolling support to GetPointerEvents There's a subtle bug on that one: Old-style scroll button presses create inverted emulated presses (and maybe inverted valuator events, but I don't know which direction is 'up' or 'down' on the valuator).
Take a look at dix/getevents.c, GetPointerEvents(): > switch(buttons) { > case 4: > adj = 1.0; > [snip] > } > [snip] > adj *= pDev->valuator->axes[axis].scroll.increment; > val = valuator_mask_get_double(&mask, axis) + adj; > valuator_mask_set_double(&mask, axis, val); So if increment > 0 and button 4 is pressed, the valuator gets incremented. Later in emulate_scroll_button_events(): > delta = valuator_mask_get_double(mask, axis) > - valuator_mask_get_double(last, axis) => delta > 0 > b = (ax->scroll.type == SCROLL_TYPE_VERTICAL) ? 5 : 7 > if((incr > 0 && delta < 0) || > (incr < 0 && delta > 0)) > b--; /* we're scrolling up or left → button 4 or 6 */ Since incr > 0 and delta > 0, we get button 5. So either that condition needs to be changed, or the conversion in GetPointerEvents() needs to be flipped. Max _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel