summaryrefslogtreecommitdiff
path: root/apps/plugins/doom/i_video.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/doom/i_video.c')
-rw-r--r--apps/plugins/doom/i_video.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index c3ac30f272..6bac32b8ea 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -179,6 +179,9 @@ void I_ShutdownGraphics(void)
179#define DOOMBUTTON_ENTER BUTTON_REW 179#define DOOMBUTTON_ENTER BUTTON_REW
180#define DOOMBUTTON_WEAPON BUTTON_FF 180#define DOOMBUTTON_WEAPON BUTTON_FF
181#elif CONFIG_KEYPAD == SANSA_E200_PAD 181#elif CONFIG_KEYPAD == SANSA_E200_PAD
182#define DOOMBUTTON_SCROLLWHEEL
183#define DOOMBUTTON_SCROLLWHEEL_CC BUTTON_SCROLL_UP
184#define DOOMBUTTON_SCROLLWHEEL_CW BUTTON_SCROLL_DOWN
182#define DOOMBUTTON_UP BUTTON_UP 185#define DOOMBUTTON_UP BUTTON_UP
183#define DOOMBUTTON_DOWN BUTTON_DOWN 186#define DOOMBUTTON_DOWN BUTTON_DOWN
184#define DOOMBUTTON_LEFT BUTTON_LEFT 187#define DOOMBUTTON_LEFT BUTTON_LEFT
@@ -186,8 +189,8 @@ void I_ShutdownGraphics(void)
186#define DOOMBUTTON_SHOOT BUTTON_SELECT 189#define DOOMBUTTON_SHOOT BUTTON_SELECT
187#define DOOMBUTTON_OPEN BUTTON_REC 190#define DOOMBUTTON_OPEN BUTTON_REC
188#define DOOMBUTTON_ESC BUTTON_POWER 191#define DOOMBUTTON_ESC BUTTON_POWER
189#define DOOMBUTTON_ENTER BUTTON_SCROLL_UP 192#define DOOMBUTTON_ENTER BUTTON_SELECT
190#define DOOMBUTTON_WEAPON BUTTON_SCROLL_DOWN 193#define DOOMBUTTON_WEAPON DOOMBUTTON_SCROLLWHEEL_CW
191#elif CONFIG_KEYPAD == GIGABEAT_PAD 194#elif CONFIG_KEYPAD == GIGABEAT_PAD
192#define DOOMBUTTON_UP BUTTON_UP 195#define DOOMBUTTON_UP BUTTON_UP
193#define DOOMBUTTON_DOWN BUTTON_DOWN 196#define DOOMBUTTON_DOWN BUTTON_DOWN
@@ -211,6 +214,27 @@ void I_ShutdownGraphics(void)
211#define DOOMBUTTON_WEAPON BUTTON_ON 214#define DOOMBUTTON_WEAPON BUTTON_ON
212#endif 215#endif
213 216
217#ifdef DOOMBUTTON_SCROLLWHEEL
218/* Scrollwheel events are posted directly and not polled by the button
219 driver - synthesize polling */
220static inline unsigned int read_scroll_wheel(void)
221{
222 unsigned int buttons = BUTTON_NONE;
223 unsigned int btn;
224
225 /* Empty out the button queue and see if any scrollwheel events were
226 posted */
227 do
228 {
229 btn = rb->button_get_w_tmo(0);
230 buttons |= btn;
231 }
232 while (btn != BUTTON_NONE);
233
234 return buttons & (DOOMBUTTON_SCROLLWHEEL_CC | DOOMBUTTON_SCROLLWHEEL_CW);
235}
236#endif
237
214inline void getkey() 238inline void getkey()
215{ 239{
216 event_t event; 240 event_t event;
@@ -247,6 +271,10 @@ inline void getkey()
247#endif 271#endif
248 272
249 newbuttonstate = rb->button_status(); 273 newbuttonstate = rb->button_status();
274#ifdef DOOMBUTTON_SCROLLWHEEL
275 newbuttonstate |= read_scroll_wheel();
276#endif
277
250 if(newbuttonstate==oldbuttonstate) /* Don't continue, nothing left to do */ 278 if(newbuttonstate==oldbuttonstate) /* Don't continue, nothing left to do */
251 return; 279 return;
252 released = ~newbuttonstate & oldbuttonstate; 280 released = ~newbuttonstate & oldbuttonstate;