From ec33788e315a2a59d9b80fb9925b9069e190810d Mon Sep 17 00:00:00 2001 From: William McBrine Date: Sat, 23 Apr 2011 06:50:03 +0000 Subject: [PATCH] Left/right scroll wheel support for SDL and Win32. Still not tested. --- sdl1/pdckbd.c | 20 ++++++++++++++++---- win32/pdckbd.c | 15 ++++++++++++++- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/sdl1/pdckbd.c b/sdl1/pdckbd.c index 56bf1e47..57a88e1c 100644 --- a/sdl1/pdckbd.c +++ b/sdl1/pdckbd.c @@ -2,7 +2,7 @@ #include "pdcsdl.h" -RCSID("$Id: pdckbd.c,v 1.20 2008/07/14 04:24:52 wmcbrine Exp $") +RCSID("$Id: pdckbd.c,v 1.21 2011/04/23 06:50:02 wmcbrine Exp $") /*man-start************************************************************** @@ -282,12 +282,24 @@ static int _process_mouse_event(void) /* handle scroll wheel */ - if ((btn == 4 || btn == 5) && action == BUTTON_RELEASED) + if ((btn >= 4 && btn <= 7) && action == BUTTON_RELEASED) { pdc_mouse_status.x = pdc_mouse_status.y = -1; - pdc_mouse_status.changes = (btn == 5) ? - PDC_MOUSE_WHEEL_DOWN : PDC_MOUSE_WHEEL_UP; + switch (btn) + { + case 4: + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_UP; + break; + case 5: + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_DOWN; + break; + case 6: + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_LEFT; + break; + case 7: + pdc_mouse_status.changes = PDC_MOUSE_WHEEL_RIGHT; + } return KEY_MOUSE; } diff --git a/win32/pdckbd.c b/win32/pdckbd.c index 1c5b05b0..7717260d 100644 --- a/win32/pdckbd.c +++ b/win32/pdckbd.c @@ -2,7 +2,7 @@ #include "pdcwin.h" -RCSID("$Id: pdckbd.c,v 1.115 2008/07/20 20:12:04 wmcbrine Exp $") +RCSID("$Id: pdckbd.c,v 1.116 2011/04/23 06:50:03 wmcbrine Exp $") /*man-start************************************************************** @@ -486,6 +486,19 @@ static int _process_mouse_event(void) return KEY_MOUSE; } + if (MEV.dwEventFlags == 8) + { + pdc_mouse_status.changes = (MEV.dwButtonState & 0xFF000000) ? + PDC_MOUSE_WHEEL_RIGHT : PDC_MOUSE_WHEEL_LEFT; + + pdc_mouse_status.x = -1; + pdc_mouse_status.y = -1; + + memset(&old_mouse_status, 0, sizeof(old_mouse_status)); + + return KEY_MOUSE; + } + action = (MEV.dwEventFlags == 2) ? BUTTON_DOUBLE_CLICKED : ((MEV.dwEventFlags == 1) ? BUTTON_MOVED : BUTTON_PRESSED);