summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-05-20 17:41:28 +0000
committerThomas Martitz <kugel@rockbox.org>2010-05-20 17:41:28 +0000
commit20e9d56ba5507021bdde898f4b0a0eb14f2af861 (patch)
tree20a1ff36d0cc0f530bc7c7648b1bca2f9127a5c8
parent97365803d390e44155fc41657bd03a7b121956aa (diff)
downloadrockbox-20e9d56ba5507021bdde898f4b0a0eb14f2af861.tar.gz
rockbox-20e9d56ba5507021bdde898f4b0a0eb14f2af861.zip
S#10387 - Rework pluginlib actions
It changes pluginlib actions to contain only a single and simple context (and other one for remote directional buttons), consisting of 7(9) buttons: up/down/left/right, select OR short select and long select, exit and cancel (plus 2 for scrollwheel targets). This ensures contexts don't clash with other contexts and simplifies them, at the expense of reduced versatility. However, the versatility made it largely unusable due to the great number of targets. This should allow for using pluginlib actions safely for the most simple plugins (e.g. almost all demos). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26202 a1c6a512-1295-4272-9138-f99709370657
-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;