summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/alarmclock.c11
-rw-r--r--apps/plugins/bubbles.c59
-rw-r--r--apps/plugins/clock/clock.c36
-rw-r--r--apps/plugins/codebuster.c22
-rw-r--r--apps/plugins/demystify.c37
-rw-r--r--apps/plugins/dice.c8
-rw-r--r--apps/plugins/fire.c30
-rw-r--r--apps/plugins/frotz/frotz.c18
-rw-r--r--apps/plugins/jackpot.c8
-rw-r--r--apps/plugins/lib/pluginlib_actions.c749
-rw-r--r--apps/plugins/lib/pluginlib_actions.h27
-rw-r--r--apps/plugins/maze.c82
-rw-r--r--apps/plugins/mazezam.c44
-rw-r--r--apps/plugins/metronome.c109
-rw-r--r--apps/plugins/pitch_detector.c10
-rw-r--r--apps/plugins/robotfindskitten.c54
-rw-r--r--apps/plugins/rocklife.c10
-rw-r--r--apps/plugins/test_resize.c9
18 files changed, 470 insertions, 853 deletions
diff --git a/apps/plugins/alarmclock.c b/apps/plugins/alarmclock.c
index 88e3e858cb..23ad886f6c 100644
--- a/apps/plugins/alarmclock.c
+++ b/apps/plugins/alarmclock.c
@@ -24,8 +24,7 @@
24 24
25PLUGIN_HEADER 25PLUGIN_HEADER
26 26
27const struct button_mapping *plugin_contexts[] = {generic_directions, 27const struct button_mapping *plugin_contexts[] = { pla_main_ctx };
28 generic_actions};
29 28
30static int current = 0; 29static int current = 0;
31static bool tomorrow = false; 30static bool tomorrow = false;
@@ -33,7 +32,8 @@ static int alarm[2] = {0, 0}, maxval[2] = {24, 60}, prev_tick = 3600 * 24;
33static bool quit = false, usb = false, waiting = false, done = false; 32static bool quit = false, usb = false, waiting = false, done = false;
34 33
35static inline int get_button(void) { 34static inline int get_button(void) {
36 return pluginlib_getaction(HZ/2, plugin_contexts, 2); 35 return pluginlib_getaction(HZ/2, plugin_contexts,
36 ARRAYLEN(plugin_contexts));
37} 37}
38 38
39int rem_seconds(void) { 39int rem_seconds(void) {
@@ -125,7 +125,7 @@ enum plugin_status plugin_start(const void* parameter)
125 while(!quit) { 125 while(!quit) {
126 button = get_button(); 126 button = get_button();
127 127
128 if (button == PLA_QUIT) 128 if (button == PLA_EXIT || PLA_CANCEL)
129 quit = true; 129 quit = true;
130 130
131 FOR_NB_SCREENS(i) { 131 FOR_NB_SCREENS(i) {
@@ -157,7 +157,8 @@ enum plugin_status plugin_start(const void* parameter)
157 current = (current + 1) % 2; 157 current = (current + 1) % 2;
158 break; 158 break;
159 159
160 case PLA_FIRE: { 160 case PLA_SELECT:
161 case PLA_SELECT_REPEAT: {
161 if (rem_seconds() < 0) 162 if (rem_seconds() < 0)
162 tomorrow = true; 163 tomorrow = true;
163 164
diff --git a/apps/plugins/bubbles.c b/apps/plugins/bubbles.c
index 514621224a..f169a2ef45 100644
--- a/apps/plugins/bubbles.c
+++ b/apps/plugins/bubbles.c
@@ -66,28 +66,41 @@ enum {
66 66
67/* keyboard layouts */ 67/* keyboard layouts */
68 68
69#if (CONFIG_KEYPAD != SANSA_E200_PAD) && \ 69#ifdef HAVE_SCROLLWHEEL
70 (CONFIG_KEYPAD != SANSA_FUZE_PAD)
71/* sansas use the wheel instead of left/right if available */ 70/* sansas use the wheel instead of left/right if available */
71#define BUBBLES_LEFT PLA_SCROLL_BACK
72#define BUBBLES_LEFT_REP PLA_SCROLL_BACK_REPEAT
73#define BUBBLES_RIGHT PLA_SCROLL_FWD
74#define BUBBLES_RIGHT_REP PLA_SCROLL_FWD_REPEAT
75#else
72#define BUBBLES_LEFT PLA_LEFT 76#define BUBBLES_LEFT PLA_LEFT
73#define BUBBLES_LEFT_REP PLA_LEFT_REPEAT 77#define BUBBLES_LEFT_REP PLA_LEFT_REPEAT
74#define BUBBLES_RIGHT PLA_RIGHT 78#define BUBBLES_RIGHT PLA_RIGHT
75#define BUBBLES_RIGHT_REP PLA_RIGHT_REPEAT 79#define BUBBLES_RIGHT_REP PLA_RIGHT_REPEAT
76#define ANGLE_STEP 4
77#define ANGLE_STEP_REP 4
78#else
79#define BUBBLES_LEFT PLA_UP
80#define BUBBLES_LEFT_REP PLA_UP_REPEAT
81#define BUBBLES_RIGHT PLA_DOWN
82#define BUBBLES_RIGHT_REP PLA_DOWN_REPEAT
83#define ANGLE_STEP 2
84#define ANGLE_STEP_REP 4
85#endif 80#endif
86 81
87#define BUBBLES_QUIT1 PLA_QUIT 82#define ANGLE_STEP 2
88#define BUBBLES_QUIT2 PLA_MENU 83#define ANGLE_STEP_REP 4
89#define BUBBLES_PAUSE PLA_START 84
90#define BUBBLES_FIRE PLA_FIRE 85#define BUBBLES_QUIT1 PLA_EXIT
86#define BUBBLES_QUIT2 PLA_CANCEL
87
88/* these are better off shooting with up */
89#if (CONFIG_KEYPAD == SAMSUNG_YH_PAD) \
90 || (CONFIG_KEYPAD == ONDIO_PAD) \
91 || (CONFIG_KEYPAD == IRIVER_H10_PAD)
92#define SHOOT_WITH_UP
93#endif
94
95#ifdef SHOOT_WITH_UP
96#define BUBBLES_FIRE PLA_UP
97#define BUBBLES_FIRE_REPEAT PLA_UP_REPEAT
98#define BUBBLES_PAUSE PLA_SELECT
99#else
100#define BUBBLES_FIRE PLA_SELECT
101#define BUBBLES_FIRE_REPEAT PLA_SELECT_REPEAT
102#define BUBBLES_PAUSE PLA_UP
103#endif
91 104
92/* external bitmaps */ 105/* external bitmaps */
93#ifdef HAVE_LCD_COLOR 106#ifdef HAVE_LCD_COLOR
@@ -2294,16 +2307,15 @@ static int bubbles_handlebuttons(struct game_context* bb, bool animblock,
2294 int buttonres; 2307 int buttonres;
2295 long start; 2308 long start;
2296 const struct button_mapping *plugin_contexts[] 2309 const struct button_mapping *plugin_contexts[]
2297#if (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 2310 = { pla_main_ctx,
2298 (CONFIG_KEYPAD == SANSA_FUZE_PAD) 2311#ifdef HAVE_REMOTE_LCD
2299 = {generic_directions,generic_actions}; 2312 pla_remote_ctx,
2300#else
2301 = {generic_left_right_fire,generic_actions};
2302#endif 2313#endif
2314 };
2303 2315
2304 if (timeout < 0) 2316 if (timeout < 0)
2305 timeout = 0; 2317 timeout = 0;
2306 button = pluginlib_getaction(timeout,plugin_contexts,2); 2318 button = pluginlib_getaction(timeout,plugin_contexts,ARRAYLEN(plugin_contexts));
2307#if defined(HAS_BUTTON_HOLD) && !defined(HAVE_REMOTE_LCD_AS_MAIN) 2319#if defined(HAS_BUTTON_HOLD) && !defined(HAVE_REMOTE_LCD_AS_MAIN)
2308 /* FIXME: Should probably check remote hold here */ 2320 /* FIXME: Should probably check remote hold here */
2309 if (rb->button_hold()) 2321 if (rb->button_hold())
@@ -2324,6 +2336,7 @@ static int bubbles_handlebuttons(struct game_context* bb, bool animblock,
2324 break; 2336 break;
2325 2337
2326 case BUBBLES_FIRE: /* fire the shot */ 2338 case BUBBLES_FIRE: /* fire the shot */
2339 case BUBBLES_FIRE_REPEAT:
2327 if(!animblock) { 2340 if(!animblock) {
2328 bb->elapsedlvl += bb->elapsedshot; 2341 bb->elapsedlvl += bb->elapsedshot;
2329 bb->elapsedshot = 0; 2342 bb->elapsedshot = 0;
@@ -2338,7 +2351,9 @@ static int bubbles_handlebuttons(struct game_context* bb, bool animblock,
2338 case BUBBLES_PAUSE: /* pause the game */ 2351 case BUBBLES_PAUSE: /* pause the game */
2339 start = *rb->current_tick; 2352 start = *rb->current_tick;
2340 rb->splash(0, "Paused"); 2353 rb->splash(0, "Paused");
2341 while(pluginlib_getaction(TIMEOUT_BLOCK,plugin_contexts,2) 2354
2355 while(pluginlib_getaction(TIMEOUT_BLOCK,plugin_contexts,
2356 ARRAYLEN(plugin_contexts))
2342 != BUBBLES_PAUSE); 2357 != BUBBLES_PAUSE);
2343 bb->startedshot += *rb->current_tick-start; 2358 bb->startedshot += *rb->current_tick-start;
2344 bubbles_drawboard(bb); 2359 bubbles_drawboard(bb);
diff --git a/apps/plugins/clock/clock.c b/apps/plugins/clock/clock.c
index 1937954a0f..f06f3e15e4 100644
--- a/apps/plugins/clock/clock.c
+++ b/apps/plugins/clock/clock.c
@@ -34,27 +34,24 @@ PLUGIN_HEADER
34 34
35/* Keymaps */ 35/* Keymaps */
36const struct button_mapping* plugin_contexts[]={ 36const struct button_mapping* plugin_contexts[]={
37 generic_actions, 37 pla_main_ctx,
38 generic_increase_decrease, 38#ifdef HAVE_REMOTE_LCD
39 generic_directions, 39 pla_remote_ctx,
40#if NB_SCREENS == 2
41 remote_directions
42#endif 40#endif
43}; 41};
44#define PLA_ARRAY_COUNT sizeof(plugin_contexts)/sizeof(plugin_contexts[0]) 42#define PLA_ARRAY_COUNT sizeof(plugin_contexts)/sizeof(plugin_contexts[0])
45 43
46#define ACTION_COUNTER_TOGGLE PLA_FIRE 44#define ACTION_COUNTER_TOGGLE PLA_SELECT
47#define ACTION_COUNTER_RESET PLA_FIRE_REPEAT 45#define ACTION_COUNTER_RESET PLA_SELECT_REPEAT
48#define ACTION_MENU PLA_MENU 46#define ACTION_MENU PLA_CANCEL
49#define ACTION_EXIT PLA_QUIT 47#define ACTION_MODE_NEXT PLA_RIGHT
50#define ACTION_MODE_NEXT PLA_RIGHT 48#define ACTION_MODE_NEXT_REPEAT PLA_RIGHT_REPEAT
51#define ACTION_MODE_NEXT_REPEAT PLA_RIGHT_REPEAT 49#define ACTION_MODE_PREV PLA_LEFT
52#define ACTION_MODE_PREV PLA_LEFT 50#define ACTION_MODE_PREV_REPEAT PLA_LEFT_REPEAT
53#define ACTION_MODE_PREV_REPEAT PLA_LEFT_REPEAT 51#define ACTION_SKIN_NEXT PLA_UP
54#define ACTION_SKIN_NEXT PLA_INC 52#define ACTION_SKIN_NEXT_REPEAT PLA_UP_REPEAT
55#define ACTION_SKIN_NEXT_REPEAT PLA_INC_REPEAT 53#define ACTION_SKIN_PREV PLA_DOWN
56#define ACTION_SKIN_PREV PLA_DEC 54#define ACTION_SKIN_PREV_REPEAT PLA_DOWN_REPEAT
57#define ACTION_SKIN_PREV_REPEAT PLA_DEC_REPEAT
58 55
59/************************** 56/**************************
60 * Cleanup on plugin return 57 * Cleanup on plugin return
@@ -176,11 +173,6 @@ enum plugin_status plugin_start(const void* parameter){
176 clock_draw_restore_colors(); 173 clock_draw_restore_colors();
177 exit_clock=main_menu(); 174 exit_clock=main_menu();
178 break; 175 break;
179
180 case ACTION_EXIT:
181 exit_clock=true;
182 break;
183
184 default: 176 default:
185 if(rb->default_event_handler_ex(button, cleanup, NULL) 177 if(rb->default_event_handler_ex(button, cleanup, NULL)
186 == SYS_USB_CONNECTED) 178 == SYS_USB_CONNECTED)
diff --git a/apps/plugins/codebuster.c b/apps/plugins/codebuster.c
index bfcc25f9b5..0fd1234b29 100644
--- a/apps/plugins/codebuster.c
+++ b/apps/plugins/codebuster.c
@@ -31,8 +31,12 @@ PLUGIN_HEADER
31#define MAX_COLORS_COUNT 8 31#define MAX_COLORS_COUNT 8
32#define MAX_GUESSES_COUNT 10 32#define MAX_GUESSES_COUNT 10
33 33
34const struct button_mapping *plugin_contexts[] = 34const struct button_mapping *plugin_contexts[] = {
35 {generic_directions, generic_actions}; 35 pla_main_ctx,
36#ifdef HAVE_REMOTE_LCD
37 pla_remote_ctx,
38#endif
39};
36 40
37/* 41/*
38 * Screen structure: 42 * Screen structure:
@@ -427,14 +431,14 @@ enum plugin_status plugin_start(const void* parameter) {
427 draw_board(guess, piece); 431 draw_board(guess, piece);
428 432
429 button = get_button(); 433 button = get_button();
430 if (button == PLA_FIRE || button == PLA_START) 434 if (button == PLA_SELECT)
431 break; 435 break;
432 436
433 switch (button) { 437 switch (button) {
434 438
435 /* Exit */ 439 /* Exit */
436 case PLA_QUIT: 440 case PLA_EXIT:
437 case PLA_MENU: 441 case PLA_CANCEL:
438 resume = true; 442 resume = true;
439 main_menu(); 443 main_menu();
440 break; 444 break;
@@ -452,6 +456,10 @@ enum plugin_status plugin_start(const void* parameter) {
452 break; 456 break;
453 457
454 /* Next color */ 458 /* Next color */
459#ifdef HAVE_SCROLLWHEEL
460 case PLA_SCROLL_FWD:
461 case PLA_SCROLL_FWD_REPEAT:
462#endif
455 case PLA_DOWN: 463 case PLA_DOWN:
456 case PLA_DOWN_REPEAT: 464 case PLA_DOWN_REPEAT:
457 guesses[guess].pieces[piece] = 465 guesses[guess].pieces[piece] =
@@ -460,6 +468,10 @@ enum plugin_status plugin_start(const void* parameter) {
460 break; 468 break;
461 469
462 /* Previous color */ 470 /* Previous color */
471#ifdef HAVE_SCROLLWHEEL
472 case PLA_SCROLL_BACK:
473 case PLA_SCROLL_BACK_REPEAT:
474#endif
463 case PLA_UP: 475 case PLA_UP:
464 case PLA_UP_REPEAT: 476 case PLA_UP_REPEAT:
465 guesses[guess].pieces[piece] = 477 guesses[guess].pieces[piece] =
diff --git a/apps/plugins/demystify.c b/apps/plugins/demystify.c
index 5f44e11f3d..468f1806ce 100644
--- a/apps/plugins/demystify.c
+++ b/apps/plugins/demystify.c
@@ -37,26 +37,33 @@ PLUGIN_HEADER
37#define MIN_POLYGONS 1 37#define MIN_POLYGONS 1
38 38
39/* Key assignement */ 39/* Key assignement */
40#define DEMYSTIFY_QUIT PLA_QUIT 40#define DEMYSTIFY_QUIT PLA_CANCEL
41 41
42#define DEMYSTIFY_INCREASE_SPEED PLA_RIGHT 42#ifdef HAVE_SCROLLWHEEL
43#define DEMYSTIFY_DECREASE_SPEED PLA_LEFT 43
44#define DEMYSTIFY_INCREASE_SPEED_REPEAT PLA_RIGHT_REPEAT 44#define DEMYSTIFY_INCREASE_SPEED PLA_SCROLL_FWD
45#define DEMYSTIFY_DECREASE_SPEED_REPEAT PLA_LEFT_REPEAT 45#define DEMYSTIFY_DECREASE_SPEED PLA_SCROLL_BACK
46#define DEMYSTIFY_INCREASE_SPEED_REPEAT PLA_SCROLL_FWD_REPEAT
47#define DEMYSTIFY_DECREASE_SPEED_REPEAT PLA_SCROLL_BACK_REPEAT
48#else
49#define DEMYSTIFY_INCREASE_SPEED PLA_RIGHT
50#define DEMYSTIFY_DECREASE_SPEED PLA_LEFT
51#define DEMYSTIFY_INCREASE_SPEED_REPEAT PLA_RIGHT_REPEAT
52#define DEMYSTIFY_DECREASE_SPEED_REPEAT PLA_LEFT_REPEAT
53#endif
46 54
47#define DEMYSTIFY_ADD_POLYGON PLA_UP 55#define DEMYSTIFY_ADD_POLYGON PLA_UP
48#define DEMYSTIFY_REMOVE_POLYGON PLA_DOWN 56#define DEMYSTIFY_REMOVE_POLYGON PLA_DOWN
49#define DEMYSTIFY_ADD_POLYGON_REPEAT PLA_UP_REPEAT 57#define DEMYSTIFY_ADD_POLYGON_REPEAT PLA_UP_REPEAT
50#define DEMYSTIFY_REMOVE_POLYGON_REPEAT PLA_DOWN_REPEAT 58#define DEMYSTIFY_REMOVE_POLYGON_REPEAT PLA_DOWN_REPEAT
51 59
52const struct button_mapping *plugin_contexts[] 60const struct button_mapping *plugin_contexts[]
53= {generic_directions, generic_actions, 61= {pla_main_ctx,
54#if defined(HAVE_REMOTE_LCD) 62#if defined(HAVE_REMOTE_LCD)
55 remote_directions 63 pla_remote_ctx,
56#endif 64#endif
57}; 65};
58#define NB_ACTION_CONTEXTS \ 66
59 sizeof(plugin_contexts)/sizeof(struct button_mapping*)
60#ifdef HAVE_LCD_COLOR 67#ifdef HAVE_LCD_COLOR
61struct line_color 68struct line_color
62{ 69{
@@ -383,7 +390,7 @@ int plugin_main(void)
383 else 390 else
384 rb->sleep(sleep_time); 391 rb->sleep(sleep_time);
385 action = pluginlib_getaction(TIMEOUT_NOBLOCK, 392 action = pluginlib_getaction(TIMEOUT_NOBLOCK,
386 plugin_contexts, NB_ACTION_CONTEXTS); 393 plugin_contexts, ARRAYLEN(plugin_contexts));
387 switch(action) 394 switch(action)
388 { 395 {
389 case DEMYSTIFY_QUIT: 396 case DEMYSTIFY_QUIT:
diff --git a/apps/plugins/dice.c b/apps/plugins/dice.c
index bee9f89c6b..7bd51122ee 100644
--- a/apps/plugins/dice.c
+++ b/apps/plugins/dice.c
@@ -28,13 +28,13 @@
28#define INITIAL_NB_DICES 1 28#define INITIAL_NB_DICES 1
29#define INITIAL_NB_SIDES 2 /* corresponds to 6 sides in the array */ 29#define INITIAL_NB_SIDES 2 /* corresponds to 6 sides in the array */
30 30
31#define DICE_QUIT PLA_QUIT 31#define DICE_QUIT PLA_CANCEL
32#define DICE_ROLL PLA_START 32#define DICE_ROLL PLA_SELECT
33 33
34 34
35#define CFG_FILE "dice.cfg" 35#define CFG_FILE "dice.cfg"
36 36
37const struct button_mapping* plugin_contexts[]={generic_actions}; 37const struct button_mapping* plugin_contexts[]={pla_main_ctx};
38 38
39struct dices 39struct dices
40{ 40{
@@ -94,7 +94,7 @@ enum plugin_status plugin_start(const void* parameter) {
94 dice_print( &dice, rb->screens[i] ); 94 dice_print( &dice, rb->screens[i] );
95 while(true) { 95 while(true) {
96 action = pluginlib_getaction(TIMEOUT_BLOCK, 96 action = pluginlib_getaction(TIMEOUT_BLOCK,
97 plugin_contexts, 1); 97 plugin_contexts, ARRAYLEN(plugin_contexts));
98 switch(action) { 98 switch(action) {
99 case DICE_ROLL: 99 case DICE_ROLL:
100 dice_roll(&dice); 100 dice_roll(&dice);
diff --git a/apps/plugins/fire.c b/apps/plugins/fire.c
index fff39b38c9..e1362dc900 100644
--- a/apps/plugins/fire.c
+++ b/apps/plugins/fire.c
@@ -51,20 +51,27 @@ GREY_INFO_STRUCT
51 51
52/* Key assignement */ 52/* Key assignement */
53const struct button_mapping* plugin_contexts[]= { 53const struct button_mapping* plugin_contexts[]= {
54 generic_increase_decrease, 54 pla_main_ctx,
55 generic_directions,
56#if defined(HAVE_REMOTE_LCD) 55#if defined(HAVE_REMOTE_LCD)
57 remote_directions, 56 pla_remote_ctx,
58#endif 57#endif
59 generic_actions
60}; 58};
61#define PLA_ARRAY_COUNT sizeof(plugin_contexts)/sizeof(plugin_contexts[0])
62 59
63#define FIRE_QUIT PLA_QUIT 60#define FIRE_QUIT PLA_CANCEL
64#define FIRE_SWITCH_FLAMES_TYPE PLA_LEFT 61#define FIRE_SWITCH_FLAMES_TYPE PLA_LEFT
65#define FIRE_SWITCH_FLAMES_MOVING PLA_RIGHT 62#define FIRE_SWITCH_FLAMES_MOVING PLA_RIGHT
66#define FIRE_INCREASE_MULT PLA_INC 63
67#define FIRE_DECREASE_MULT PLA_DEC 64#ifdef HAVE_SCROLLWHEEL
65#define FIRE_INCREASE_MULT PLA_SCROLL_FWD
66#define FIRE_INCREASE_MULT_REP PLA_SCROLL_FWD_REPEAT
67#define FIRE_DECREASE_MULT PLA_SCROLL_BACK
68#define FIRE_DECREASE_MULT_REP PLA_SCROLL_BACK_REPEAT
69#else
70#define FIRE_INCREASE_MULT PLA_UP
71#define FIRE_INCREASE_MULT_REP PLA_UP_REPEAT
72#define FIRE_DECREASE_MULT PLA_DOWN
73#define FIRE_DECREASE_MULT_REP PLA_DOWN_REPEAT
74#endif
68 75
69#define MIN_FLAME_VALUE 0 76#define MIN_FLAME_VALUE 0
70#define COOL_MAX (440/LCD_HEIGHT+2) 77#define COOL_MAX (440/LCD_HEIGHT+2)
@@ -319,7 +326,8 @@ int main(void)
319 fire_draw(&fire); 326 fire_draw(&fire);
320 rb->yield(); 327 rb->yield();
321 328
322 action = pluginlib_getaction(0, plugin_contexts, PLA_ARRAY_COUNT); 329 action = pluginlib_getaction(0, plugin_contexts,
330 ARRAYLEN(plugin_contexts));
323 331
324 switch(action){ 332 switch(action){
325 case FIRE_QUIT: 333 case FIRE_QUIT:
diff --git a/apps/plugins/frotz/frotz.c b/apps/plugins/frotz/frotz.c
index f64431f14e..a12faf90aa 100644
--- a/apps/plugins/frotz/frotz.c
+++ b/apps/plugins/frotz/frotz.c
@@ -112,7 +112,7 @@ zchar menu(void)
112 } 112 }
113} 113}
114 114
115const struct button_mapping* plugin_contexts[]={generic_actions}; 115const struct button_mapping* plugin_contexts[]={pla_main_ctx};
116 116
117void wait_for_key() 117void wait_for_key()
118{ 118{
@@ -126,11 +126,11 @@ void wait_for_key()
126 plugin_contexts, 1); 126 plugin_contexts, 1);
127 switch (action) 127 switch (action)
128 { 128 {
129 case PLA_QUIT: 129 case PLA_EXIT:
130 hot_key_quit(); 130 hot_key_quit();
131 break; 131 break;
132 132
133 case PLA_FIRE: 133 case PLA_SELECT:
134 return; 134 return;
135 } 135 }
136 } 136 }
@@ -154,24 +154,24 @@ zchar do_input(int timeout, bool show_cursor)
154 154
155 for (;;) 155 for (;;)
156 { 156 {
157 action = pluginlib_getaction(timeout, 157 action = pluginlib_getaction(timeout, plugin_contexts,
158 plugin_contexts, 1); 158 ARRAYLEN(plugin_contexts));
159 switch (action) 159 switch (action)
160 { 160 {
161 case PLA_QUIT: 161 case PLA_EXIT:
162 return ZC_HKEY_QUIT; 162 return ZC_HKEY_QUIT;
163 163
164 case PLA_MENU: 164 case PLA_CANCEL:
165 menu_ret = menu(); 165 menu_ret = menu();
166 if (menu_ret != ZC_BAD) 166 if (menu_ret != ZC_BAD)
167 return menu_ret; 167 return menu_ret;
168 timeout_at = *rb->current_tick + timeout; 168 timeout_at = *rb->current_tick + timeout;
169 break; 169 break;
170 170
171 case PLA_FIRE: 171 case PLA_SELECT:
172 return ZC_RETURN; 172 return ZC_RETURN;
173 173
174 case PLA_START: 174 case PLA_SELECT_REPEAT:
175 return ZC_BAD; 175 return ZC_BAD;
176 176
177 default: 177 default:
diff --git a/apps/plugins/jackpot.c b/apps/plugins/jackpot.c
index 302c5c6851..56c2910b70 100644
--- a/apps/plugins/jackpot.c
+++ b/apps/plugins/jackpot.c
@@ -25,7 +25,7 @@
25 25
26PLUGIN_HEADER 26PLUGIN_HEADER
27 27
28const struct button_mapping* plugin_contexts[]={generic_actions}; 28const struct button_mapping* plugin_contexts[]={pla_main_ctx};
29#define NB_PICTURES 9 29#define NB_PICTURES 9
30#define NB_SLOTS 3 30#define NB_SLOTS 3
31 31
@@ -313,12 +313,12 @@ enum plugin_status plugin_start(const void* parameter)
313 while (true) 313 while (true)
314 { 314 {
315 action = pluginlib_getaction(TIMEOUT_BLOCK, 315 action = pluginlib_getaction(TIMEOUT_BLOCK,
316 plugin_contexts, 1); 316 plugin_contexts, ARRAYLEN(plugin_contexts));
317 switch ( action ) 317 switch ( action )
318 { 318 {
319 case PLA_QUIT: 319 case PLA_CANCEL:
320 return PLUGIN_OK; 320 return PLUGIN_OK;
321 case PLA_FIRE: 321 case PLA_SELECT:
322 jackpot_play_turn(&game); 322 jackpot_play_turn(&game);
323 break; 323 break;
324 324
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index 29c9430f64..b68c390aae 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -25,7 +25,8 @@
25#include "pluginlib_actions.h" 25#include "pluginlib_actions.h"
26 26
27#if defined(HAVE_REMOTE_LCD) 27#if defined(HAVE_REMOTE_LCD)
28const struct button_mapping remote_directions[] = 28/* remote directions */
29const struct button_mapping pla_remote_ctx[] =
29{ 30{
30#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ 31#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
31 (CONFIG_KEYPAD == IRIVER_H300_PAD) 32 (CONFIG_KEYPAD == IRIVER_H300_PAD)
@@ -68,35 +69,34 @@ const struct button_mapping remote_directions[] =
68 { PLA_DOWN_REPEAT, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 69 { PLA_DOWN_REPEAT, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_NONE},
69 { PLA_LEFT_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE}, 70 { PLA_LEFT_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE},
70 { PLA_RIGHT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE}, 71 { PLA_RIGHT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE},
71#elif (CONFIG_KEYPAD == SAMSUNG_YH_PAD)
72 { PLA_UP, BUTTON_UP, BUTTON_NONE},
73 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE},
74 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
75 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
76 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REW, BUTTON_NONE},
77 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REW, BUTTON_NONE},
78 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REW, BUTTON_NONE},
79 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REW, BUTTON_NONE},
80#else 72#else
81 #error pluginlib_actions: Unsupported remote keypad 73 #error pluginlib_actions: No remote directions
82#endif 74#endif
83 {CONTEXT_PLUGIN,BUTTON_NONE,BUTTON_NONE} 75 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_PLUGIN),
84}; 76};
85#endif /* HAVE_REMOTE_LCD */ 77#endif /* HAVE_REMOTE_LCD */
86 78
87const struct button_mapping generic_directions[] = 79/* these were taken from the bubbles plugin, so may need tweaking */
80const struct button_mapping pla_main_ctx[] =
88{ 81{
82 /* Touchscreens */
89#ifdef HAVE_TOUCHSCREEN 83#ifdef HAVE_TOUCHSCREEN
90 { PLA_UP, BUTTON_TOPMIDDLE, BUTTON_NONE}, 84 { PLA_CANCEL, BUTTON_BOTTOMRIGHT, BUTTON_NONE},
91 { PLA_DOWN, BUTTON_BOTTOMMIDDLE, BUTTON_NONE}, 85 { PLA_SELECT, BUTTON_CENTER, BUTTON_NONE},
92 { PLA_LEFT, BUTTON_MIDLEFT, BUTTON_NONE}, 86 { PLA_SELECT_REL, BUTTON_CENTER|BUTTON_REL, BUTTON_NONE},
93 { PLA_RIGHT, BUTTON_MIDRIGHT, BUTTON_NONE}, 87 { PLA_SELECT_REPEAT, BUTTON_CENTER|BUTTON_REPEAT, BUTTON_NONE},
94 { PLA_UP_REPEAT, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_NONE}, 88 { PLA_UP, BUTTON_TOPMIDDLE, BUTTON_NONE},
95 { PLA_DOWN_REPEAT, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_NONE}, 89 { PLA_DOWN, BUTTON_BOTTOMMIDDLE, BUTTON_NONE},
96 { PLA_LEFT_REPEAT, BUTTON_MIDLEFT|BUTTON_REPEAT, BUTTON_NONE}, 90 { PLA_LEFT, BUTTON_MIDLEFT, BUTTON_NONE},
97 { PLA_RIGHT_REPEAT, BUTTON_MIDRIGHT|BUTTON_REPEAT, BUTTON_NONE}, 91 { PLA_RIGHT, BUTTON_MIDRIGHT, BUTTON_NONE},
92 { PLA_UP_REPEAT, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_NONE},
93 { PLA_DOWN_REPEAT, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_NONE},
94 { PLA_LEFT_REPEAT, BUTTON_MIDLEFT|BUTTON_REPEAT, BUTTON_NONE},
95 { PLA_RIGHT_REPEAT, BUTTON_MIDRIGHT|BUTTON_REPEAT, BUTTON_NONE},
98#endif 96#endif
99#if (CONFIG_KEYPAD == IRIVER_H100_PAD) \ 97
98 /* Directions */
99#if ((CONFIG_KEYPAD == IRIVER_H100_PAD) \
100 || (CONFIG_KEYPAD == IRIVER_H300_PAD) \ 100 || (CONFIG_KEYPAD == IRIVER_H300_PAD) \
101 || (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \ 101 || (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \
102 || (CONFIG_KEYPAD == GIGABEAT_PAD) \ 102 || (CONFIG_KEYPAD == GIGABEAT_PAD) \
@@ -110,86 +110,67 @@ const struct button_mapping generic_directions[] =
110 || (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) \ 110 || (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) \
111 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \ 111 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
112 || (CONFIG_KEYPAD == CREATIVEZVM_PAD) \ 112 || (CONFIG_KEYPAD == CREATIVEZVM_PAD) \
113 || (CONFIG_KEYPAD == SANSA_M200_PAD) 113 || (CONFIG_KEYPAD == SANSA_M200_PAD)\
114 { PLA_UP, BUTTON_UP, BUTTON_NONE}, 114 || (CONFIG_KEYPAD == SANSA_E200_PAD) \
115 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE}, 115 || (CONFIG_KEYPAD == SANSA_FUZE_PAD) \
116 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, 116 || (CONFIG_KEYPAD == SAMSUNG_YH_PAD))
117 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, 117 { PLA_UP, BUTTON_UP, BUTTON_NONE },
118 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 118 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE },
119 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 119 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE },
120 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, 120 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
121 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 121 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
122 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
123 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
124 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
125 /* now the bad ones that don't have standard names for the directional
126 * buttons */
122#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \ 127#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \
123 || (CONFIG_KEYPAD == IPOD_3G_PAD) \ 128 || (CONFIG_KEYPAD == IPOD_3G_PAD) \
124 || (CONFIG_KEYPAD == IPOD_4G_PAD) \ 129 || (CONFIG_KEYPAD == IPOD_4G_PAD)
125 || (CONFIG_KEYPAD == SANSA_E200_PAD) \ 130 { PLA_UP, BUTTON_MENU, BUTTON_NONE },
126 || (CONFIG_KEYPAD == SANSA_FUZE_PAD) 131 ( PLA_DOWN, BUTTON_PLAY, BUTTON_NONE },
127 { PLA_UP, BUTTON_SCROLL_BACK, BUTTON_NONE}, 132 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE },
128 { PLA_DOWN, BUTTON_SCROLL_FWD, BUTTON_NONE}, 133 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
129 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, 134 { PLA_UP_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
130 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, 135 { PLA_DOWN_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
131 { PLA_UP_REPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE}, 136 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
132 { PLA_DOWN_REPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE}, 137 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
133 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, 138#elif (CONFIG_KEYPAD == PLAYER_PAD)
134 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 139 { PLA_UP, BUTTON_PLAY, BUTTON_NONE },
135#elif CONFIG_KEYPAD == PLAYER_PAD 140 { PLA_DOWN, BUTTON_STOP, BUTTON_NONE },
136 {PLA_UP, BUTTON_STOP, BUTTON_NONE}, 141 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE },
137 {PLA_DOWN, BUTTON_PLAY, BUTTON_NONE}, 142 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
138 {PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, 143 { PLA_UP_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
139 {PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, 144 { PLA_DOWN_REPEAT, BUTTON_STOP|BUTTON_REPEAT, BUTTON_NONE },
140 {PLA_UP_REPEAT, BUTTON_STOP|BUTTON_REPEAT, BUTTON_NONE}, 145 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
141 {PLA_DOWN_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 146 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
142 {PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
143 {PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
144#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 147#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
145 { PLA_UP, BUTTON_SCROLL_UP, BUTTON_NONE}, 148 { PLA_UP, BUTTON_SCROLL_UP, BUTTON_NONE },
146 { PLA_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE}, 149 { PLA_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE },
147 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, 150 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE },
148 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, 151 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
149 { PLA_UP_REPEAT, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE}, 152 { PLA_UP_REPEAT, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
150 { PLA_DOWN_REPEAT, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 153 { PLA_DOWN_REPEAT, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
151 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, 154 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
152 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, 155 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
153#elif (CONFIG_KEYPAD == MROBE500_PAD)
154#elif (CONFIG_KEYPAD == COWON_D2_PAD)
155#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
156 { PLA_UP, BUTTON_RC_VOL_UP, BUTTON_NONE},
157 { PLA_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE},
158 { PLA_LEFT, BUTTON_RC_REW, BUTTON_NONE},
159 { PLA_RIGHT, BUTTON_RC_FF, BUTTON_NONE},
160 { PLA_UP_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
161 { PLA_DOWN_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
162 { PLA_LEFT_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE},
163 { PLA_RIGHT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE},
164#elif (CONFIG_KEYPAD == IAUDIO67_PAD)
165 { PLA_UP, BUTTON_STOP, BUTTON_NONE},
166 { PLA_DOWN, BUTTON_PLAY, BUTTON_NONE},
167 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
168 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
169 { PLA_UP_REPEAT, BUTTON_STOP|BUTTON_REPEAT, BUTTON_NONE},
170 { PLA_DOWN_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
171 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
172 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
173#elif (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) 156#elif (CONFIG_KEYPAD == PHILIPS_SA9200_PAD)
174 { PLA_UP, BUTTON_UP, BUTTON_NONE}, 157 { PLA_UP, BUTTON_UP, BUTTON_NONE },
175 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE}, 158 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE },
176 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE}, 159 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE },
177 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE}, 160 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE },
178 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 161 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
179 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, 162 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
180 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE}, 163 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
181 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE}, 164 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
182#elif (CONFIG_KEYPAD == ONDAVX747_PAD) /* Touchscreen target */ 165#elif (CONFIG_KEYPAD == IAUDIO67_PAD)
183#elif (CONFIG_KEYPAD == ONDAVX777_PAD) /* Touchscreen target */ 166 { PLA_UP, BUTTON_STOP, BUTTON_NONE },
184#elif (CONFIG_KEYPAD == SAMSUNG_YH_PAD) 167 { PLA_DOWN, BUTTON_PLAY, BUTTON_NONE },
185 { PLA_UP, BUTTON_UP, BUTTON_NONE}, 168 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE },
186 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE}, 169 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
187 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, 170 { PLA_UP_REPEAT, BUTTON_STOP|BUTTON_REPEAT, BUTTON_NONE },
188 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, 171 { PLA_DOWN_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
189 { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REW, BUTTON_NONE}, 172 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
190 { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REW, BUTTON_NONE}, 173 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
191 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REW, BUTTON_NONE},
192 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REW, BUTTON_NONE},
193#elif (CONFIG_KEYPAD == PBELL_VIBE500_PAD) 174#elif (CONFIG_KEYPAD == PBELL_VIBE500_PAD)
194 { PLA_UP, BUTTON_UP, BUTTON_NONE}, 175 { PLA_UP, BUTTON_UP, BUTTON_NONE},
195 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE}, 176 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE},
@@ -210,448 +191,172 @@ const struct button_mapping generic_directions[] =
210 { PLA_RIGHT_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 191 { PLA_RIGHT_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
211 192
212#else 193#else
213 #error pluginlib_actions: Unsupported keypad 194#ifndef HAVE_TOUCHSCREEN
195 #error pluginlib_actions: No directions defined
214#endif 196#endif
215 {CONTEXT_PLUGIN,BUTTON_NONE,BUTTON_NONE}
216};
217
218const struct button_mapping generic_left_right_fire[] =
219{
220#ifdef HAVE_TOUCHSCREEN
221 { PLA_LEFT, BUTTON_MIDLEFT, BUTTON_NONE},
222 { PLA_LEFT_REPEAT, BUTTON_MIDLEFT|BUTTON_REPEAT, BUTTON_NONE},
223 { PLA_RIGHT, BUTTON_MIDRIGHT, BUTTON_NONE},
224 { PLA_RIGHT_REPEAT, BUTTON_MIDRIGHT|BUTTON_REPEAT, BUTTON_NONE},
225 { PLA_FIRE, BUTTON_CENTER, BUTTON_NONE},
226 { PLA_FIRE_REPEAT, BUTTON_CENTER|BUTTON_REPEAT, BUTTON_NONE},
227#endif 197#endif
228#if (CONFIG_KEYPAD == IRIVER_H100_PAD) \
229 || (CONFIG_KEYPAD == IRIVER_H300_PAD) \
230 || (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \
231 || (CONFIG_KEYPAD == GIGABEAT_PAD) \
232 || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \
233 || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \
234 || (CONFIG_KEYPAD == MROBE100_PAD) \
235 || (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) \
236 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
237 || (CONFIG_KEYPAD == SANSA_M200_PAD)
238 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
239 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
240 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
241 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
242 { PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
243 { PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_NONE},
244#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \
245 || (CONFIG_KEYPAD == IPOD_3G_PAD) \
246 || (CONFIG_KEYPAD == IPOD_4G_PAD)
247 { PLA_LEFT, BUTTON_SCROLL_BACK, BUTTON_NONE},
248 { PLA_RIGHT, BUTTON_SCROLL_FWD, BUTTON_NONE},
249 { PLA_LEFT_REPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE},
250 { PLA_RIGHT_REPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE},
251 { PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
252 { PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_NONE},
253#elif CONFIG_KEYPAD == ONDIO_PAD
254 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
255 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
256 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
257 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
258 { PLA_FIRE, BUTTON_UP, BUTTON_NONE},
259 { PLA_FIRE_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE},
260#elif CONFIG_KEYPAD == PLAYER_PAD
261 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
262 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
263 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
264 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
265 { PLA_FIRE, BUTTON_ON, BUTTON_NONE},
266 { PLA_FIRE_REPEAT, BUTTON_ON|BUTTON_REPEAT, BUTTON_NONE},
267#elif CONFIG_KEYPAD == RECORDER_PAD
268 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
269 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
270 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
271 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
272 { PLA_FIRE, BUTTON_PLAY, BUTTON_NONE},
273 { PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
274#elif (CONFIG_KEYPAD == SANSA_C200_PAD) \
275 || (CONFIG_KEYPAD == ARCHOS_AV300_PAD)
276 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
277 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
278 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
279 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
280 { PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
281 { PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_NONE},
282#elif (CONFIG_KEYPAD == SANSA_E200_PAD) \
283 || (CONFIG_KEYPAD == SANSA_FUZE_PAD)
284 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
285 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
286 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
287 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
288 { PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
289 { PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_NONE},
290#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
291 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
292 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
293 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
294 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
295 { PLA_FIRE, BUTTON_REW, BUTTON_NONE},
296 { PLA_FIRE_REPEAT, BUTTON_REW|BUTTON_REPEAT, BUTTON_NONE},
297#elif (CONFIG_KEYPAD == MROBE500_PAD)
298 { PLA_LEFT, BUTTON_RC_REW, BUTTON_NONE},
299 { PLA_RIGHT, BUTTON_RC_FF, BUTTON_NONE},
300 { PLA_LEFT_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE},
301 { PLA_RIGHT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE},
302 { PLA_FIRE, BUTTON_RC_HEART, BUTTON_NONE},
303 { PLA_FIRE_REPEAT, BUTTON_RC_HEART|BUTTON_REPEAT, BUTTON_NONE},
304#elif (CONFIG_KEYPAD == COWON_D2_PAD)
305 { PLA_LEFT, BUTTON_MINUS, BUTTON_NONE},
306 { PLA_LEFT_REPEAT, BUTTON_MINUS|BUTTON_REPEAT, BUTTON_NONE},
307 { PLA_RIGHT, BUTTON_PLUS, BUTTON_NONE},
308 { PLA_RIGHT_REPEAT, BUTTON_PLUS|BUTTON_REPEAT, BUTTON_NONE},
309 { PLA_FIRE, BUTTON_MENU, BUTTON_NONE},
310 { PLA_FIRE_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
311#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
312 { PLA_LEFT, BUTTON_RC_REW, BUTTON_NONE},
313 { PLA_RIGHT, BUTTON_RC_FF, BUTTON_NONE},
314 { PLA_LEFT_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE},
315 { PLA_RIGHT_REPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE},
316 { PLA_FIRE, BUTTON_RC_MODE, BUTTON_NONE},
317 { PLA_FIRE_REPEAT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_NONE},
318#elif (CONFIG_KEYPAD == IAUDIO67_PAD)
319 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
320 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
321 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
322 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
323 { PLA_FIRE, BUTTON_MENU, BUTTON_NONE},
324 { PLA_FIRE_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
325#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD)
326 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
327 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
328 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
329 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
330 { PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
331 { PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
332#elif (CONFIG_KEYPAD == PHILIPS_SA9200_PAD)
333 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE},
334 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE},
335 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE},
336 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE},
337 { PLA_FIRE, BUTTON_PLAY, BUTTON_NONE},
338 { PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
339#elif (CONFIG_KEYPAD == ONDAVX747_PAD) /* Touchscreen target */
340#elif (CONFIG_KEYPAD == ONDAVX777_PAD) /* Touchscreen target */
341#elif (CONFIG_KEYPAD == SAMSUNG_YH_PAD)
342 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
343 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
344 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REW, BUTTON_NONE},
345 { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REW, BUTTON_NONE},
346 { PLA_FIRE, BUTTON_UP, BUTTON_NONE},
347 { PLA_FIRE_REPEAT, BUTTON_UP|BUTTON_REW, BUTTON_NONE},
348#elif (CONFIG_KEYPAD == PBELL_VIBE500_PAD)
349 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE},
350 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE},
351 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE},
352 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE},
353 { PLA_FIRE, BUTTON_OK, BUTTON_NONE},
354 { PLA_FIRE_REPEAT, BUTTON_OK|BUTTON_REPEAT, BUTTON_NONE},
355#elif (CONFIG_KEYPAD == MPIO_HD200_PAD)
356 { PLA_LEFT, BUTTON_VOL_DOWN, BUTTON_NONE},
357 { PLA_RIGHT, BUTTON_VOL_UP, BUTTON_NONE},
358 { PLA_LEFT_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
359 { PLA_RIGHT_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
360 { PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
361 { PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
362 198
363 199 /* Scrollwheels */
364#else 200#ifdef HAVE_SCROLLWHEEL
365 #error pluginlib_actions: Unsupported keypad 201 { PLA_SCROLL_BACK, BUTTON_SCROLL_BACK, BUTTON_NONE },
202 { PLA_SCROLL_FWD, BUTTON_SCROLL_FWD, BUTTON_NONE },
203 { PLA_SCROLL_BACK_REPEAT,BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
204 { PLA_SCROLL_FWD_REPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
366#endif 205#endif
367 {CONTEXT_PLUGIN,BUTTON_NONE,BUTTON_NONE}
368};
369 206
370/* these were taken from the bubbles plugin, so may need tweaking */ 207 /* Actions */
371const struct button_mapping generic_actions[] =
372{
373#ifdef HAVE_TOUCHSCREEN
374 {PLA_QUIT, BUTTON_BOTTOMRIGHT, BUTTON_NONE},
375 {PLA_START, BUTTON_CENTER, BUTTON_NONE},
376 {PLA_MENU, BUTTON_TOPLEFT, BUTTON_NONE},
377 {PLA_FIRE, BUTTON_BOTTOMMIDDLE, BUTTON_NONE},
378 {PLA_FIRE_REPEAT, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_NONE},
379#endif
380#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) 208#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
381 {PLA_QUIT, BUTTON_OFF, BUTTON_NONE}, 209 {PLA_CANCEL, BUTTON_OFF, BUTTON_NONE },
382 {PLA_QUIT, BUTTON_RC_STOP, BUTTON_NONE}, 210 {PLA_CANCEL, BUTTON_RC_STOP, BUTTON_NONE },
383 {PLA_START, BUTTON_ON, BUTTON_NONE}, 211 {PLA_EXIT, BUTTON_ON, BUTTON_NONE },
384 {PLA_START, BUTTON_RC_ON, BUTTON_NONE}, 212 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE },
385 {PLA_MENU, BUTTON_MODE, BUTTON_NONE}, 213 {PLA_SELECT, BUTTON_RC_ON, BUTTON_NONE },
386 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, 214 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
387 {PLA_FIRE, BUTTON_RC_MENU, BUTTON_NONE}, 215 {PLA_SELECT_REL, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON },
388 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 216 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE },
389 {PLA_FIRE_REPEAT, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_NONE}, 217 {PLA_SELECT_REPEAT, BUTTON_RC_ON|BUTTON_REPEAT, BUTTON_NONE },
390#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \ 218#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \
391 || (CONFIG_KEYPAD == IPOD_3G_PAD) \ 219 || (CONFIG_KEYPAD == IPOD_3G_PAD) \
392 || (CONFIG_KEYPAD == IPOD_4G_PAD) 220 || (CONFIG_KEYPAD == IPOD_4G_PAD)
393 {PLA_QUIT, BUTTON_MENU|BUTTON_SELECT, BUTTON_NONE}, 221 {PLA_CANCEL, BUTTON_MENU|BUTTON_SELECT, BUTTON_NONE },
394 {PLA_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 222 {PLA_EXIT, BUTTON_PLAY|BUTTON_SELECT, BUTTON_NONE },
395 {PLA_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_NONE}, 223 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE },
396 {PLA_FIRE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, 224 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
397 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 225 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE },
398#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD 226#elif (CONFIG_KEYPAD == IAUDIO_X5M5_PAD)
399 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, 227 {PLA_CANCEL, BUTTON_POWER, BUTTON_NONE },
400 {PLA_START, BUTTON_PLAY, BUTTON_NONE}, 228 {PLA_EXIT, BUTTON_PLAY|BUTTON_SELECT, BUTTON_NONE },
401 {PLA_START, BUTTON_RC_PLAY, BUTTON_NONE}, 229 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE },
402 {PLA_MENU, BUTTON_REC, BUTTON_NONE}, 230 {PLA_SELECT, BUTTON_RC_MODE, BUTTON_NONE },
403 {PLA_MENU, BUTTON_RC_MENU, BUTTON_NONE}, 231 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
404 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, 232 {PLA_SELECT_REL, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE },
405 {PLA_FIRE, BUTTON_RC_MODE, BUTTON_NONE}, 233 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE },
406 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 234 {PLA_SELECT_REPEAT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_NONE },
407 {PLA_FIRE_REPEAT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_NONE}, 235#elif (CONFIG_KEYPAD == GIGABEAT_PAD \
408#elif CONFIG_KEYPAD == GIGABEAT_PAD 236 || CONFIG_KEYPAD == SANSA_E200_PAD \
409 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, 237 || CONFIG_KEYPAD == SANSA_C200_PAD \
410 {PLA_START, BUTTON_A, BUTTON_NONE}, 238 || CONFIG_KEYPAD == SANSA_CLIP_PAD \
411 {PLA_MENU, BUTTON_MENU, BUTTON_NONE}, 239 || CONFIG_KEYPAD == SANSA_M200_PAD \
412 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, 240 || CONFIG_KEYPAD == MROBE100_PAD \
413 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 241 || CONFIG_KEYPAD == PHILIPS_SA9200_PAD \
414#elif CONFIG_KEYPAD == GIGABEAT_S_PAD 242 || CONFIG_KEYPAD == PHILIPS_HDD1630_PAD)
415 {PLA_QUIT, BUTTON_BACK, BUTTON_NONE}, 243 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
416 {PLA_START, BUTTON_PLAY, BUTTON_NONE}, 244 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
417 {PLA_MENU, BUTTON_MENU, BUTTON_NONE}, 245 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
418 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, 246 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
419 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 247 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
420#elif CONFIG_KEYPAD == RECORDER_PAD 248#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
421 {PLA_QUIT, BUTTON_OFF, BUTTON_NONE}, 249 {PLA_CANCEL, BUTTON_BACK, BUTTON_NONE},
422 {PLA_START, BUTTON_ON, BUTTON_NONE}, 250 {PLA_EXIT, BUTTON_MENU, BUTTON_NONE},
423 {PLA_MENU, BUTTON_F1, BUTTON_NONE}, 251 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
424 {PLA_FIRE, BUTTON_PLAY, BUTTON_NONE}, 252 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
425 {PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 253 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
426#elif CONFIG_KEYPAD == ARCHOS_AV300_PAD 254#elif (CONFIG_KEYPAD == RECORDER_PAD)
427 {PLA_QUIT, BUTTON_OFF, BUTTON_NONE}, 255 {PLA_CANCEL, BUTTON_ON, BUTTON_NONE},
428 {PLA_START, BUTTON_ON, BUTTON_NONE}, 256 {PLA_EXIT, BUTTON_OFF, BUTTON_NONE},
429 {PLA_MENU, BUTTON_F1, BUTTON_NONE}, 257 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
430 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, 258 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
431 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 259 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
432#elif CONFIG_KEYPAD == ONDIO_PAD 260#elif (CONFIG_KEYPAD == ARCHOS_AV300_PAD)
433 {PLA_QUIT, BUTTON_OFF, BUTTON_NONE}, 261 {PLA_CANCEL, BUTTON_OFF|BUTTON_REL, BUTTON_OFF},
434 {PLA_START, BUTTON_MENU, BUTTON_NONE}, 262 {PLA_EXIT, BUTTON_OFF|BUTTON_REPEAT, BUTTON_NONE},
435 {PLA_MENU, BUTTON_DOWN, BUTTON_NONE}, 263 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
436 {PLA_FIRE, BUTTON_UP, BUTTON_NONE}, 264 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
437 {PLA_FIRE_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 265 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
438#elif CONFIG_KEYPAD == PLAYER_PAD 266#elif (CONFIG_KEYPAD == ONDIO_PAD)
439 {PLA_QUIT, BUTTON_STOP|BUTTON_REPEAT, BUTTON_NONE}, 267 {PLA_CANCEL, BUTTON_OFF|BUTTON_REL, BUTTON_OFF},
440 {PLA_START, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 268 {PLA_EXIT, BUTTON_OFF|BUTTON_REPEAT, BUTTON_NONE},
441 {PLA_MENU, BUTTON_MENU, BUTTON_NONE}, 269 {PLA_SELECT, BUTTON_MENU, BUTTON_NONE},
442 {PLA_FIRE, BUTTON_ON, BUTTON_NONE}, 270 {PLA_SELECT_REL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
443 {PLA_FIRE_REPEAT, BUTTON_ON|BUTTON_REPEAT, BUTTON_NONE}, 271 {PLA_SELECT_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
444#elif CONFIG_KEYPAD == SANSA_E200_PAD || \ 272#elif (CONFIG_KEYPAD == PLAYER_PAD)
445 CONFIG_KEYPAD == SANSA_C200_PAD || \ 273 {PLA_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
446 CONFIG_KEYPAD == SANSA_CLIP_PAD || \ 274 {PLA_EXIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
447 CONFIG_KEYPAD == SANSA_M200_PAD 275 {PLA_SELECT, BUTTON_ON, BUTTON_NONE},
448 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, 276 {PLA_SELECT_REL, BUTTON_ON|BUTTON_REL, BUTTON_ON},
449 {PLA_START, BUTTON_UP, BUTTON_NONE}, 277 {PLA_SELECT_REPEAT, BUTTON_ON|BUTTON_REPEAT, BUTTON_NONE},
450 {PLA_MENU, BUTTON_DOWN, BUTTON_NONE}, 278#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
451 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, 279 {PLA_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME},
452 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 280 {PLA_EXIT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE},
453#elif CONFIG_KEYPAD == SANSA_FUZE_PAD 281 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
454 {PLA_QUIT, (BUTTON_HOME|BUTTON_REPEAT), BUTTON_NONE}, 282 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
455 {PLA_START, BUTTON_UP, BUTTON_NONE}, 283 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
456 {PLA_MENU, BUTTON_DOWN, BUTTON_NONE}, 284#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
457 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, 285 {PLA_CANCEL, BUTTON_PREV, BUTTON_NONE},
458 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 286 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE},
459#elif CONFIG_KEYPAD == IRIVER_H10_PAD 287 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
460 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, 288 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
461 {PLA_START, BUTTON_PLAY, BUTTON_NONE}, 289 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
462 {PLA_MENU, BUTTON_FF, BUTTON_NONE}, 290#elif (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD)
463 {PLA_FIRE, BUTTON_REW, BUTTON_NONE}, 291 {PLA_CANCEL, BUTTON_EQ|BUTOTN_REL, BUTTON_EQ},
464 {PLA_FIRE_REPEAT, BUTTON_REW|BUTTON_REPEAT, BUTTON_NONE}, 292 {PLA_EXIT, BUTTON_EQ|BUTTON_REPEAT, BUTTON_NONE},
465#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD 293 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
466 {PLA_QUIT, BUTTON_EQ, BUTTON_NONE}, 294 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
467 {PLA_START, BUTTON_PLAY, BUTTON_NONE}, 295 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
468 {PLA_MENU, BUTTON_MODE, BUTTON_NONE},
469 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
470 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
471#elif (CONFIG_KEYPAD == MROBE500_PAD) 296#elif (CONFIG_KEYPAD == MROBE500_PAD)
472 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, 297 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
473 {PLA_START, BUTTON_RC_PLAY, BUTTON_NONE}, 298 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
474 {PLA_MENU, BUTTON_RC_MODE, BUTTON_NONE}, 299 {PLA_SELECT, BUTTON_RC_HEART, BUTTON_NONE},
475 {PLA_FIRE, BUTTON_RC_HEART, BUTTON_NONE}, 300 {PLA_SELECT_REL, BUTTON_RC_HEART|BUTTON_REL, BUTTON_RC_HEART},
476 {PLA_FIRE_REPEAT, BUTTON_RC_HEART|BUTTON_REPEAT, BUTTON_NONE}, 301 {PLA_SELECT_REPEAT, BUTTON_RC_HEART|BUTTON_REPEAT, BUTTON_NONE},
477#elif CONFIG_KEYPAD == MROBE100_PAD
478 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE},
479 {PLA_START, BUTTON_PLAY, BUTTON_NONE},
480 {PLA_MENU, BUTTON_MENU, BUTTON_NONE},
481 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
482 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
483#elif (CONFIG_KEYPAD == COWON_D2_PAD) 302#elif (CONFIG_KEYPAD == COWON_D2_PAD)
484 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, 303 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
485 {PLA_START, BUTTON_MINUS, BUTTON_NONE}, 304 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
486 {PLA_MENU, BUTTON_MENU, BUTTON_NONE}, 305 {PLA_SELECT, BUTTON_MINUS, BUTTON_NONE},
487 {PLA_FIRE, BUTTON_PLUS, BUTTON_NONE}, 306 {PLA_SELECT_REL, BUTTON_MINUS|BUTTON_REL, BUTTON_MINUS},
488 {PLA_FIRE_REPEAT, BUTTON_PLUS|BUTTON_REPEAT, BUTTON_NONE}, 307 {PLA_SELECT_REPEAT, BUTTON_MINUS|BUTTON_MINUS, BUTTON_NONE},
489#elif CONFIG_KEYPAD == IAUDIO_M3_PAD 308#elif (CONFIG_KEYPAD == IAUDIO_M3_PAD)
490 {PLA_QUIT, BUTTON_RC_REC, BUTTON_NONE}, 309 {PLA_CANCEL, BUTTON_RC_REC|BUTTON_REL, BUTTON_RC_REC},
491 {PLA_START, BUTTON_RC_PLAY, BUTTON_NONE}, 310 {PLA_EXIT, BUTTON_RC_REC|BUTTON_REPEAT, BUTTON_NONE},
492 {PLA_MENU, BUTTON_RC_MENU, BUTTON_NONE}, 311 {PLA_SELECT, BUTTON_RC_MODE, BUTTON_NONE},
493 {PLA_FIRE, BUTTON_RC_MODE, BUTTON_NONE}, 312 {PLA_SELECT_REL, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE},
494 {PLA_FIRE_REPEAT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_NONE}, 313 {PLA_SELECT_REPEAT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_NONE},
495#elif CONFIG_KEYPAD == PHILIPS_SA9200_PAD 314#elif CONFIG_KEYPAD == PHILIPS_SA9200_PAD
496 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, 315 {PLA_EXIT, BUTTON_POWER, BUTTON_NONE},
497 {PLA_START, BUTTON_RIGHT, BUTTON_NONE}, 316 {PLA_CANCE BUTTON_MENU, BUTTON_NONE},
498 {PLA_MENU, BUTTON_MENU, BUTTON_NONE}, 317 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
499 {PLA_FIRE, BUTTON_PLAY, BUTTON_NONE}, 318 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
500 {PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 319 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
501#elif (CONFIG_KEYPAD == IAUDIO67_PAD) 320#elif (CONFIG_KEYPAD == IAUDIO67_PAD)
502 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, 321 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
503 {PLA_START, BUTTON_PLAY, BUTTON_NONE}, 322 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
504 {PLA_MENU, BUTTON_MENU, BUTTON_NONE}, 323 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
505 {PLA_FIRE, BUTTON_VOLUP, BUTTON_NONE}, 324 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
506 {PLA_FIRE_REPEAT, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE}, 325 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT BUTTON_NONE},
507#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD) 326#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD)
508 {PLA_QUIT, BUTTON_BACK, BUTTON_NONE}, 327 {PLA_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK},
509 {PLA_START, BUTTON_PLAY, BUTTON_NONE}, 328 {PLA_EXIT, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE},
510 {PLA_MENU, BUTTON_MENU, BUTTON_NONE}, 329 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
511 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, 330 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
512 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 331 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
513#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
514 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE},
515 {PLA_START, BUTTON_VIEW, BUTTON_NONE},
516 {PLA_MENU, BUTTON_MENU, BUTTON_NONE},
517 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
518 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
519#elif (CONFIG_KEYPAD == ONDAVX747_PAD) 332#elif (CONFIG_KEYPAD == ONDAVX747_PAD)
520 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, 333 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
521 {PLA_START, BUTTON_VOL_DOWN, BUTTON_NONE}, 334 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
522 {PLA_MENU, BUTTON_MENU, BUTTON_NONE}, 335 {PLA_SELECT, BUTTON_VOL_UP, BUTTON_NONE},
523 {PLA_FIRE, BUTTON_VOL_UP, BUTTON_NONE}, 336 {PLA_SELECT_REL, BUTTON_VOL_UP|BUTTON_REL, BUTTON_VOL_UP},
524 {PLA_FIRE_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, 337 {PLA_SELECT_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
525#elif (CONFIG_KEYPAD == ONDAVX777_PAD)
526 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE},
527 {PLA_START, BUTTON_VOL_DOWN, BUTTON_NONE},
528 {PLA_MENU, BUTTON_MENU, BUTTON_NONE},
529 {PLA_FIRE, BUTTON_VOL_UP, BUTTON_NONE},
530 {PLA_FIRE_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
531#elif (CONFIG_KEYPAD == SAMSUNG_YH_PAD) 338#elif (CONFIG_KEYPAD == SAMSUNG_YH_PAD)
532 {PLA_QUIT, BUTTON_REW, BUTTON_NONE}, 339 {PLA_CANCEL, BUTTON_REW, BUTTON_NONE},
533 {PLA_START, BUTTON_FFWD, BUTTON_NONE}, 340 {PLA_EXIT, BUTTON_FFWD, BUTTON_NONE},
534 {PLA_MENU, BUTTON_PLAY, BUTTON_NONE}, 341 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
535 {PLA_FIRE, BUTTON_UP, BUTTON_NONE}, 342 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
536 {PLA_FIRE_REPEAT, BUTTON_UP|BUTTON_REW, BUTTON_NONE}, 343 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
537#elif (CONFIG_KEYPAD == PBELL_VIBE500_PAD) 344#elif (CONFIG_KEYPAD == PBELL_VIBE500_PAD)
538 {PLA_QUIT, BUTTON_REC, BUTTON_NONE}, 345 {PLA_CANCEL, BUTTON_MENU, BUTTON_NONE},
539 {PLA_START, BUTTON_PLAY, BUTTON_NONE}, 346 {PLA_EXIT, BUTTON_REC, BUTTON_NONE},
540 {PLA_MENU, BUTTON_MENU, BUTTON_NONE}, 347 {PLA_SELECT, BUTTON_OK, BUTTON_NONE},
541 {PLA_FIRE, BUTTON_OK, BUTTON_NONE}, 348 {PLA_SELECT_REL, BUTTON_OK|BUTTON_REL, BUTTON_OK },
542 {PLA_FIRE_REPEAT, BUTTON_OK|BUTTON_REPEAT, BUTTON_NONE}, 349 {PLA_SELECT_REPEAT, BUTTON_OK|BUTTON_REPEAT, BUTTON_NONE},
543#elif (CONFIG_KEYPAD == MPIO_HD200_PAD) 350#elif (CONFIG_KEYPAD == MPIO_HD200_PAD)
544 {PLA_QUIT, (BUTTON_REC|BUTTON_PLAY), BUTTON_NONE}, 351 {PLA_CANCEL, BUTTON_REC, BUTTON_NONE},
545 {PLA_START, BUTTON_PLAY, BUTTON_NONE}, 352 {PLA_EXIT, (BUTTON_REC|BUTTON_PLAY), BUTTON_NONE},
546 {PLA_MENU, BUTTON_REC, BUTTON_NONE}, 353 {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
547 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, 354 {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
548 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 355 {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
549
550#else
551 #error pluginlib_actions: Unsupported keypad
552#endif
553 {CONTEXT_PLUGIN,BUTTON_NONE,BUTTON_NONE}
554};
555
556const struct button_mapping generic_increase_decrease[] =
557{
558#ifdef HAVE_TOUCHSCREEN
559 {PLA_INC, BUTTON_TOPMIDDLE, BUTTON_NONE},
560 {PLA_DEC, BUTTON_BOTTOMMIDDLE, BUTTON_NONE},
561 {PLA_INC_REPEAT, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_NONE},
562 {PLA_DEC_REPEAT, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_NONE},
563#endif
564#if (CONFIG_KEYPAD == IRIVER_H100_PAD) \
565 || (CONFIG_KEYPAD == IRIVER_H300_PAD) \
566 || (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \
567 || (CONFIG_KEYPAD == GIGABEAT_PAD) \
568 || (CONFIG_KEYPAD == RECORDER_PAD) \
569 || (CONFIG_KEYPAD == ARCHOS_AV300_PAD) \
570 || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \
571 || (CONFIG_KEYPAD == ONDIO_PAD) \
572 || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \
573 || (CONFIG_KEYPAD == MROBE100_PAD) \
574 || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \
575 || (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) \
576 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
577 || (CONFIG_KEYPAD == CREATIVEZVM_PAD) \
578 || (CONFIG_KEYPAD == SANSA_M200_PAD)
579 {PLA_INC, BUTTON_UP, BUTTON_NONE},
580 {PLA_DEC, BUTTON_DOWN, BUTTON_NONE},
581 {PLA_INC_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE},
582 {PLA_DEC_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE},
583#elif (CONFIG_KEYPAD == SANSA_C200_PAD)
584 {PLA_INC, BUTTON_VOL_UP, BUTTON_NONE},
585 {PLA_DEC, BUTTON_VOL_DOWN, BUTTON_NONE},
586 {PLA_INC_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
587 {PLA_DEC_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
588#elif (CONFIG_KEYPAD == IPOD_1G2G_PAD) \
589 || (CONFIG_KEYPAD == IPOD_3G_PAD) \
590 || (CONFIG_KEYPAD == IPOD_4G_PAD) \
591 || (CONFIG_KEYPAD == SANSA_E200_PAD) \
592 || (CONFIG_KEYPAD == SANSA_FUZE_PAD)
593 {PLA_INC, BUTTON_SCROLL_FWD, BUTTON_NONE},
594 {PLA_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE},
595 {PLA_INC_REPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE},
596 {PLA_DEC_REPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE},
597#elif CONFIG_KEYPAD == PLAYER_PAD
598 {PLA_INC, BUTTON_STOP, BUTTON_NONE},
599 {PLA_DEC, BUTTON_PLAY, BUTTON_NONE},
600#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
601 {PLA_INC, BUTTON_SCROLL_UP, BUTTON_NONE},
602 {PLA_DEC, BUTTON_SCROLL_DOWN, BUTTON_NONE},
603 {PLA_INC_REPEAT, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE},
604 {PLA_DEC_REPEAT, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
605#elif (CONFIG_KEYPAD == MROBE500_PAD)
606 {PLA_INC, BUTTON_RC_PLAY, BUTTON_NONE},
607 {PLA_DEC, BUTTON_RC_DOWN, BUTTON_NONE},
608 {PLA_INC_REPEAT, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_NONE},
609 {PLA_DEC_REPEAT, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_NONE},
610#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
611 {PLA_INC, BUTTON_RC_VOL_UP, BUTTON_NONE},
612 {PLA_DEC, BUTTON_RC_VOL_DOWN, BUTTON_NONE},
613 {PLA_INC_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
614 {PLA_DEC_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
615#elif CONFIG_KEYPAD == COWON_D2_PAD
616 {PLA_INC, BUTTON_PLUS, BUTTON_NONE},
617 {PLA_DEC, BUTTON_MINUS, BUTTON_NONE},
618 {PLA_INC_REPEAT, BUTTON_PLUS|BUTTON_REPEAT, BUTTON_NONE},
619 {PLA_DEC_REPEAT, BUTTON_MINUS|BUTTON_REPEAT, BUTTON_NONE},
620#elif CONFIG_KEYPAD == IAUDIO67_PAD
621 {PLA_INC, BUTTON_VOLUP, BUTTON_NONE},
622 {PLA_DEC, BUTTON_VOLDOWN, BUTTON_NONE},
623 {PLA_INC_REPEAT, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE},
624 {PLA_DEC_REPEAT, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE},
625#elif CONFIG_KEYPAD == ONDAVX747_PAD
626 {PLA_INC, BUTTON_VOL_UP, BUTTON_NONE},
627 {PLA_DEC, BUTTON_VOL_DOWN, BUTTON_NONE},
628 {PLA_INC_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
629 {PLA_DEC_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
630#elif CONFIG_KEYPAD == ONDAVX777_PAD
631 {PLA_INC, BUTTON_VOL_UP, BUTTON_NONE},
632 {PLA_DEC, BUTTON_VOL_DOWN, BUTTON_NONE},
633 {PLA_INC_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
634 {PLA_DEC_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
635#elif CONFIG_KEYPAD == SAMSUNG_YH_PAD
636 {PLA_INC, BUTTON_UP, BUTTON_NONE},
637 {PLA_DEC, BUTTON_DOWN, BUTTON_NONE},
638 {PLA_INC_REPEAT, BUTTON_UP|BUTTON_REW, BUTTON_NONE},
639 {PLA_DEC_REPEAT, BUTTON_DOWN|BUTTON_REW, BUTTON_NONE},
640#elif CONFIG_KEYPAD == PBELL_VIBE500_PAD
641 {PLA_INC, BUTTON_UP, BUTTON_NONE},
642 {PLA_DEC, BUTTON_DOWN, BUTTON_NONE},
643 {PLA_INC_REPEAT, BUTTON_UP, BUTTON_NONE},
644 {PLA_DEC_REPEAT, BUTTON_DOWN, BUTTON_NONE},
645#elif CONFIG_KEYPAD == MPIO_HD200_PAD
646 {PLA_INC, BUTTON_VOL_UP, BUTTON_NONE},
647 {PLA_DEC, BUTTON_VOL_DOWN, BUTTON_NONE},
648 {PLA_INC_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
649 {PLA_DEC_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
650
651#else 356#else
652 #error pluginlib_actions: Unsupported keypad 357#error pluginlib_actions: No actions defined
653#endif 358#endif
654 {CONTEXT_PLUGIN,BUTTON_NONE,BUTTON_NONE} 359 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_PLUGIN),
655}; 360};
656 361
657static struct button_mapping **plugin_context_order; 362static struct button_mapping **plugin_context_order;
diff --git a/apps/plugins/lib/pluginlib_actions.h b/apps/plugins/lib/pluginlib_actions.h
index cc5f8b4eb8..51a0f4a84a 100644
--- a/apps/plugins/lib/pluginlib_actions.h
+++ b/apps/plugins/lib/pluginlib_actions.h
@@ -38,27 +38,26 @@ enum {
38 PLA_LEFT_REPEAT, 38 PLA_LEFT_REPEAT,
39 PLA_RIGHT_REPEAT, 39 PLA_RIGHT_REPEAT,
40 40
41 PLA_INC, 41 PLA_CANCEL,
42 PLA_DEC, 42 PLA_EXIT,
43 PLA_INC_REPEAT, 43 PLA_SELECT,
44 PLA_DEC_REPEAT, 44 PLA_SELECT_REL,
45 PLA_SELECT_REPEAT,
45 46
46 PLA_QUIT, 47#ifdef HAVE_SCROLLWHEEL
47 PLA_START, 48 PLA_SCROLL_FWD,
48 PLA_MENU, 49 PLA_SCROLL_FWD_REPEAT,
49 PLA_FIRE, 50 PLA_SCROLL_BACK,
50 PLA_FIRE_REPEAT, 51 PLA_SCROLL_BACK_REPEAT,
52#endif
51 53
52 LAST_PLUGINLIB_ACTION 54 LAST_PLUGINLIB_ACTION
53}; 55};
54 56
55#if defined(HAVE_REMOTE_LCD) 57#if defined(HAVE_REMOTE_LCD)
56extern const struct button_mapping remote_directions[]; 58extern const struct button_mapping pla_remote_ctx[];
57#endif 59#endif
58extern const struct button_mapping generic_directions[]; 60extern const struct button_mapping pla_main_ctx[];
59extern const struct button_mapping generic_left_right_fire[];
60extern const struct button_mapping generic_actions[];
61extern const struct button_mapping generic_increase_decrease[];
62 61
63int pluginlib_getaction(int timeout, 62int pluginlib_getaction(int timeout,
64 const struct button_mapping *plugin_contexts[], 63 const struct button_mapping *plugin_contexts[],
diff --git a/apps/plugins/maze.c b/apps/plugins/maze.c
index 307f14d86a..465dfa9e84 100644
--- a/apps/plugins/maze.c
+++ b/apps/plugins/maze.c
@@ -37,56 +37,35 @@ PLUGIN_HEADER
37 37
38/* key assignments */ 38/* key assignments */
39 39
40#if (CONFIG_KEYPAD == IPOD_4G_PAD) || \ 40#if (CONFIG_KEYPAD == IPOD_3G_PAD)
41 (CONFIG_KEYPAD == IPOD_1G2G_PAD) 41# define MAZE_NEW (BUTTON_SELECT | BUTTON_REPEAT)
42# define MAZE_NEW (BUTTON_SELECT | BUTTON_REPEAT) 42# define MAZE_NEW_PRE BUTTON_SELECT
43# define MAZE_NEW_PRE BUTTON_SELECT 43# define MAZE_QUIT BUTTON_MENU
44# define MAZE_QUIT (BUTTON_SELECT | BUTTON_MENU) 44# define MAZE_SOLVE (BUTTON_SELECT | BUTTON_PLAY)
45# define MAZE_SOLVE (BUTTON_SELECT | BUTTON_PLAY) 45# define MAZE_RIGHT BUTTON_RIGHT
46# define MAZE_RIGHT BUTTON_RIGHT 46# define MAZE_RIGHT_REPEAT BUTTON_RIGHT|BUTTON_REPEAT
47# define MAZE_LEFT BUTTON_LEFT 47# define MAZE_LEFT BUTTON_LEFT
48# define MAZE_UP BUTTON_MENU 48# define MAZE_LEFT_REPEAT BUTTON_LEFT|BUTTON_REPEAT
49# define MAZE_DOWN BUTTON_PLAY 49# define MAZE_UP BUTTON_SCROLL_BACK
50 50# define MAZE_UP_REPEAT BUTTON_SCROLL_BACK|BUTTON_REPEAT
51#elif (CONFIG_KEYPAD == IPOD_3G_PAD) 51# define MAZE_DOWN BUTTON_SCROLL_FWD
52# define MAZE_NEW (BUTTON_SELECT | BUTTON_REPEAT) 52# define MAZE_DOWN_REPEAT BUTTON_SCROLL_FWD|BUTTON_REPEAT
53# define MAZE_NEW_PRE BUTTON_SELECT
54# define MAZE_QUIT BUTTON_MENU
55# define MAZE_SOLVE (BUTTON_SELECT | BUTTON_PLAY)
56# define MAZE_RIGHT BUTTON_RIGHT
57# define MAZE_LEFT BUTTON_LEFT
58# define MAZE_UP BUTTON_SCROLL_BACK
59# define MAZE_DOWN BUTTON_SCROLL_FWD
60
61#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
62# define MAZE_NEW (BUTTON_SELECT | BUTTON_REPEAT)
63# define MAZE_QUIT (BUTTON_HOME | BUTTON_REPEAT)
64# define MAZE_SOLVE BUTTON_SELECT
65# define MAZE_RIGHT BUTTON_RIGHT
66# define MAZE_LEFT BUTTON_LEFT
67# define MAZE_UP BUTTON_UP
68# define MAZE_DOWN BUTTON_DOWN
69
70#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
71# define MAZE_NEW (BUTTON_SELECT | BUTTON_REPEAT)
72# define MAZE_QUIT BUTTON_POWER
73# define MAZE_SOLVE BUTTON_SELECT
74# define MAZE_RIGHT BUTTON_RIGHT
75# define MAZE_LEFT BUTTON_LEFT
76# define MAZE_UP BUTTON_UP
77# define MAZE_DOWN BUTTON_DOWN
78 53
79#else 54#else
80# include "lib/pluginlib_actions.h" 55# include "lib/pluginlib_actions.h"
81# define MAZE_NEW PLA_START 56# define MAZE_NEW PLA_SELECT_REPEAT
82# define MAZE_QUIT PLA_QUIT 57# define MAZE_QUIT PLA_CANCEL
83# define MAZE_SOLVE PLA_FIRE 58# define MAZE_SOLVE PLA_SELECT_REL
84# define MAZE_RIGHT PLA_RIGHT 59# define MAZE_RIGHT PLA_RIGHT
85# define MAZE_LEFT PLA_LEFT 60# define MAZE_RIGHT_REPEAT PLA_RIGHT_REPEAT
86# define MAZE_UP PLA_UP 61# define MAZE_LEFT PLA_LEFT
87# define MAZE_DOWN PLA_DOWN 62# define MAZE_LEFT_REPEAT PLA_LEFT_REPEAT
63# define MAZE_UP PLA_UP
64# define MAZE_UP_REPEAT PLA_UP_REPEAT
65# define MAZE_DOWN PLA_DOWN
66# define MAZE_DOWN_REPEAT PLA_DOWN_REPEAT
88static const struct button_mapping *plugin_contexts[] 67static const struct button_mapping *plugin_contexts[]
89= {generic_directions, generic_actions}; 68= {pla_main_ctx};
90 69
91#endif 70#endif
92 71
@@ -546,7 +525,8 @@ enum plugin_status plugin_start(const void* parameter)
546 525
547 while(!quit) { 526 while(!quit) {
548#ifdef __PLUGINLIB_ACTIONS_H__ 527#ifdef __PLUGINLIB_ACTIONS_H__
549 button = pluginlib_getaction(TIMEOUT_BLOCK, plugin_contexts, 2); 528 button = pluginlib_getaction(TIMEOUT_BLOCK, plugin_contexts,
529 ARRAYLEN(plugin_contexts));
550#else 530#else
551 button = rb->button_get(true); 531 button = rb->button_get(true);
552#endif 532#endif
@@ -567,25 +547,25 @@ enum plugin_status plugin_start(const void* parameter)
567 maze_draw(&maze, rb->screens[i]); 547 maze_draw(&maze, rb->screens[i]);
568 break; 548 break;
569 case MAZE_UP: 549 case MAZE_UP:
570 case (MAZE_UP|BUTTON_REPEAT): 550 case MAZE_UP_REPEAT:
571 maze_move_player_up(&maze); 551 maze_move_player_up(&maze);
572 FOR_NB_SCREENS(i) 552 FOR_NB_SCREENS(i)
573 maze_draw(&maze, rb->screens[i]); 553 maze_draw(&maze, rb->screens[i]);
574 break; 554 break;
575 case MAZE_RIGHT: 555 case MAZE_RIGHT:
576 case (MAZE_RIGHT|BUTTON_REPEAT): 556 case MAZE_RIGHT_REPEAT:
577 maze_move_player_right(&maze); 557 maze_move_player_right(&maze);
578 FOR_NB_SCREENS(i) 558 FOR_NB_SCREENS(i)
579 maze_draw(&maze, rb->screens[i]); 559 maze_draw(&maze, rb->screens[i]);
580 break; 560 break;
581 case MAZE_DOWN: 561 case MAZE_DOWN:
582 case (MAZE_DOWN|BUTTON_REPEAT): 562 case MAZE_DOWN_REPEAT:
583 maze_move_player_down(&maze); 563 maze_move_player_down(&maze);
584 FOR_NB_SCREENS(i) 564 FOR_NB_SCREENS(i)
585 maze_draw(&maze, rb->screens[i]); 565 maze_draw(&maze, rb->screens[i]);
586 break; 566 break;
587 case MAZE_LEFT: 567 case MAZE_LEFT:
588 case (MAZE_LEFT|BUTTON_REPEAT): 568 case MAZE_LEFT_REPEAT:
589 maze_move_player_left(&maze); 569 maze_move_player_left(&maze);
590 FOR_NB_SCREENS(i) 570 FOR_NB_SCREENS(i)
591 maze_draw(&maze, rb->screens[i]); 571 maze_draw(&maze, rb->screens[i]);
diff --git a/apps/plugins/mazezam.c b/apps/plugins/mazezam.c
index 1eab90e9db..f4b76df374 100644
--- a/apps/plugins/mazezam.c
+++ b/apps/plugins/mazezam.c
@@ -27,19 +27,7 @@
27/* Include standard plugin macro */ 27/* Include standard plugin macro */
28PLUGIN_HEADER 28PLUGIN_HEADER
29 29
30#if (CONFIG_KEYPAD == IPOD_4G_PAD) || \ 30#if (CONFIG_KEYPAD == IPOD_3G_PAD)
31 (CONFIG_KEYPAD == IPOD_1G2G_PAD)
32# define MAZEZAM_MENU (BUTTON_SELECT | BUTTON_MENU)
33# define MAZEZAM_RIGHT BUTTON_RIGHT
34# define MAZEZAM_LEFT BUTTON_LEFT
35# define MAZEZAM_UP BUTTON_MENU
36# define MAZEZAM_DOWN BUTTON_PLAY
37# define MAZEZAM_RIGHT_REPEAT (BUTTON_RIGHT|BUTTON_REPEAT)
38# define MAZEZAM_LEFT_REPEAT (BUTTON_LEFT|BUTTON_REPEAT)
39# define MAZEZAM_UP_REPEAT (BUTTON_MENU|BUTTON_REPEAT)
40# define MAZEZAM_DOWN_REPEAT (BUTTON_PLAY|BUTTON_REPEAT)
41
42#elif (CONFIG_KEYPAD == IPOD_3G_PAD)
43# define MAZEZAM_MENU BUTTON_MENU 31# define MAZEZAM_MENU BUTTON_MENU
44# define MAZEZAM_RIGHT BUTTON_RIGHT 32# define MAZEZAM_RIGHT BUTTON_RIGHT
45# define MAZEZAM_LEFT BUTTON_LEFT 33# define MAZEZAM_LEFT BUTTON_LEFT
@@ -50,32 +38,9 @@ PLUGIN_HEADER
50# define MAZEZAM_UP_REPEAT (BUTTON_SCROLL_BACK|BUTTON_REPEAT) 38# define MAZEZAM_UP_REPEAT (BUTTON_SCROLL_BACK|BUTTON_REPEAT)
51# define MAZEZAM_DOWN_REPEAT (BUTTON_SCROLL_FWD|BUTTON_REPEAT) 39# define MAZEZAM_DOWN_REPEAT (BUTTON_SCROLL_FWD|BUTTON_REPEAT)
52 40
53#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
54# define MAZEZAM_MENU (BUTTON_HOME | BUTTON_REPEAT)
55# define MAZEZAM_RIGHT BUTTON_RIGHT
56# define MAZEZAM_LEFT BUTTON_LEFT
57# define MAZEZAM_UP BUTTON_UP
58# define MAZEZAM_DOWN BUTTON_DOWN
59# define MAZEZAM_RIGHT_REPEAT (BUTTON_RIGHT|BUTTON_REPEAT)
60# define MAZEZAM_LEFT_REPEAT (BUTTON_LEFT|BUTTON_REPEAT)
61# define MAZEZAM_UP_REPEAT (BUTTON_UP|BUTTON_REPEAT)
62# define MAZEZAM_DOWN_REPEAT (BUTTON_DOWN|BUTTON_REPEAT)
63
64#elif (CONFIG_KEYPAD == SANSA_E200_PAD)
65# define MAZEZAM_MENU BUTTON_POWER
66# define MAZEZAM_SOLVE BUTTON_SELECT
67# define MAZEZAM_RIGHT BUTTON_RIGHT
68# define MAZEZAM_LEFT BUTTON_LEFT
69# define MAZEZAM_UP BUTTON_UP
70# define MAZEZAM_DOWN BUTTON_DOWN
71# define MAZEZAM_RIGHT_REPEAT (BUTTON_RIGHT|BUTTON_REPEAT)
72# define MAZEZAM_LEFT_REPEAT (BUTTON_LEFT|BUTTON_REPEAT)
73# define MAZEZAM_UP_REPEAT (BUTTON_UP|BUTTON_REPEAT)
74# define MAZEZAM_DOWN_REPEAT (BUTTON_DOWN|BUTTON_REPEAT)
75
76#else 41#else
77# include "lib/pluginlib_actions.h" 42# include "lib/pluginlib_actions.h"
78# define MAZEZAM_MENU PLA_QUIT 43# define MAZEZAM_MENU PLA_CANCEL
79# define MAZEZAM_RIGHT PLA_RIGHT 44# define MAZEZAM_RIGHT PLA_RIGHT
80# define MAZEZAM_LEFT PLA_LEFT 45# define MAZEZAM_LEFT PLA_LEFT
81# define MAZEZAM_UP PLA_UP 46# define MAZEZAM_UP PLA_UP
@@ -85,7 +50,7 @@ PLUGIN_HEADER
85# define MAZEZAM_UP_REPEAT PLA_UP_REPEAT 50# define MAZEZAM_UP_REPEAT PLA_UP_REPEAT
86# define MAZEZAM_DOWN_REPEAT PLA_DOWN_REPEAT 51# define MAZEZAM_DOWN_REPEAT PLA_DOWN_REPEAT
87const struct button_mapping *plugin_contexts[] 52const struct button_mapping *plugin_contexts[]
88= {generic_directions, generic_actions}; 53= { pla_main_ctx };
89#endif 54#endif
90 55
91/* All the text is here */ 56/* All the text is here */
@@ -586,7 +551,8 @@ static void level_loop(struct level_info* li, short* shift, short *x, short *y)
586 draw_level(li, shift, *x, *y); 551 draw_level(li, shift, *x, *y);
587 rb->lcd_update(); 552 rb->lcd_update();
588#ifdef __PLUGINLIB_ACTIONS_H__ 553#ifdef __PLUGINLIB_ACTIONS_H__
589 button = pluginlib_getaction(TIMEOUT_BLOCK, plugin_contexts, 2); 554 button = pluginlib_getaction(TIMEOUT_BLOCK, plugin_contexts,
555 ARRAYLEN(plugin_contexts));
590#else 556#else
591 button = rb->button_get(true); 557 button = rb->button_get(true);
592#endif 558#endif
diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c
index c5d27faf3d..1af62554fb 100644
--- a/apps/plugins/metronome.c
+++ b/apps/plugins/metronome.c
@@ -608,62 +608,56 @@ static signed short sound[] = {
608}; 608};
609#endif 609#endif
610 610
611#define METRONOME_QUIT PLA_QUIT 611#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) \
612#define METRONOME_VOL_UP PLA_INC 612 || (CONFIG_KEYPAD == SANSA_E200_PAD) || (CONFIG_KEYPAD == SAMSUNG_YH_PAD)
613#define METRONOME_VOL_DOWN PLA_DEC 613#define MET_SYNC
614#define METRONOME_VOL_UP_REP PLA_INC_REPEAT 614#endif
615#define METRONOME_VOL_DOWN_REP PLA_DEC_REPEAT 615
616#define METRONOME_QUIT PLA_EXIT
617
618#ifdef HAVE_SCROLLWHEEL
619#define METRONOME_VOL_UP PLA_SCROLL_FWD
620#define METRONOME_VOL_UP_REP PLA_SCROLL_FWD_REPEAT
621#define METRONOME_VOL_DOWN PLA_SCROLL_BACK
622#define METRONOME_VOL_DOWN_REP PLA_SCROLL_BACK_REPEAT
623#else
624#define METRONOME_VOL_UP PLA_UP
625#define METRONOME_VOL_DOWN PLA_DOWN
626#define METRONOME_VOL_UP_REP PLA_UP_REPEAT
627#define METRONOME_VOL_DOWN_REP PLA_DOWN_REPEAT
628#endif
616#define METRONOME_LEFT PLA_LEFT 629#define METRONOME_LEFT PLA_LEFT
617#define METRONOME_RIGHT PLA_RIGHT 630#define METRONOME_RIGHT PLA_RIGHT
618#define METRONOME_LEFT_REP PLA_LEFT_REPEAT 631#define METRONOME_LEFT_REP PLA_LEFT_REPEAT
619#define METRONOME_RIGHT_REP PLA_RIGHT_REPEAT 632#define METRONOME_RIGHT_REP PLA_RIGHT_REPEAT
633#define METRONOME_TAP PLA_SELECT_REL
634#define METRONOME_PAUSE PLA_CANCEL
635#define METRONOME_PLAY PLA_SELECT_REPEAT
636
637#if defined(MET_SYNC)
620enum { 638enum {
621 METRONOME_PLAY_TAP = LAST_PLUGINLIB_ACTION+1, 639 METRONOME_SYNC = LAST_PLUGINLIB_ACTION+1,
622#if CONFIG_KEYPAD == ONDIO_PAD
623 METRONOME_PAUSE,
624#endif /* ONDIO_PAD */
625#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
626 METRONOME_SYNC
627#endif /* IRIVER_H100_PAD||IRIVER_H300_PAD */
628}; 640};
641#endif /* IRIVER_H100_PAD||IRIVER_H300_PAD */
629 642
630 643
631#if CONFIG_KEYPAD == ONDIO_PAD 644#define METRONOME_MSG_START "start: press select"
632#define METRONOME_TAP PLA_START 645#define METRONOME_MSG_STOP "start: hold select"
633#define METRONOME_MSG_START "start: mode"
634#define METRONOME_MSG_STOP "pause: hold mode"
635static const struct button_mapping ondio_action[] =
636{
637 {METRONOME_PLAY_TAP, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
638 {METRONOME_PAUSE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
639 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_PLUGIN)
640};
641#else /* !ONDIO_PAD */
642#define METRONOME_TAP PLA_FIRE
643#define METRONOME_PLAYPAUSE PLA_START
644#define METRONOME_MSG_START "press play"
645#define METRONOME_MSG_STOP "press pause"
646 646
647#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) 647#ifdef MET_SYNC
648#define MET_SYNC
649static const struct button_mapping iriver_syncaction[] = 648static const struct button_mapping iriver_syncaction[] =
650{ 649{
651 {METRONOME_SYNC, BUTTON_REC, BUTTON_NONE }, 650 {METRONOME_SYNC, BUTTON_REC, BUTTON_NONE },
652 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_PLUGIN) 651 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_PLUGIN)
653}; 652};
654#endif /* IRIVER_H100_PAD||IRIVER_H300_PAD */ 653#endif /* IRIVER_H100_PAD||IRIVER_H300_PAD */
655#endif /* #if CONFIG_KEYPAD == ONDIO_PAD */
656 654
657const struct button_mapping *plugin_contexts[] = 655const struct button_mapping *plugin_contexts[] =
658{ 656{
659 generic_increase_decrease, 657 pla_main_ctx,
660 generic_directions, 658#if defined(MET_SYNC)
661#if CONFIG_KEYPAD == ONDIO_PAD
662 ondio_action,
663#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
664 iriver_syncaction, 659 iriver_syncaction,
665#endif 660#endif
666 generic_actions
667}; 661};
668#define PLA_ARRAY_COUNT sizeof(plugin_contexts)/sizeof(plugin_contexts[0]) 662#define PLA_ARRAY_COUNT sizeof(plugin_contexts)/sizeof(plugin_contexts[0])
669 663
@@ -890,6 +884,7 @@ void tap(void)
890enum plugin_status plugin_start(const void* parameter) 884enum plugin_status plugin_start(const void* parameter)
891{ 885{
892 int button; 886 int button;
887 static int last_button = BUTTON_NONE;
893 enum plugin_status status; 888 enum plugin_status status;
894 889
895 (void)parameter; 890 (void)parameter;
@@ -918,7 +913,7 @@ enum plugin_status plugin_start(const void* parameter)
918 while (true){ 913 while (true){
919 reset_tap = true; 914 reset_tap = true;
920#if CONFIG_CODEC == SWCODEC 915#if CONFIG_CODEC == SWCODEC
921 button = pluginlib_getaction(1,plugin_contexts,PLA_ARRAY_COUNT); 916 button = pluginlib_getaction(TIMEOUT_NOBLOCK,plugin_contexts,PLA_ARRAY_COUNT);
922 if (need_to_play) 917 if (need_to_play)
923 { 918 {
924 need_to_play = false; 919 need_to_play = false;
@@ -936,35 +931,25 @@ enum plugin_status plugin_start(const void* parameter)
936 status = PLUGIN_OK; 931 status = PLUGIN_OK;
937 goto metronome_exit; 932 goto metronome_exit;
938 933
939#if CONFIG_KEYPAD == ONDIO_PAD
940 case METRONOME_PLAY_TAP:
941 if(sound_paused) {
942 sound_paused = false;
943 calc_period();
944 draw_display();
945 }
946 else
947 tap();
948 break;
949
950 case METRONOME_PAUSE: 934 case METRONOME_PAUSE:
951 if(!sound_paused) { 935 if(!sound_paused)
936 {
952 sound_paused = true; 937 sound_paused = true;
953 draw_display(); 938 draw_display();
954 } 939 }
955 break; 940 break;
956 941 case METRONOME_PLAY:
957#else
958 case METRONOME_PLAYPAUSE:
959 if(sound_paused) 942 if(sound_paused)
943 {
960 sound_paused = false; 944 sound_paused = false;
961 else 945 calc_period();
962 sound_paused = true; 946 draw_display();
963 calc_period(); 947 }
964 draw_display(); 948 break;
949 case METRONOME_TAP:
950 if (last_button != METRONOME_PLAY)
951 tap();
965 break; 952 break;
966#endif /* ONDIO_PAD */
967
968 case METRONOME_VOL_UP: 953 case METRONOME_VOL_UP:
969 case METRONOME_VOL_UP_REP: 954 case METRONOME_VOL_UP_REP:
970 change_volume(1); 955 change_volume(1);
@@ -989,12 +974,6 @@ enum plugin_status plugin_start(const void* parameter)
989 change_bpm(1); 974 change_bpm(1);
990 break; 975 break;
991 976
992#ifdef METRONOME_TAP
993 case METRONOME_TAP:
994 tap();
995 break;
996#endif
997
998#ifdef MET_SYNC 977#ifdef MET_SYNC
999 case METRONOME_SYNC: 978 case METRONOME_SYNC:
1000 minitick = period; 979 minitick = period;
@@ -1012,6 +991,8 @@ enum plugin_status plugin_start(const void* parameter)
1012 break; 991 break;
1013 992
1014 } 993 }
994 if (button)
995 last_button = button;
1015 if (reset_tap) { 996 if (reset_tap) {
1016 tap_count = 0; 997 tap_count = 0;
1017 } 998 }
diff --git a/apps/plugins/pitch_detector.c b/apps/plugins/pitch_detector.c
index 09536a7b18..538e0886fa 100644
--- a/apps/plugins/pitch_detector.c
+++ b/apps/plugins/pitch_detector.c
@@ -413,11 +413,9 @@ void save_settings(void)
413 413
414/* Keymaps */ 414/* Keymaps */
415const struct button_mapping* plugin_contexts[]={ 415const struct button_mapping* plugin_contexts[]={
416 generic_actions, 416 pla_main_ctx,
417 generic_increase_decrease,
418 generic_directions,
419#if NB_SCREENS == 2 417#if NB_SCREENS == 2
420 remote_directions 418 pla_remote_ctx,
421#endif 419#endif
422}; 420};
423#define PLA_ARRAY_COUNT sizeof(plugin_contexts)/sizeof(plugin_contexts[0]) 421#define PLA_ARRAY_COUNT sizeof(plugin_contexts)/sizeof(plugin_contexts[0])
@@ -1040,11 +1038,11 @@ void record_and_get_pitch(void)
1040 1038
1041 switch(button) 1039 switch(button)
1042 { 1040 {
1043 case PLA_QUIT: 1041 case PLA_EXIT:
1044 quit=true; 1042 quit=true;
1045 break; 1043 break;
1046 1044
1047 case PLA_MENU: 1045 case PLA_CANCEL:
1048 rb->pcm_stop_recording(); 1046 rb->pcm_stop_recording();
1049 quit = main_menu() != 0; 1047 quit = main_menu() != 0;
1050 if(!quit) 1048 if(!quit)
diff --git a/apps/plugins/robotfindskitten.c b/apps/plugins/robotfindskitten.c
index 99fc327085..0e5c94ea7e 100644
--- a/apps/plugins/robotfindskitten.c
+++ b/apps/plugins/robotfindskitten.c
@@ -469,47 +469,7 @@ static char* messages[] =
469 469
470#define RFK_VERSION "v1.4142135.406" 470#define RFK_VERSION "v1.4142135.406"
471 471
472/* Button definitions stolen from maze.c */ 472# define RFK_QUIT PLA_CANCEL
473#if (CONFIG_KEYPAD == IPOD_4G_PAD) || \
474 (CONFIG_KEYPAD == IPOD_3G_PAD) || \
475 (CONFIG_KEYPAD == IPOD_1G2G_PAD)
476# undef __PLUGINLIB_ACTIONS_H__
477# define RFK_QUIT (BUTTON_SELECT | BUTTON_MENU)
478# define RFK_RIGHT BUTTON_RIGHT
479# define RFK_LEFT BUTTON_LEFT
480# define RFK_UP BUTTON_MENU
481# define RFK_DOWN BUTTON_PLAY
482# define RFK_RRIGHT (BUTTON_RIGHT | BUTTON_REPEAT)
483# define RFK_RLEFT (BUTTON_LEFT | BUTTON_REPEAT)
484# define RFK_RUP (BUTTON_MENU | BUTTON_REPEAT)
485# define RFK_RDOWN (BUTTON_PLAY | BUTTON_REPEAT)
486
487#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
488# undef __PLUGINLIB_ACTIONS_H__
489# define RFK_QUIT (BUTTON_HOME|BUTTON_REPEAT)
490# define RFK_RIGHT BUTTON_RIGHT
491# define RFK_LEFT BUTTON_LEFT
492# define RFK_UP BUTTON_UP
493# define RFK_DOWN BUTTON_DOWN
494# define RFK_RRIGHT (BUTTON_RIGHT | BUTTON_REPEAT)
495# define RFK_RLEFT (BUTTON_LEFT | BUTTON_REPEAT)
496# define RFK_RUP (BUTTON_UP | BUTTON_REPEAT)
497# define RFK_RDOWN (BUTTON_DOWN | BUTTON_REPEAT)
498
499#elif (CONFIG_KEYPAD == SAMSUNG_YH_PAD)
500# undef __PLUGINLIB_ACTIONS_H__
501# define RFK_QUIT (BUTTON_REC|BUTTON_REPEAT)
502# define RFK_RIGHT BUTTON_RIGHT
503# define RFK_LEFT BUTTON_LEFT
504# define RFK_UP BUTTON_UP
505# define RFK_DOWN BUTTON_DOWN
506# define RFK_RRIGHT (BUTTON_PLAY | BUTTON_RIGHT)
507# define RFK_RLEFT (BUTTON_PLAY | BUTTON_LEFT)
508# define RFK_RUP (BUTTON_PLAY | BUTTON_UP)
509# define RFK_RDOWN (BUTTON_PLAY | BUTTON_DOWN)
510
511#else
512# define RFK_QUIT PLA_QUIT
513# define RFK_RIGHT PLA_RIGHT 473# define RFK_RIGHT PLA_RIGHT
514# define RFK_LEFT PLA_LEFT 474# define RFK_LEFT PLA_LEFT
515# define RFK_UP PLA_UP 475# define RFK_UP PLA_UP
@@ -519,7 +479,6 @@ static char* messages[] =
519# define RFK_RUP PLA_UP_REPEAT 479# define RFK_RUP PLA_UP_REPEAT
520# define RFK_RDOWN PLA_DOWN_REPEAT 480# define RFK_RDOWN PLA_DOWN_REPEAT
521 481
522#endif
523/*Constants for our internal representation of the screen.*/ 482/*Constants for our internal representation of the screen.*/
524#define EMPTY -1 483#define EMPTY -1
525#define ROBOT 0 484#define ROBOT 0
@@ -677,9 +636,7 @@ static void play_game()
677 int old_x = robot.x; 636 int old_x = robot.x;
678 int old_y = robot.y; 637 int old_y = robot.y;
679 int input = BUTTON_NONE; 638 int input = BUTTON_NONE;
680#ifdef __PLUGINLIB_ACTIONS_H__ 639 const struct button_mapping *plugin_contexts[] = {pla_main_ctx};
681 const struct button_mapping *plugin_contexts[] = {generic_directions, generic_actions};
682#endif
683 640
684 while (input != RFK_QUIT && exit_rfk == false) 641 while (input != RFK_QUIT && exit_rfk == false)
685 { 642 {
@@ -700,11 +657,8 @@ static void play_game()
700 old_x = robot.x; 657 old_x = robot.x;
701 old_y = robot.y; 658 old_y = robot.y;
702 } 659 }
703#ifdef __PLUGINLIB_ACTIONS_H__ 660 input = pluginlib_getaction(TIMEOUT_BLOCK, plugin_contexts,
704 input = pluginlib_getaction(TIMEOUT_BLOCK, plugin_contexts, 2); 661 ARRAYLEN(plugin_contexts));
705#else
706 input = rb->button_get(true);
707#endif
708 } 662 }
709 message("Bye!"); 663 message("Bye!");
710 refresh(); 664 refresh();
diff --git a/apps/plugins/rocklife.c b/apps/plugins/rocklife.c
index 35c848de1d..210cffa78d 100644
--- a/apps/plugins/rocklife.c
+++ b/apps/plugins/rocklife.c
@@ -66,11 +66,11 @@
66 66
67PLUGIN_HEADER 67PLUGIN_HEADER
68 68
69#define ROCKLIFE_PLAY_PAUSE PLA_FIRE 69#define ROCKLIFE_PLAY_PAUSE PLA_SELECT
70#define ROCKLIFE_INIT PLA_DOWN 70#define ROCKLIFE_INIT PLA_DOWN
71#define ROCKLIFE_NEXT PLA_RIGHT 71#define ROCKLIFE_NEXT PLA_RIGHT
72#define ROCKLIFE_NEXT_REP PLA_RIGHT_REPEAT 72#define ROCKLIFE_NEXT_REP PLA_RIGHT_REPEAT
73#define ROCKLIFE_QUIT PLA_QUIT 73#define ROCKLIFE_QUIT PLA_CANCEL
74#define ROCKLIFE_STATUS PLA_LEFT 74#define ROCKLIFE_STATUS PLA_LEFT
75 75
76#define PATTERN_RANDOM 0 76#define PATTERN_RANDOM 0
@@ -80,7 +80,7 @@ PLUGIN_HEADER
80#define PATTERN_GLIDER_GUN 4 80#define PATTERN_GLIDER_GUN 4
81 81
82const struct button_mapping *plugin_contexts[] 82const struct button_mapping *plugin_contexts[]
83= {generic_directions, generic_actions}; 83= {pla_main_ctx};
84 84
85#define GRID_W LCD_WIDTH 85#define GRID_W LCD_WIDTH
86#define GRID_H LCD_HEIGHT 86#define GRID_H LCD_HEIGHT
@@ -512,7 +512,7 @@ enum plugin_status plugin_start(const void* parameter)
512 show_grid(pgrid); 512 show_grid(pgrid);
513 513
514 while(!quit) { 514 while(!quit) {
515 button = pluginlib_getaction(TIMEOUT_BLOCK, plugin_contexts, 2); 515 button = pluginlib_getaction(TIMEOUT_BLOCK, plugin_contexts, ARRAYLEN(plugin_contexts));
516 switch(button) { 516 switch(button) {
517 case ROCKLIFE_NEXT: 517 case ROCKLIFE_NEXT:
518 case ROCKLIFE_NEXT_REP: 518 case ROCKLIFE_NEXT_REP:
@@ -537,7 +537,7 @@ enum plugin_status plugin_start(const void* parameter)
537 /* show new generation */ 537 /* show new generation */
538 rb->yield(); 538 rb->yield();
539 show_grid(pgrid); 539 show_grid(pgrid);
540 button = pluginlib_getaction(0, plugin_contexts, 2); 540 button = pluginlib_getaction(0, plugin_contexts, ARRAYLEN(plugin_contexts));
541 switch(button) { 541 switch(button) {
542 case ROCKLIFE_PLAY_PAUSE: 542 case ROCKLIFE_PLAY_PAUSE:
543 case ROCKLIFE_QUIT: 543 case ROCKLIFE_QUIT:
diff --git a/apps/plugins/test_resize.c b/apps/plugins/test_resize.c
index a6a183a54b..8ad8cdee38 100644
--- a/apps/plugins/test_resize.c
+++ b/apps/plugins/test_resize.c
@@ -33,7 +33,6 @@ PLUGIN_HEADER
33const struct button_mapping *plugin_contexts[] 33const struct button_mapping *plugin_contexts[]
34= {generic_actions, generic_directions}; 34= {generic_actions, generic_directions};
35 35
36#define NB_ACTION_CONTEXTS sizeof(plugin_contexts)/sizeof(plugin_contexts[0])
37 36
38/* Key assignement */ 37/* Key assignement */
39#define SIZE_INCREASE PLA_UP 38#define SIZE_INCREASE PLA_UP
@@ -46,8 +45,8 @@ const struct button_mapping *plugin_contexts[]
46#define WIDTH_DECREASE PLA_LEFT 45#define WIDTH_DECREASE PLA_LEFT
47#define WIDTH_DECREASE_REPEAT PLA_LEFT_REPEAT 46#define WIDTH_DECREASE_REPEAT PLA_LEFT_REPEAT
48 47
49#define BUTTON_QUIT PLA_QUIT 48#define BUTTON_QUIT PLA_CANCEL
50#define CHANGE_MODE PLA_MENU 49#define CHANGE_MODE PLA_SELECT
51 50
52#define MAX_OUTPUT_WIDTH LCD_WIDTH 51#define MAX_OUTPUT_WIDTH LCD_WIDTH
53#define MAX_OUTPUT_HEIGHT LCD_HEIGHT 52#define MAX_OUTPUT_HEIGHT LCD_HEIGHT
@@ -110,8 +109,8 @@ enum plugin_status plugin_start(const void* parameter)
110 output_bmp.height); 109 output_bmp.height);
111 110
112 rb->lcd_update(); 111 rb->lcd_update();
113 button = pluginlib_getaction(HZ, 112 button = pluginlib_getaction(HZ, plugin_contexts,
114 plugin_contexts, NB_ACTION_CONTEXTS); 113 ARRAYLEN(plugin_contexts));
115 switch (button) { 114 switch (button) {
116 case BUTTON_QUIT: 115 case BUTTON_QUIT:
117 return PLUGIN_OK; 116 return PLUGIN_OK;