diff options
Diffstat (limited to 'sys/dev/vt/vt_sysmouse.c')
-rw-r--r-- | sys/dev/vt/vt_sysmouse.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/sys/dev/vt/vt_sysmouse.c b/sys/dev/vt/vt_sysmouse.c index 5147865fc20f..f2f5a0fa5c3a 100644 --- a/sys/dev/vt/vt_sysmouse.c +++ b/sys/dev/vt/vt_sysmouse.c @@ -128,7 +128,15 @@ sysmouse_evdev_store(int x, int y, int z, int buttons) evdev_push_event(sysmouse_evdev, EV_REL, REL_X, x); evdev_push_event(sysmouse_evdev, EV_REL, REL_Y, y); switch (evdev_sysmouse_t_axis) { - case EVDEV_SYSMOUSE_T_AXIS_PSM: + case EVDEV_SYSMOUSE_T_AXIS_WSP: /* 3 */ + if (buttons & (1 << 5)) { + evdev_push_rel(sysmouse_evdev, REL_HWHEEL, z); + buttons &= ~(1 << 5); + } else { + evdev_push_rel(sysmouse_evdev, REL_WHEEL, -z); + } + break; + case EVDEV_SYSMOUSE_T_AXIS_PSM: /* 2 */ switch (z) { case 1: case -1: @@ -140,14 +148,14 @@ sysmouse_evdev_store(int x, int y, int z, int buttons) break; } break; - case EVDEV_SYSMOUSE_T_AXIS_UMS: + case EVDEV_SYSMOUSE_T_AXIS_UMS: /* 1 */ if (buttons & (1 << 6)) evdev_push_rel(sysmouse_evdev, REL_HWHEEL, 1); else if (buttons & (1 << 5)) evdev_push_rel(sysmouse_evdev, REL_HWHEEL, -1); buttons &= ~((1 << 5)|(1 << 6)); /* PASSTHROUGH */ - case EVDEV_SYSMOUSE_T_AXIS_NONE: + case EVDEV_SYSMOUSE_T_AXIS_NONE: /* 0 */ default: evdev_push_rel(sysmouse_evdev, REL_WHEEL, -z); } |