summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugin.c7
-rw-r--r--apps/plugin.h2
-rw-r--r--firmware/drivers/button.c10
-rw-r--r--firmware/export/button.h2
-rw-r--r--uisimulator/win32/button.c13
-rw-r--r--uisimulator/x11/button-x11.c23
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
258int plugin_load(char* plugin, void* parameter) 260int 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
425int button_status(void)
426{
427 return button_read();
428}
429
430void 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;
28void button_init (void); 28void button_init (void);
29int button_get (bool block); 29int button_get (bool block);
30int button_get_w_tmo(int ticks); 30int button_get_w_tmo(int ticks);
31int button_status(void);
32void button_clear_queue(void);
31#ifdef HAVE_RECORDER_KEYPAD 33#ifdef HAVE_RECORDER_KEYPAD
32void button_set_flip(bool flip); /* turn 180 degrees */ 34void 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
37struct event_queue button_queue; 37struct event_queue button_queue;
38 38
39static int btn = 0; /* Hopefully keeps track of currently pressed keys... */
40
39void button_event(int key, bool pressed) 41void 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
184int button_status(void)
185{
186 return btn;
187}
188
183void button_init(void) 189void 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
213void 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
36int button_set_repeat(int newmask)
37{
38 int oldmask = repeat_mask;
39 repeat_mask = newmask;
40 return oldmask;
41}
42
43int 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
204int button_status(void)
205{
206 return get_raw_button();
207}
208
209void button_clear_queue(void)
210{
211}