diff options
-rw-r--r-- | apps/plugin.c | 7 | ||||
-rw-r--r-- | apps/plugin.h | 2 | ||||
-rw-r--r-- | firmware/drivers/button.c | 10 | ||||
-rw-r--r-- | firmware/export/button.h | 2 | ||||
-rw-r--r-- | uisimulator/win32/button.c | 13 | ||||
-rw-r--r-- | uisimulator/x11/button-x11.c | 23 |
6 files changed, 41 insertions, 16 deletions
diff --git a/apps/plugin.c b/apps/plugin.c index 251d433d76..3cdc56ceb4 100644 --- a/apps/plugin.c +++ b/apps/plugin.c | |||
@@ -253,6 +253,8 @@ static const struct plugin_api rockbox_api = { | |||
253 | #endif | 253 | #endif |
254 | settings_parseline, | 254 | settings_parseline, |
255 | strcmp, | 255 | strcmp, |
256 | button_status, | ||
257 | button_clear_queue, | ||
256 | }; | 258 | }; |
257 | 259 | ||
258 | int plugin_load(char* plugin, void* parameter) | 260 | int plugin_load(char* plugin, void* parameter) |
@@ -332,7 +334,10 @@ int plugin_load(char* plugin, void* parameter) | |||
332 | 334 | ||
333 | plugin_loaded = true; | 335 | plugin_loaded = true; |
334 | rc = plugin_start((struct plugin_api*) &rockbox_api, parameter); | 336 | rc = plugin_start((struct plugin_api*) &rockbox_api, parameter); |
335 | /* explicitly casting the pointer here to avoid touching every plugin. */ | 337 | /* explicitly casting the pointer here to avoid touching every plugin. */ |
338 | |||
339 | button_clear_queue(); | ||
340 | |||
336 | plugin_loaded = false; | 341 | plugin_loaded = false; |
337 | 342 | ||
338 | switch (rc) { | 343 | switch (rc) { |
diff --git a/apps/plugin.h b/apps/plugin.h index c2243a59fb..b93d406498 100644 --- a/apps/plugin.h +++ b/apps/plugin.h | |||
@@ -289,6 +289,8 @@ struct plugin_api { | |||
289 | #endif | 289 | #endif |
290 | bool (*settings_parseline)(char* line, char** name, char** value); | 290 | bool (*settings_parseline)(char* line, char** name, char** value); |
291 | int (*strcmp)(const char *, const char *); | 291 | int (*strcmp)(const char *, const char *); |
292 | int (*button_status)(void); | ||
293 | void (*button_clear_queue)(void); | ||
292 | }; | 294 | }; |
293 | 295 | ||
294 | /* defined by the plugin loader (plugin.c) */ | 296 | /* defined by the plugin loader (plugin.c) */ |
diff --git a/firmware/drivers/button.c b/firmware/drivers/button.c index 9f19bc0945..7e1ab47952 100644 --- a/firmware/drivers/button.c +++ b/firmware/drivers/button.c | |||
@@ -421,3 +421,13 @@ int button_add(unsigned int button) | |||
421 | return 1; | 421 | return 1; |
422 | } | 422 | } |
423 | #endif | 423 | #endif |
424 | |||
425 | int button_status(void) | ||
426 | { | ||
427 | return button_read(); | ||
428 | } | ||
429 | |||
430 | void button_clear_queue(void) | ||
431 | { | ||
432 | queue_empty(&button_queue); | ||
433 | } | ||
diff --git a/firmware/export/button.h b/firmware/export/button.h index d1d5ddea5c..f174262de2 100644 --- a/firmware/export/button.h +++ b/firmware/export/button.h | |||
@@ -28,6 +28,8 @@ extern struct event_queue button_queue; | |||
28 | void button_init (void); | 28 | void button_init (void); |
29 | int button_get (bool block); | 29 | int button_get (bool block); |
30 | int button_get_w_tmo(int ticks); | 30 | int button_get_w_tmo(int ticks); |
31 | int button_status(void); | ||
32 | void button_clear_queue(void); | ||
31 | #ifdef HAVE_RECORDER_KEYPAD | 33 | #ifdef HAVE_RECORDER_KEYPAD |
32 | void button_set_flip(bool flip); /* turn 180 degrees */ | 34 | void button_set_flip(bool flip); /* turn 180 degrees */ |
33 | #endif | 35 | #endif |
diff --git a/uisimulator/win32/button.c b/uisimulator/win32/button.c index 4532727200..0af6ff40a6 100644 --- a/uisimulator/win32/button.c +++ b/uisimulator/win32/button.c | |||
@@ -36,13 +36,14 @@ | |||
36 | 36 | ||
37 | struct event_queue button_queue; | 37 | struct event_queue button_queue; |
38 | 38 | ||
39 | static int btn = 0; /* Hopefully keeps track of currently pressed keys... */ | ||
40 | |||
39 | void button_event(int key, bool pressed) | 41 | void button_event(int key, bool pressed) |
40 | { | 42 | { |
41 | bool post = false; | 43 | bool post = false; |
42 | int new_btn = 0; | 44 | int new_btn = 0; |
43 | int diff = 0; | 45 | int diff = 0; |
44 | static int count = 0; | 46 | static int count = 0; |
45 | static int btn = 0; /* Hopefully keeps track of currently pressed keys... */ | ||
46 | static int lastbtn; | 47 | static int lastbtn; |
47 | static int repeat_speed = REPEAT_INTERVAL_START; | 48 | static int repeat_speed = REPEAT_INTERVAL_START; |
48 | static int repeat_count = 0; | 49 | static int repeat_count = 0; |
@@ -180,6 +181,11 @@ void button_event(int key, bool pressed) | |||
180 | lastbtn = btn & ~(BUTTON_REL | BUTTON_REPEAT); | 181 | lastbtn = btn & ~(BUTTON_REL | BUTTON_REPEAT); |
181 | } | 182 | } |
182 | 183 | ||
184 | int button_status(void) | ||
185 | { | ||
186 | return btn; | ||
187 | } | ||
188 | |||
183 | void button_init(void) | 189 | void button_init(void) |
184 | { | 190 | { |
185 | } | 191 | } |
@@ -203,3 +209,8 @@ int button_get_w_tmo(int ticks) | |||
203 | queue_wait_w_tmo(&button_queue, &ev, ticks); | 209 | queue_wait_w_tmo(&button_queue, &ev, ticks); |
204 | return (ev.id != SYS_TIMEOUT)? ev.id: BUTTON_NONE; | 210 | return (ev.id != SYS_TIMEOUT)? ev.id: BUTTON_NONE; |
205 | } | 211 | } |
212 | |||
213 | void button_clear_queue(void) | ||
214 | { | ||
215 | queue_empty(&button_queue); | ||
216 | } | ||
diff --git a/uisimulator/x11/button-x11.c b/uisimulator/x11/button-x11.c index 1b2c19232f..6567c2a9bc 100644 --- a/uisimulator/x11/button-x11.c +++ b/uisimulator/x11/button-x11.c | |||
@@ -33,20 +33,6 @@ void button_init() | |||
33 | { | 33 | { |
34 | } | 34 | } |
35 | 35 | ||
36 | int button_set_repeat(int newmask) | ||
37 | { | ||
38 | int oldmask = repeat_mask; | ||
39 | repeat_mask = newmask; | ||
40 | return oldmask; | ||
41 | } | ||
42 | |||
43 | int button_set_release(int newmask) | ||
44 | { | ||
45 | int oldmask = release_mask; | ||
46 | release_mask = newmask; | ||
47 | return oldmask; | ||
48 | } | ||
49 | |||
50 | /* | 36 | /* |
51 | * Translate X keys to Recorder keys | 37 | * Translate X keys to Recorder keys |
52 | * | 38 | * |
@@ -214,3 +200,12 @@ int button_get(bool block) | |||
214 | 200 | ||
215 | return bits; | 201 | return bits; |
216 | } | 202 | } |
203 | |||
204 | int button_status(void) | ||
205 | { | ||
206 | return get_raw_button(); | ||
207 | } | ||
208 | |||
209 | void button_clear_queue(void) | ||
210 | { | ||
211 | } | ||