diff options
Diffstat (limited to 'apps/plugins/rockboy/sys_rockbox.c')
-rw-r--r-- | apps/plugins/rockboy/sys_rockbox.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/apps/plugins/rockboy/sys_rockbox.c b/apps/plugins/rockboy/sys_rockbox.c index 783accd01b..6cbbe523f7 100644 --- a/apps/plugins/rockboy/sys_rockbox.c +++ b/apps/plugins/rockboy/sys_rockbox.c | |||
@@ -38,6 +38,16 @@ | |||
38 | #define ROCKBOY_PAD_UP BUTTON_SCROLL_UP | 38 | #define ROCKBOY_PAD_UP BUTTON_SCROLL_UP |
39 | #define ROCKBOY_PAD_DOWN BUTTON_SCROLL_DOWN | 39 | #define ROCKBOY_PAD_DOWN BUTTON_SCROLL_DOWN |
40 | 40 | ||
41 | #elif (CONFIG_KEYPAD == SANSA_E200_PAD) | ||
42 | |||
43 | #define ROCKBOY_SCROLLWHEEL | ||
44 | #define ROCKBOY_SCROLLWHEEL_CC BUTTON_SCROLL_UP | ||
45 | #define ROCKBOY_SCROLLWHEEL_CW BUTTON_SCROLL_DOWN | ||
46 | #define ROCKBOY_PAD_LEFT BUTTON_LEFT | ||
47 | #define ROCKBOY_PAD_RIGHT BUTTON_RIGHT | ||
48 | #define ROCKBOY_PAD_UP BUTTON_UP | ||
49 | #define ROCKBOY_PAD_DOWN BUTTON_DOWN | ||
50 | |||
41 | #else | 51 | #else |
42 | 52 | ||
43 | #define ROCKBOY_PAD_LEFT BUTTON_LEFT | 53 | #define ROCKBOY_PAD_LEFT BUTTON_LEFT |
@@ -69,10 +79,35 @@ static int wheelmap[8] = { | |||
69 | 79 | ||
70 | int released, pressed; | 80 | int released, pressed; |
71 | 81 | ||
82 | |||
83 | #ifdef ROCKBOY_SCROLLWHEEL | ||
84 | /* Scrollwheel events are posted directly and not polled by the button | ||
85 | driver - synthesize polling */ | ||
86 | static inline unsigned int read_scroll_wheel(void) | ||
87 | { | ||
88 | unsigned int buttons = BUTTON_NONE; | ||
89 | unsigned int btn; | ||
90 | |||
91 | /* Empty out the button queue and see if any scrollwheel events were | ||
92 | posted */ | ||
93 | do | ||
94 | { | ||
95 | btn = rb->button_get_w_tmo(0); | ||
96 | buttons |= btn; | ||
97 | } | ||
98 | while (btn != BUTTON_NONE); | ||
99 | |||
100 | return buttons & (ROCKBOY_SCROLLWHEEL_CC | ROCKBOY_SCROLLWHEEL_CW); | ||
101 | } | ||
102 | #endif | ||
103 | |||
72 | void ev_poll(void) | 104 | void ev_poll(void) |
73 | { | 105 | { |
74 | event_t ev; | 106 | event_t ev; |
75 | newbuttonstate = rb->button_status(); | 107 | newbuttonstate = rb->button_status(); |
108 | #ifdef ROCKBOY_SCROLLWHEEL | ||
109 | newbuttonstate |= read_scroll_wheel(); | ||
110 | #endif | ||
76 | released = ~newbuttonstate & oldbuttonstate; | 111 | released = ~newbuttonstate & oldbuttonstate; |
77 | pressed = newbuttonstate & ~oldbuttonstate; | 112 | pressed = newbuttonstate & ~oldbuttonstate; |
78 | oldbuttonstate = newbuttonstate; | 113 | oldbuttonstate = newbuttonstate; |