summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/keymaps/keymap-cowond2.c22
-rw-r--r--apps/plugins/SOURCES3
-rw-r--r--apps/plugins/SUBDIRS2
-rw-r--r--apps/plugins/battery_bench.c7
-rw-r--r--apps/plugins/blackjack.c15
-rw-r--r--apps/plugins/bounce.c8
-rw-r--r--apps/plugins/brickmania.c9
-rw-r--r--apps/plugins/calculator.c12
-rw-r--r--apps/plugins/chessbox/chessbox_pgn.h16
-rw-r--r--apps/plugins/chessclock.c10
-rw-r--r--apps/plugins/chip8.c8
-rw-r--r--apps/plugins/chopper.c6
-rw-r--r--apps/plugins/cube.c13
-rw-r--r--apps/plugins/dict.c2
-rw-r--r--apps/plugins/disktidy.c3
-rw-r--r--apps/plugins/doom/i_video.c10
-rw-r--r--apps/plugins/fireworks.c4
-rw-r--r--apps/plugins/flipit.c13
-rw-r--r--apps/plugins/invadrox.c7
-rw-r--r--apps/plugins/jewels.c8
-rw-r--r--apps/plugins/jpeg.c11
-rw-r--r--apps/plugins/logo.c7
-rw-r--r--apps/plugins/mandelbrot.c14
-rw-r--r--apps/plugins/matrix.c5
-rw-r--r--apps/plugins/mazezam.c12
-rw-r--r--apps/plugins/midi/midiplay.c9
-rw-r--r--apps/plugins/minesweeper.c10
-rw-r--r--apps/plugins/mosaique.c5
-rw-r--r--apps/plugins/mp3_encoder.c5
-rw-r--r--apps/plugins/mpegplayer/mpeg_settings.c10
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c9
-rw-r--r--apps/plugins/oscilloscope.c13
-rw-r--r--apps/plugins/pacbox/pacbox.h12
-rw-r--r--apps/plugins/plasma.c6
-rw-r--r--apps/plugins/pong.c7
-rw-r--r--apps/plugins/reversi/reversi-gui.h9
-rw-r--r--apps/plugins/rockblox.c10
-rw-r--r--apps/plugins/rockboy/rockboy.c9
-rw-r--r--apps/plugins/rockpaint.c11
-rw-r--r--apps/plugins/sliding_puzzle.c9
-rw-r--r--apps/plugins/snake.c8
-rw-r--r--apps/plugins/snake2.c14
-rw-r--r--apps/plugins/snow.c2
-rw-r--r--apps/plugins/sokoban.c16
-rw-r--r--apps/plugins/solitaire.c21
-rw-r--r--apps/plugins/spacerocks.c13
-rw-r--r--apps/plugins/star.c13
-rw-r--r--apps/plugins/starfield.c7
-rw-r--r--apps/plugins/stats.c3
-rw-r--r--apps/plugins/stopwatch.c7
-rw-r--r--apps/plugins/sudoku/sudoku.h10
-rw-r--r--apps/plugins/superdom.c8
-rw-r--r--apps/plugins/viewer.c9
-rw-r--r--apps/plugins/vu_meter.c9
-rw-r--r--apps/plugins/wormlet.c13
-rw-r--r--apps/plugins/xobox.c9
-rw-r--r--apps/plugins/zxbox/keymaps.h8
-rw-r--r--apps/plugins/zxbox/zxbox_keyb.c11
-rw-r--r--docs/CREDITS3
-rwxr-xr-xtools/configure2
60 files changed, 538 insertions, 9 deletions
diff --git a/apps/keymaps/keymap-cowond2.c b/apps/keymaps/keymap-cowond2.c
index bf9b21be56..ff4fdc5417 100644
--- a/apps/keymaps/keymap-cowond2.c
+++ b/apps/keymaps/keymap-cowond2.c
@@ -61,6 +61,24 @@ static const struct button_mapping button_context_standard[] = {
static const struct button_mapping button_context_wps[] = {
+ { ACTION_WPS_PLAY, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
+ { ACTION_WPS_STOP, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
+ { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
+ { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
+ { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
+ { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
+ { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
+ { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
+
+ { ACTION_WPS_VOLDOWN, BUTTON_MINUS, BUTTON_NONE },
+ { ACTION_WPS_VOLDOWN, BUTTON_MINUS|BUTTON_REPEAT, BUTTON_NONE },
+ { ACTION_WPS_VOLUP, BUTTON_PLUS, BUTTON_NONE },
+ { ACTION_WPS_VOLUP, BUTTON_PLUS|BUTTON_REPEAT, BUTTON_NONE },
+
+ { ACTION_WPS_BROWSE, BUTTON_UP|BUTTON_REL, BUTTON_UP },
+ { ACTION_WPS_CONTEXT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
+ { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
+ { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
LAST_ITEM_IN_LIST
}; /* button_context_wps */
@@ -132,8 +150,8 @@ static const struct button_mapping button_context_pitchscreen[] = {
}; /* button_context_pitchcreen */
static const struct button_mapping button_context_keyboard[] = {
-
- LAST_ITEM_IN_LIST
+ LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
+ //LAST_ITEM_IN_LIST
}; /* button_context_keyboard */
extern int current_tick;
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES
index 4f782dc455..a274622722 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -1,5 +1,3 @@
-#if !defined(COWON_D2)
-
/* plugins common to all models */
battery_bench.c
chessclock.c
@@ -149,4 +147,3 @@ invadrox.c
superdom.c
#endif
#endif /* m:robe 500 */
-#endif /* COWON_D2 */
diff --git a/apps/plugins/SUBDIRS b/apps/plugins/SUBDIRS
index b82c6ad172..9bda7c2715 100644
--- a/apps/plugins/SUBDIRS
+++ b/apps/plugins/SUBDIRS
@@ -1,4 +1,4 @@
-#if !defined(IRIVER_IFP7XX_SERIES) && !defined(COWON_D2) && !defined(GIGABEAT_S)
+#if !defined(IRIVER_IFP7XX_SERIES) && !defined(GIGABEAT_S)
/* For all targets */
shortcuts
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index 6b52a4d489..ad45d6562d 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -144,6 +144,13 @@ PLUGIN_HEADER
#define BATTERY_ON_TXT "PLAY - start"
#define BATTERY_OFF_TXT "REC - quit"
+#elif CONFIG_KEYPAD == COWOND2_PAD
+
+#define BATTERY_ON BUTTON_MENU
+#define BATTERY_OFF BUTTON_POWER
+#define BATTERY_ON_TXT "MENU - start"
+#define BATTERY_OFF_TXT "POWER - quit"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index fc2f542077..f69ca1e6b0 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -250,6 +250,21 @@ PLUGIN_HEADER
#define BJACK_RIGHT BUTTON_RC_FF
#define BJACK_LEFT BUTTON_RC_REW
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define BJACK_START BUTTON_SELECT
+#define BJACK_QUIT BUTTON_POWER
+#define BJACK_MAX BUTTON_PLUS
+#define BJACK_MIN BUTTON_MINUS
+#define BJACK_HIT BUTTON_SELECT
+#define BJACK_STAY BUTTON_MENU
+#define BJACK_DOUBLEDOWN (BUTTON_DOWN|BUTTON_MENU)
+#define BJACK_SCORES (BUTTON_SELECT|BUTTON_MENU)
+#define BJACK_RESUME (BUTTON_SELECT|BUTTON_PLUS)
+#define BJACK_UP BUTTON_UP
+#define BJACK_DOWN BUTTON_DOWN
+#define BJACK_RIGHT BUTTON_RIGHT
+#define BJACK_LEFT BUTTON_LEFT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/bounce.c b/apps/plugins/bounce.c
index 8216a396e9..2400325032 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -138,6 +138,14 @@ PLUGIN_HEADER
#define BOUNCE_QUIT BUTTON_RC_REC
#define BOUNCE_MODE BUTTON_RC_MODE
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define BOUNCE_LEFT BUTTON_LEFT
+#define BOUNCE_RIGHT BUTTON_RIGHT
+#define BOUNCE_UP BUTTON_UP
+#define BOUNCE_DOWN BUTTON_DOWN
+#define BOUNCE_QUIT BUTTON_POWER
+#define BOUNCE_MODE BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index d376ad20d0..bae8dededf 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -164,6 +164,15 @@ PLUGIN_HEADER
#define RC_QUIT BUTTON_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+
+#define QUIT BUTTON_POWER
+#define LEFT BUTTON_LEFT
+#define RIGHT BUTTON_RIGHT
+#define SELECT BUTTON_SELECT
+#define UP BUTTON_UP
+#define DOWN BUTTON_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index 53be78fdd9..1cb1ee915d 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -249,6 +249,18 @@ PLUGIN_HEADER
#define CALCULATOR_RC_QUIT BUTTON_REC
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+
+#define CALCULATOR_LEFT BUTTON_LEFT
+#define CALCULATOR_RIGHT BUTTON_RIGHT
+#define CALCULATOR_UP BUTTON_UP
+#define CALCULATOR_DOWN BUTTON_DOWN
+#define CALCULATOR_QUIT BUTTON_POWER
+#define CALCULATOR_INPUT_CALC_PRE BUTTON_MINUS
+#define CALCULATOR_INPUT BUTTON_PLUS
+#define CALCULATOR_CALC BUTTON_SELECT
+#define CALCULATOR_CLEAR BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h
index 59760ec7b3..a6b647b034 100644
--- a/apps/plugins/chessbox/chessbox_pgn.h
+++ b/apps/plugins/chessbox/chessbox_pgn.h
@@ -247,6 +247,22 @@
#define CB_RC_QUIT BUTTON_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define CB_SELECT BUTTON_SELECT
+#define CB_UP BUTTON_UP
+#define CB_DOWN BUTTON_DOWN
+#define CB_LEFT BUTTON_LEFT
+#define CB_RIGHT BUTTON_RIGHT
+#define CB_PLAY BUTTON_MENU
+#define CB_LEVEL BUTTON_PLUS
+#define CB_RESTART (BUTTON_SELECT | BUTTON_MENU)
+#define CB_MENU BUTTON_POWER
+
+#define CB_SCROLL_UP (BUTTON_UP|BUTTON_MENU)
+#define CB_SCROLL_DOWN (BUTTON_DOWN|BUTTON_MENU)
+#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_MENU)
+#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_MENU)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 7d16c7c629..34eeb6b0db 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -180,6 +180,16 @@ PLUGIN_HEADER
#define CHC_SETTINGS_OK BUTTON_RC_PLAY
#define CHC_SETTINGS_CANCEL BUTTON_RC_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define CHC_QUIT BUTTON_POWER
+#define CHC_STARTSTOP BUTTON_SELECT
+#define CHC_RESET (BUTTON_SELECT|BUTTON_MENU)
+#define CHC_MENU BUTTON_MENU
+#define CHC_SETTINGS_INC BUTTON_UP
+#define CHC_SETTINGS_DEC BUTTON_DOWN
+#define CHC_SETTINGS_OK BUTTON_SELECT
+#define CHC_SETTINGS_CANCEL BUTTON_POWER
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index 5fbf1be7fb..7e6fda0bbc 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1077,6 +1077,14 @@ STATIC void chip8 (void)
#define CHIP8_KEY6 BUTTON_RC_FF
#define CHIP8_KEY8 BUTTON_RC_VOL_DOWN
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define CHIP8_OFF BUTTON_POWER
+#define CHIP8_KEY2 BUTTON_DOWN
+#define CHIP8_KEY4 BUTTON_LEFT
+#define CHIP8_KEY5 BUTTON_SELECT
+#define CHIP8_KEY6 BUTTON_RIGHT
+#define CHIP8_KEY8 BUTTON_UP
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index 02cc2ffd92..f359023678 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -103,6 +103,12 @@ Still To do:
#define ACTION2 BUTTON_RC_MODE
#define ACTIONTEXT "PLAY"
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define QUIT BUTTON_POWER
+#define ACTION BUTTON_UP
+#define ACTION2 BUTTON_MENU
+#define ACTIONTEXT "UP"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index 96d95fc4d0..78a0015713 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -241,6 +241,19 @@ PLUGIN_HEADER
#define CUBE_PAUSE BUTTON_RC_PLAY
#define CUBE_HIGHSPEED BUTTON_RC_MENU
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define CUBE_QUIT BUTTON_POWER
+#define CUBE_X_INC BUTTON_RIGHT
+#define CUBE_X_DEC BUTTON_LEFT
+#define CUBE_Y_INC BUTTON_UP
+#define CUBE_Y_DEC BUTTON_DOWN
+#define CUBE_Z_INC BUTTON_PLUS
+#define CUBE_Z_DEC BUTTON_MINUS
+#define CUBE_MODE BUTTON_MENU
+#define CUBE_PAUSE_PRE BUTTON_SELECT
+#define CUBE_PAUSE (BUTTON_MINUS | BUTTON_REL)
+#define CUBE_HIGHSPEED (BUTTON_PLUS | BUTTON_REL)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/dict.c b/apps/plugins/dict.c
index 159d1c669f..a149f0089a 100644
--- a/apps/plugins/dict.c
+++ b/apps/plugins/dict.c
@@ -127,6 +127,8 @@ long reverse (long N) {
#define LP_QUIT BUTTON_BACK
#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
#define LP_QUIT BUTTON_RC_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define LP_QUIT BUTTON_POWER
#else
#define LP_QUIT BUTTON_OFF
#endif
diff --git a/apps/plugins/disktidy.c b/apps/plugins/disktidy.c
index 3bf8f3507d..b32dce2737 100644
--- a/apps/plugins/disktidy.c
+++ b/apps/plugins/disktidy.c
@@ -82,6 +82,9 @@ enum tidy_system
#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
#define TIDY_STOP BUTTON_RC_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define TIDY_STOP BUTTON_POWER
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index e6cc272808..bc0f204d3b 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -235,6 +235,16 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_ESC BUTTON_OFF
#define DOOMBUTTON_ENTER BUTTON_SELECT
#define DOOMBUTTON_WEAPON BUTTON_ON
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define DOOMBUTTON_ESC BUTTON_POWER
+#define DOOMBUTTON_UP BUTTON_UP
+#define DOOMBUTTON_DOWN BUTTON_DOWN
+#define DOOMBUTTON_LEFT BUTTON_LEFT
+#define DOOMBUTTON_RIGHT BUTTON_RIGHT
+#define DOOMBUTTON_OPEN BUTTON_PLUS
+#define DOOMBUTTON_SHOOT BUTTON_SELECT
+#define DOOMBUTTON_ENTER BUTTON_MENU
+#define DOOMBUTTON_WEAPON BUTTON_MINUS
#else
#error Keymap not defined!
#endif
diff --git a/apps/plugins/fireworks.c b/apps/plugins/fireworks.c
index 68fe2ebe25..3af9bdf39d 100644
--- a/apps/plugins/fireworks.c
+++ b/apps/plugins/fireworks.c
@@ -69,7 +69,9 @@ static struct plugin_api* rb;
#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
#define BTN_MENU BUTTON_RC_REC
#define BTN_FIRE BUTTON_RC_PLAY
-
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define BTN_MENU BUTTON_MENU
+#define BTN_FIRE BUTTON_SELECT
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 831cc857ec..37e49af68e 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -189,6 +189,19 @@ PLUGIN_HEADER
#define FLIPIT_RC_QUIT BUTTON_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+
+#define FLIPIT_LEFT BUTTON_LEFT
+#define FLIPIT_RIGHT BUTTON_RIGHT
+#define FLIPIT_UP BUTTON_UP
+#define FLIPIT_DOWN BUTTON_DOWN
+#define FLIPIT_QUIT BUTTON_POWER
+#define FLIPIT_SHUFFLE (BUTTON_LEFT|BUTTON_MENU)
+#define FLIPIT_SOLVE (BUTTON_RIGHT|BUTTON_MENU)
+#define FLIPIT_STEP_BY_STEP BUTTON_MINUS
+#define FLIPIT_TOGGLE_PRE BUTTON_PLUS
+#define FLIPIT_TOGGLE BUTTON_SELECT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c
index 8f5c0bf5a3..d7439ee19e 100644
--- a/apps/plugins/invadrox.c
+++ b/apps/plugins/invadrox.c
@@ -114,6 +114,13 @@ PLUGIN_HEADER
#define RIGHT BUTTON_RIGHT
#define FIRE BUTTON_SELECT
+#elif CONFIG_KEYPAD == COWOND2_PAD
+
+#define QUIT BUTTON_POWER
+#define LEFT BUTTON_MINUS
+#define RIGHT BUTTON_PLUS
+#define FIRE BUTTON_MENU
+
#else
#error INVADROX: Unsupported keypad
#endif
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index 5579c194e8..08807d7225 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -138,6 +138,14 @@ PLUGIN_HEADER
#define JEWELS_RC_CANCEL BUTTON_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define JEWELS_UP BUTTON_UP
+#define JEWELS_DOWN BUTTON_DOWN
+#define JEWELS_LEFT BUTTON_LEFT
+#define JEWELS_RIGHT BUTTON_RIGHT
+#define JEWELS_SELECT BUTTON_SELECT
+#define JEWELS_CANCEL BUTTON_POWER
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/jpeg.c b/apps/plugins/jpeg.c
index ad0ce6c857..e2c1b4861b 100644
--- a/apps/plugins/jpeg.c
+++ b/apps/plugins/jpeg.c
@@ -198,6 +198,17 @@ PLUGIN_HEADER
#define JPEG_NEXT (BUTTON_DISPLAY | BUTTON_RIGHT)
#define JPEG_PREVIOUS (BUTTON_DISPLAY | BUTTON_LEFT)
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define JPEG_ZOOM_IN BUTTON_PLUS
+#define JPEG_ZOOM_OUT BUTTON_MINUS
+#define JPEG_UP BUTTON_UP
+#define JPEG_DOWN BUTTON_DOWN
+#define JPEG_LEFT BUTTON_LEFT
+#define JPEG_RIGHT BUTTON_RIGHT
+#define JPEG_MENU BUTTON_MENU
+#define JPEG_NEXT (BUTTON_SELECT|BUTTON_PLUS)
+#define JPEG_PREVIOUS (BUTTON_SELECT|BUTTON_MINUS)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c
index 9b33108fcb..7a1a746d4a 100644
--- a/apps/plugins/logo.c
+++ b/apps/plugins/logo.c
@@ -136,6 +136,13 @@ const unsigned char rockbox16x7[] = {
#define LP_DEC_Y BUTTON_RC_VOL_DOWN
#define LP_INC_Y BUTTON_RC_VOL_UP
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define LP_QUIT BUTTON_POWER
+#define LP_DEC_X BUTTON_LEFT
+#define LP_INC_X BUTTON_RIGHT
+#define LP_DEC_Y BUTTON_DOWN
+#define LP_INC_Y BUTTON_UP
+
#else
#define LP_QUIT BUTTON_OFF
#define LP_DEC_X BUTTON_LEFT
diff --git a/apps/plugins/mandelbrot.c b/apps/plugins/mandelbrot.c
index 4c5e7d7458..26ec3e4ab9 100644
--- a/apps/plugins/mandelbrot.c
+++ b/apps/plugins/mandelbrot.c
@@ -202,6 +202,20 @@ PLUGIN_HEADER
#define MANDELBROT_MAXITER_DEC BUTTON_PLAY
#define MANDELBROT_RESET BUTTON_DISPLAY
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define MANDELBROT_QUIT BUTTON_POWER
+#define MANDELBROT_UP BUTTON_UP
+#define MANDELBROT_DOWN BUTTON_DOWN
+#define MANDELBROT_LEFT BUTTON_LEFT
+#define MANDELBROT_RIGHT BUTTON_RIGHT
+#define MANDELBROT_ZOOM_IN_PRE BUTTON_SELECT
+#define MANDELBROT_ZOOM_IN (BUTTON_SELECT | BUTTON_PLUS)
+#define MANDELBROT_ZOOM_OUT_PRE BUTTON_SELECT
+#define MANDELBROT_ZOOM_OUT (BUTTON_SELECT | BUTTON_MINUS)
+#define MANDELBROT_MAXITER_INC BUTTON_PLUS
+#define MANDELBROT_MAXITER_DEC BUTTON_MINUS
+#define MANDELBROT_RESET BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/matrix.c b/apps/plugins/matrix.c
index 19763b6005..c445867d62 100644
--- a/apps/plugins/matrix.c
+++ b/apps/plugins/matrix.c
@@ -95,6 +95,11 @@ extern const fb_data matrix_normal[];
#define MATRIX_SLEEP_MORE BUTTON_RC_VOL_UP
#define MATRIX_SLEEP_LESS BUTTON_RC_VOL_DOWN
#define MATRIX_PAUSE BUTTON_RC_PLAY
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define MATRIX_EXIT BUTTON_POWER
+#define MATRIX_SLEEP_MORE BUTTON_PLUS
+#define MATRIX_SLEEP_LESS BUTTON_MINUS
+#define MATRIX_PAUSE BUTTON_MENU
#else
#error Unsupported keypad
#endif
diff --git a/apps/plugins/mazezam.c b/apps/plugins/mazezam.c
index 69997af9c3..dac73473ce 100644
--- a/apps/plugins/mazezam.c
+++ b/apps/plugins/mazezam.c
@@ -177,6 +177,18 @@ MEM_FUNCTION_WRAPPERS(rb);
#define MAZEZAM_QUIT BUTTON_RC_REC
#define MAZEZAM_QUIT_KEYNAME "[REC]"
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define MAZEZAM_UP BUTTON_UP
+#define MAZEZAM_DOWN BUTTON_DOWN
+#define MAZEZAM_LEFT BUTTON_LEFT
+#define MAZEZAM_RIGHT BUTTON_RIGHT
+#define MAZEZAM_SELECT BUTTON_SELECT
+
+#define MAZEZAM_RETRY BUTTON_SELECT
+#define MAZEZAM_RETRY_KEYNAME "[PLAY]"
+#define MAZEZAM_QUIT BUTTON_POWER
+#define MAZEZAM_QUIT_KEYNAME "[POWER]"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index c5865beb09..84bfe30034 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -135,6 +135,15 @@ PLUGIN_IRAM_DECLARE
#define BTN_PLAY BUTTON_RC_PLAY
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define BTN_QUIT BUTTON_POWER
+#define BTN_RIGHT BUTTON_RIGHT
+#define BTN_LEFT BUTTON_LEFT
+#define BTN_UP BUTTON_UP
+#define BTN_DOWN BUTTON_DOWN
+#define BTN_PLAY BUTTON_SELECT
+
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index afe7a39320..0f3de2fb74 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -183,6 +183,16 @@ enum minesweeper_status {
# define MINESWP_DISCOVER BUTTON_RC_PLAY
# define MINESWP_INFO BUTTON_RC_MENU
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+# define MINESWP_LEFT BUTTON_LEFT
+# define MINESWP_RIGHT BUTTON_RIGHT
+# define MINESWP_UP BUTTON_UP
+# define MINESWP_DOWN BUTTON_DOWN
+# define MINESWP_QUIT BUTTON_POWER
+# define MINESWP_TOGGLE BUTTON_SELECT
+# define MINESWP_DISCOVER BUTTON_MENU
+# define MINESWP_INFO (BUTTON_MENU | BUTTON_SELECT)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c
index bd1eade7f0..8163685366 100644
--- a/apps/plugins/mosaique.c
+++ b/apps/plugins/mosaique.c
@@ -122,6 +122,11 @@ PLUGIN_HEADER
#define MOSAIQUE_SPEED BUTTON_RC_MENU
#define MOSAIQUE_RESTART BUTTON_RC_PLAY
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define MOSAIQUE_QUIT BUTTON_POWER
+#define MOSAIQUE_SPEED BUTTON_RIGHT
+#define MOSAIQUE_RESTART BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index d0f4412087..2f7a9905aa 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2332,6 +2332,11 @@ void get_mp3_filename(char *wav_name)
#define MP3ENC_NEXT BUTTON_RC_VOL_DOWN
#define MP3ENC_DONE BUTTON_RC_REC
#define MP3ENC_SELECT BUTTON_RC_FF
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define MP3ENC_PREV BUTTON_UP
+#define MP3ENC_NEXT BUTTON_DOWN
+#define MP3ENC_DONE BUTTON_POWER
+#define MP3ENC_SELECT BUTTON_SELECT
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 8e4f16a484..7dfdd36927 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -102,6 +102,16 @@ struct mpeg_settings settings;
#define MPEG_START_TIME_SCROLL_UP BUTTON_PLAY
#define MPEG_START_TIME_EXIT BUTTON_POWER
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define MPEG_START_TIME_SELECT BUTTON_SELECT
+#define MPEG_START_TIME_SCROLL_UP BUTTON_PLUS
+#define MPEG_START_TIME_SCROLL_DOWN BUTTON_MINUS
+#define MPEG_START_TIME_LEFT BUTTON_LEFT
+#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
+#define MPEG_START_TIME_UP BUTTON_UP
+#define MPEG_START_TIME_DOWN BUTTON_DOWN
+#define MPEG_START_TIME_EXIT BUTTON_POWER
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index 5a1f22392c..d068fd8254 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -202,6 +202,15 @@ PLUGIN_IRAM_DECLARE
#define MPEG_RW BUTTON_LEFT
#define MPEG_FF BUTTON_RIGHT
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define MPEG_MENU BUTTON_MENU
+#define MPEG_STOP BUTTON_POWER
+#define MPEG_PAUSE BUTTON_SELECT
+#define MPEG_VOLDOWN BUTTON_MINUS
+#define MPEG_VOLUP BUTTON_PLUS
+#define MPEG_RW BUTTON_LEFT
+#define MPEG_FF BUTTON_RIGHT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index 6b816aebe7..d576c81d88 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -181,6 +181,19 @@ PLUGIN_HEADER
#define OSCILLOSCOPE_VOL_UP BUTTON_RC_VOL_UP
#define OSCILLOSCOPE_VOL_DOWN BUTTON_RC_VOL_DOWN
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define OSCILLOSCOPE_QUIT BUTTON_POWER
+#define OSCILLOSCOPE_DRAWMODE_PRE (BUTTON_LEFT | BUTTON_MENU)
+#define OSCILLOSCOPE_DRAWMODE (BUTTON_RIGHT | BUTTON_MENU)
+#define OSCILLOSCOPE_ADVMODE (BUTTON_SELECT|BUTTON_MENU)
+#define OSCILLOSCOPE_ORIENTATION_PRE (BUTTON_UP | BUTTON_MENU)
+#define OSCILLOSCOPE_ORIENTATION (BUTTON_DOWN | BUTTON_MENU)
+#define OSCILLOSCOPE_PAUSE BUTTON_SELECT
+#define OSCILLOSCOPE_SPEED_UP BUTTON_UP
+#define OSCILLOSCOPE_SPEED_DOWN BUTTON_DOWN
+#define OSCILLOSCOPE_VOL_UP BUTTON_PLUS
+#define OSCILLOSCOPE_VOL_DOWN BUTTON_MINUS
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/pacbox/pacbox.h b/apps/plugins/pacbox/pacbox.h
index ea9fd3c0ef..d316b70e71 100644
--- a/apps/plugins/pacbox/pacbox.h
+++ b/apps/plugins/pacbox/pacbox.h
@@ -130,6 +130,18 @@
#define PACMAN_COIN (BUTTON_RC_MODE | BUTTON_RC_DOWN)
#define PACMAN_MENU BUTTON_POWER
+#elif CONFIG_KEYPAD == COWOND2_PAD
+
+#define PACMAN_UP BUTTON_UP
+#define PACMAN_DOWN BUTTON_DOWN
+#define PACMAN_LEFT BUTTON_LEFT
+#define PACMAN_RIGHT BUTTON_RIGHT
+#define PACMAN_1UP BUTTON_MINUS
+#define PACMAN_2UP BUTTON_PLUS
+#define PACMAN_COIN_PRE BUTTON_SELECT
+#define PACMAN_COIN (BUTTON_MENU | BUTTON_SELECT)
+#define PACMAN_MENU BUTTON_MENU
+
#else
#error Keymap not defined!
diff --git a/apps/plugins/plasma.c b/apps/plugins/plasma.c
index b54e6a9ed2..d5c1ef427f 100644
--- a/apps/plugins/plasma.c
+++ b/apps/plugins/plasma.c
@@ -86,6 +86,10 @@ static int plasma_frequency;
#define PLASMA_QUIT BUTTON_POWER
#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define PLASMA_QUIT BUTTON_POWER
+#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
+#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN
#else
#define PLASMA_QUIT BUTTON_OFF
#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
@@ -111,6 +115,8 @@ static int plasma_frequency;
#define PLASMA_REGEN_COLORS BUTTON_SELECT
#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
#define PLASMA_REGEN_COLORS BUTTON_SELECT
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define PLASMA_REGEN_COLORS BUTTON_SELECT
#endif
#endif
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index 707f107d3b..b1e53d3dcc 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -146,6 +146,13 @@ PLUGIN_HEADER
#define PONG_RIGHT_UP BUTTON_VOL_UP
#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define PONG_QUIT BUTTON_POWER
+#define PONG_LEFT_UP BUTTON_UP
+#define PONG_LEFT_DOWN BUTTON_DOWN
+#define PONG_RIGHT_UP BUTTON_LEFT
+#define PONG_RIGHT_DOWN BUTTON_RIGHT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h
index de2286e5df..185c2923ca 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -132,6 +132,15 @@
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_RC_PLAY
#define REVERSI_BUTTON_MENU BUTTON_RC_MENU
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define REVERSI_QUIT BUTTON_POWER
+#define REVERSI_BUTTON_UP BUTTON_UP
+#define REVERSI_BUTTON_DOWN BUTTON_DOWN
+#define REVERSI_BUTTON_LEFT BUTTON_LEFT
+#define REVERSI_BUTTON_RIGHT BUTTON_RIGHT
+#define REVERSI_BUTTON_MAKE_MOVE BUTTON_SELECT
+#define REVERSI_BUTTON_MENU BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index f0bdd2a510..82fb758dee 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -211,6 +211,16 @@ PLUGIN_HEADER
#define ROCKBLOX_DROP BUTTON_RC_PLAY
#define ROCKBLOX_RESTART BUTTON_RC_MODE
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define ROCKBLOX_OFF BUTTON_POWER
+#define ROCKBLOX_ROTATE_RIGHT BUTTON_PLUS
+#define ROCKBLOX_ROTATE_LEFT BUTTON_MINUS
+#define ROCKBLOX_DOWN BUTTON_DOWN
+#define ROCKBLOX_LEFT BUTTON_LEFT
+#define ROCKBLOX_RIGHT BUTTON_RIGHT
+#define ROCKBLOX_DROP BUTTON_SELECT
+#define ROCKBLOX_RESTART BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index 4ccfdbf872..2583fa3376 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -197,6 +197,15 @@ static void setoptions (void)
options.START=BUTTON_RC_HEART;
options.SELECT=BUTTON_RC_MODE;
options.MENU=BUTTON_POWER;
+#elif CONFIG_KEYPAD == COWOND2_PAD
+ options.UP=BUTTON_UP;
+ options.DOWN=BUTTON_DOWN;
+
+ options.A=BUTTON_LEFT;
+ options.B=BUTTON_RIGHT;
+ options.START=BUTTON_PLUS;
+ options.SELECT=BUTTON_SELECT;
+ options.MENU=BUTTON_MENU;
#else
#error No Keymap Defined!
#endif
diff --git a/apps/plugins/rockpaint.c b/apps/plugins/rockpaint.c
index 2b37a97dd8..7d5b5cbaa8 100644
--- a/apps/plugins/rockpaint.c
+++ b/apps/plugins/rockpaint.c
@@ -116,6 +116,17 @@ PLUGIN_HEADER
#define ROCKPAINT_LEFT BUTTON_LEFT
#define ROCKPAINT_RIGHT BUTTON_RIGHT
+#elif ( CONFIG_KEYPAD == COWOND2_PAD )
+#define ROCKPAINT_QUIT BUTTON_POWER
+#define ROCKPAINT_DRAW BUTTON_SELECT
+#define ROCKPAINT_MENU BUTTON_MENU
+#define ROCKPAINT_TOOLBAR BUTTON_PLUS
+#define ROCKPAINT_TOOLBAR2 BUTTON_MINUS
+#define ROCKPAINT_UP BUTTON_UP
+#define ROCKPAINT_DOWN BUTTON_DOWN
+#define ROCKPAINT_LEFT BUTTON_LEFT
+#define ROCKPAINT_RIGHT BUTTON_RIGHT
+
#else
#error "Please define keys for this keypad"
#endif
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index 8d57ede13c..00dd00e965 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -138,6 +138,15 @@ PLUGIN_HEADER
#define PUZZLE_SHUFFLE BUTTON_RC_MODE
#define PUZZLE_PICTURE BUTTON_RC_MENU
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define PUZZLE_QUIT BUTTON_POWER
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
+#define PUZZLE_UP BUTTON_UP
+#define PUZZLE_DOWN BUTTON_DOWN
+#define PUZZLE_SHUFFLE BUTTON_MENU
+#define PUZZLE_PICTURE BUTTON_SELECT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index f414761ae3..51d5f5a9e8 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -140,6 +140,14 @@ PLUGIN_HEADER
#define SNAKE_RC_QUIT BUTTON_REC
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define SNAKE_QUIT BUTTON_POWER
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
+#define SNAKE_UP BUTTON_UP
+#define SNAKE_DOWN BUTTON_DOWN
+#define SNAKE_PLAYPAUSE BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index 07e3991c3b..0c2b88868c 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -288,6 +288,20 @@ PLUGIN_HEADER
#define SNAKE2_PLAYPAUSE BUTTON_RC_PLAY
#define SNAKE2_PLAYPAUSE_TEXT "Play"
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define SNAKE2_LEFT BUTTON_LEFT
+#define SNAKE2_RIGHT BUTTON_RIGHT
+#define SNAKE2_UP BUTTON_UP
+#define SNAKE2_DOWN BUTTON_DOWN
+#define SNAKE2_QUIT BUTTON_POWER
+#define SNAKE2_LEVEL_UP BUTTON_UP
+#define SNAKE2_LEVEL_DOWN BUTTON_DOWN
+#define SNAKE2_MAZE_NEXT BUTTON_RIGHT
+#define SNAKE2_MAZE_LAST BUTTON_LEFT
+#define SNAKE2_SELECT_TYPE BUTTON_MENU
+#define SNAKE2_PLAYPAUSE BUTTON_SELECT
+#define SNAKE2_PLAYPAUSE_TEXT "Select"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c
index 43a7d00cd5..6550050646 100644
--- a/apps/plugins/snow.c
+++ b/apps/plugins/snow.c
@@ -60,6 +60,8 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
#define SNOW_QUIT BUTTON_REC
#define SNOW_RC_QUIT BUTTON_RC_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define SNOW_QUIT BUTTON_POWER
#else
#define SNOW_QUIT BUTTON_OFF
#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index d665a0a622..d4e33f163c 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -277,6 +277,22 @@ extern const fb_data sokoban_tiles[];
#define SOKOBAN_RC_MENU BUTTON_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define SOKOBAN_LEFT BUTTON_LEFT
+#define SOKOBAN_RIGHT BUTTON_RIGHT
+#define SOKOBAN_UP BUTTON_UP
+#define SOKOBAN_DOWN BUTTON_DOWN
+#define SOKOBAN_MENU BUTTON_MENU
+#define SOKOBAN_UNDO_PRE BUTTON_PLUS
+#define SOKOBAN_UNDO (BUTTON_LEFT|BUTTON_MENU)
+#define SOKOBAN_REDO (BUTTON_RIGHT | BUTTON_MENU)
+#define SOKOBAN_LEVEL_DOWN (BUTTON_MENU | BUTTON_DOWN)
+#define SOKOBAN_LEVEL_UP (BUTTON_MENU | BUTTON_UP)
+#define SOKOBAN_LEVEL_REPEAT (BUTTON_SELECT|BUTTON_MENU)
+#define SOKOBAN_PAUSE BUTTON_SELECT
+#define BUTTON_SAVE BUTTON_SELECT
+#define BUTTON_SAVE_NAME "SELECT"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 62f60c7eb4..6cb995ffba 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -298,6 +298,27 @@ static struct plugin_api* rb;
# define HK_CUR2STACK "MODE"
# define HK_REM2STACK "MODE.."
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+# define SOL_QUIT BUTTON_POWER
+# define SOL_UP BUTTON_UP
+# define SOL_DOWN BUTTON_DOWN
+# define SOL_LEFT_PRE BUTTON_LEFT
+# define SOL_LEFT (BUTTON_LEFT | BUTTON_REL)
+# define SOL_RIGHT_PRE BUTTON_RIGHT
+# define SOL_RIGHT (BUTTON_RIGHT | BUTTON_REL)
+# define SOL_MOVE BUTTON_SELECT
+# define SOL_DRAW_PRE BUTTON_LEFT
+# define SOL_DRAW (BUTTON_LEFT | BUTTON_MENU)
+# define SOL_REM2CUR BUTTON_PLUS
+# define SOL_CUR2STACK BUTTON_MINUS
+# define SOL_REM2STACK_PRE BUTTON_RIGHT
+# define SOL_REM2STACK (BUTTON_RIGHT | BUTTON_MENU)
+# define HK_MOVE "PLAY"
+# define HK_DRAW "LEFT.."
+# define HK_REM2CUR "FF"
+# define HK_CUR2STACK "REW"
+# define HK_REM2STACK "RIGHT.."
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 7de18e5459..5c01c1680f 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -200,6 +200,19 @@ static struct plugin_api* rb; /* global api struct pointer */
#define AST_FIRE BUTTON_RC_MODE
#define AST_FIRE_REP (BUTTON_RC_MODE | BUTTON_REPEAT)
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define AST_PAUSE BUTTON_SELECT
+#define AST_QUIT BUTTON_POWER
+#define AST_THRUST_REP BUTTON_UP | BUTTON_MENU
+#define AST_THRUST BUTTON_UP
+#define AST_HYPERSPACE BUTTON_DOWN
+#define AST_LEFT BUTTON_LEFT
+#define AST_LEFT_REP BUTTON_LEFT | BUTTON_MENU
+#define AST_RIGHT BUTTON_RIGHT
+#define AST_RIGHT_REP (BUTTON_RIGHT | BUTTON_MENU)
+#define AST_FIRE BUTTON_PLUS
+#define AST_FIRE_REP BUTTON_PLUS | BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index 04b6642ede..efa8d4e6af 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -225,6 +225,19 @@ PLUGIN_HEADER
#define STAR_LEVEL_REPEAT (BUTTON_RC_PLAY|BUTTON_RC_MENU)
#define STAR_MENU_RUN BUTTON_RC_FF
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+
+#define STAR_QUIT BUTTON_POWER
+#define STAR_LEFT BUTTON_LEFT
+#define STAR_RIGHT BUTTON_RIGHT
+#define STAR_UP BUTTON_UP
+#define STAR_DOWN BUTTON_DOWN
+#define STAR_TOGGLE_CONTROL BUTTON_SELECT
+#define STAR_LEVEL_UP BUTTON_PLUS
+#define STAR_LEVEL_DOWN BUTTON_MINUS
+#define STAR_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_MENU)
+#define STAR_MENU_RUN BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/starfield.c b/apps/plugins/starfield.c
index 163d72ba39..4f2c8b1bbe 100644
--- a/apps/plugins/starfield.c
+++ b/apps/plugins/starfield.c
@@ -86,6 +86,13 @@ static struct plugin_api* rb; /* global api struct pointer */
#define STARFIELD_INCREASE_NB_STARS BUTTON_RC_FF
#define STARFIELD_DECREASE_NB_STARS BUTTON_RC_REW
#define STARFIELD_TOGGLE_COLOR BUTTON_RC_MODE
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define STARFIELD_QUIT BUTTON_POWER
+#define STARFIELD_INCREASE_ZMOVE BUTTON_UP
+#define STARFIELD_DECREASE_ZMOVE BUTTON_DOWN
+#define STARFIELD_INCREASE_NB_STARS BUTTON_RIGHT
+#define STARFIELD_DECREASE_NB_STARS BUTTON_LEFT
+#define STARFIELD_TOGGLE_COLOR BUTTON_MENU
#else
#define STARFIELD_QUIT BUTTON_OFF
diff --git a/apps/plugins/stats.c b/apps/plugins/stats.c
index e72b4bc2f5..a65fde4704 100644
--- a/apps/plugins/stats.c
+++ b/apps/plugins/stats.c
@@ -73,6 +73,9 @@ static bool abort;
#define STATS_STOP BUTTON_REC
#define STATS_STOP_REMOTE BUTTON_RC_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define STATS_STOP BUTTON_POWER
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index ac3c7b70fb..d4d890df0d 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -144,6 +144,13 @@ PLUGIN_HEADER
#define STOPWATCH_SCROLL_UP BUTTON_RC_VOL_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_RC_VOL_DOWN
#define STOPWATCH_RC_QUIT BUTTON_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define STOPWATCH_QUIT BUTTON_POWER
+#define STOPWATCH_START_STOP BUTTON_SELECT
+#define STOPWATCH_RESET_TIMER BUTTON_MENU
+#define STOPWATCH_LAP_TIMER BUTTON_PLUS
+#define STOPWATCH_SCROLL_UP BUTTON_UP
+#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index 8c2759796a..3fc8dbe0e0 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -170,6 +170,16 @@
#define SUDOKU_BUTTON_MENU BUTTON_RC_MENU
#define SUDOKU_BUTTON_POSSIBLE BUTTON_RC_PLAY
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+#define SUDOKU_BUTTON_QUIT BUTTON_POWER
+#define SUDOKU_BUTTON_UP BUTTON_UP
+#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
+#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
+#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
+#define SUDOKU_BUTTON_TOGGLE BUTTON_PLUS
+#define SUDOKU_BUTTON_MENU BUTTON_MENU
+#define SUDOKU_BUTTON_POSSIBLE BUTTON_MINUS
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/superdom.c b/apps/plugins/superdom.c
index 794ea9e8f0..e3f35f91ac 100644
--- a/apps/plugins/superdom.c
+++ b/apps/plugins/superdom.c
@@ -127,6 +127,14 @@ char buf[255];
#define SUPERDOM_RIGHT BUTTON_RIGHT
#define SUPERDOM_CANCEL BUTTON_BACK
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define SUPERDOM_OK BUTTON_SELECT
+#define SUPERDOM_UP BUTTON_UP
+#define SUPERDOM_LEFT BUTTON_LEFT
+#define SUPERDOM_RIGHT BUTTON_RIGHT
+#define SUPERDOM_DOWN BUTTON_DOWN
+#define SUPERDOM_CANCEL BUTTON_MENU
+
#endif
#define SUPERDOM_QUIT 23
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c
index a7be5db33c..a4619269e5 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -244,6 +244,15 @@ PLUGIN_HEADER
#define VIEWER_RC_QUIT BUTTON_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define VIEWER_QUIT BUTTON_POWER
+#define VIEWER_PAGE_UP BUTTON_UP
+#define VIEWER_PAGE_DOWN BUTTON_DOWN
+#define VIEWER_SCREEN_LEFT BUTTON_LEFT
+#define VIEWER_SCREEN_RIGHT BUTTON_RIGHT
+#define VIEWER_MENU BUTTON_MENU
+#define VIEWER_AUTOSCROLL BUTTON_SELECT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 9f0957895a..9773d92d9c 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -148,6 +148,15 @@ PLUGIN_HEADER
#define VUMETER_UP BUTTON_RC_VOL_UP
#define VUMETER_DOWN BUTTON_RC_VOL_DOWN
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define VUMETER_QUIT BUTTON_POWER
+#define VUMETER_HELP BUTTON_SELECT
+#define VUMETER_MENU BUTTON_MENU
+#define VUMETER_MENU_EXIT BUTTON_LEFT
+#define VUMETER_MENU_EXIT2 BUTTON_POWER
+#define VUMETER_UP BUTTON_UP
+#define VUMETER_DOWN BUTTON_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 0da929d0a3..68b31a1a7c 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -215,6 +215,19 @@ PLUGIN_HEADER
#define PLAYERS_TEXT "VOL UP/DN"
#define WORMS_TEXT "REW/FF"
+#elif (CONFIG_KEYPAD == COWOND2_PAD)
+
+#define BTN_DIR_UP BUTTON_UP
+#define BTN_DIR_DOWN BUTTON_DOWN
+#define BTN_DIR_LEFT BUTTON_LEFT
+#define BTN_DIR_RIGHT BUTTON_RIGHT
+#define BTN_STARTPAUSE BUTTON_SELECT
+#define BTN_QUIT BUTTON_POWER
+#define BTN_STOPRESET BUTTON_PLUS
+
+#define PLAYERS_TEXT "Up/Down"
+#define WORMS_TEXT "Left/Right"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index d0d8049900..743dd41362 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -139,6 +139,15 @@ PLUGIN_HEADER
#define DOWN BUTTON_RC_VOL_DOWN
#define PAUSE BUTTON_RC_PLAY
+#elif CONFIG_KEYPAD == COWOND2_PAD
+
+#define QUIT BUTTON_POWER
+#define LEFT BUTTON_LEFT
+#define RIGHT BUTTON_RIGHT
+#define UP BUTTON_UP
+#define DOWN BUTTON_DOWN
+#define PAUSE BUTTON_SELECT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index 19503e1c78..791149c86c 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -102,6 +102,14 @@
#define ZX_SELECT BUTTON_RC_PLAY
#define ZX_MENU BUTTON_RC_REC
+#elif CONFIG_KEYPAD == COWOND2_PAD
+#define ZX_UP BUTTON_UP
+#define ZX_DOWN BUTTON_DOWN
+#define ZX_LEFT BUTTON_LEFT
+#define ZX_RIGHT BUTTON_RIGHT
+#define ZX_SELECT BUTTON_SELECT
+#define ZX_MENU BUTTON_MENU
+
#else
#error Keymap not defined!
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c
index e3fb92c43d..f1de0a051c 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -122,6 +122,17 @@
#define KBD_UP BUTTON_RC_VOL_UP
#define KBD_DOWN BUTTON_RC_VOL_DOWN
+#elif CONFIG_KEYPAD == COWOND2_PAD
+
+/* TODO: Check keyboard mappings */
+
+#define KBD_SELECT BUTTON_SELECT
+#define KBD_ABORT BUTTON_POWER
+#define KBD_LEFT BUTTON_LEFT
+#define KBD_RIGHT BUTTON_RIGHT
+#define KBD_UP BUTTON_UP
+#define KBD_DOWN BUTTON_DOWN
+
#endif
diff --git a/docs/CREDITS b/docs/CREDITS
index 8504a668d8..7fa1ccc69e 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -381,7 +381,8 @@ Mark Fawcus
Ivan Pesic
Marcel Barbulescu
Phil Light
-
+Rob Purchase
+Andreas Müller
The libmad team
The wavpack team
diff --git a/tools/configure b/tools/configure
index 68a9483c99..ed6a5d3890 100755
--- a/tools/configure
+++ b/tools/configure
@@ -1249,7 +1249,7 @@ EOF
bmp2rb_remotenative="$rootdir/tools/bmp2rb -f 0"
output="rockbox.iaudio"
appextra="recorder:gui"
- plugins=""
+ plugins="yes"
swcodec="yes"
toolset="$tccbitmaptools"
# architecture, manufacturer and model for the target-tree build