summaryrefslogtreecommitdiff
path: root/apps/plugins/rockboy/sys_rockbox.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/rockboy/sys_rockbox.c')
-rw-r--r--apps/plugins/rockboy/sys_rockbox.c35
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
70int released, pressed; 80int 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 */
86static 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
72void ev_poll(void) 104void 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;