summaryrefslogtreecommitdiffstats
path: root/apps/plugins
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2008-12-04 21:28:56 +0000
committerBjörn Stenberg <bjorn@haxx.se>2008-12-04 21:28:56 +0000
commitcea285d64e34f8c2ecce676f6239b59608597019 (patch)
treeaba19ec8c3b1d53ef2a8915ee5f5ed5500fd653f /apps/plugins
parent203722136c5f50d7deab432739e991faa48e470f (diff)
downloadrockbox-cea285d64e34f8c2ecce676f6239b59608597019.tar.gz
rockbox-cea285d64e34f8c2ecce676f6239b59608597019.tar.bz2
rockbox-cea285d64e34f8c2ecce676f6239b59608597019.zip
Added keymaps for ZVM to plugins. Enabled zvm plugin building in tools/configure. FS#9605 by Adam Hogan and Robert Menes.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19335 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-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.c11
-rw-r--r--apps/plugins/chessbox/chessbox_pgn.h11
-rw-r--r--apps/plugins/chessclock.c10
-rw-r--r--apps/plugins/chip8.c12
-rw-r--r--apps/plugins/chopper.c6
-rw-r--r--apps/plugins/cube.c10
-rw-r--r--apps/plugins/dict.c2
-rw-r--r--apps/plugins/doom/i_video.c11
-rw-r--r--apps/plugins/fireworks.c3
-rw-r--r--apps/plugins/flipit.c12
-rw-r--r--apps/plugins/invadrox.c7
-rw-r--r--apps/plugins/jewels.c10
-rw-r--r--apps/plugins/jpeg/jpeg.h12
-rw-r--r--apps/plugins/lib/pluginlib_actions.c19
-rw-r--r--apps/plugins/logo.c7
-rw-r--r--apps/plugins/mandelbrot.c12
-rw-r--r--apps/plugins/matrix.c5
-rw-r--r--apps/plugins/midi/midiplay.c8
-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.c11
-rw-r--r--apps/plugins/pacbox/pacbox.h11
-rw-r--r--apps/plugins/pegbox.c18
-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/rockblox1d.c4
-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.c15
-rw-r--r--apps/plugins/solitaire.c18
-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.c10
-rw-r--r--apps/plugins/vu_meter.c12
-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.c10
56 files changed, 528 insertions, 3 deletions
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index a74a1cf328..b951b01432 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -160,6 +160,13 @@ PLUGIN_HEADER
#define BATTERY_OFF_TXT "POWER"
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_ON_TXT "PLAY - start"
+
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define BATTERY_ON BUTTON_PLAY
+#define BATTERY_ON_TXT "PLAY - start"
+#define BATTERY_OFF BUTTON_BACK
+#define BATTERY_OFF_TXT "BACK"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index ef90a8fed4..6536745f38 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -272,6 +272,21 @@ PLUGIN_HEADER
#define BJACK_DOUBLEDOWN BUTTON_MINUS
#define BJACK_SCORES BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define BJACK_START BUTTON_SELECT
+#define BJACK_QUIT BUTTON_BACK
+#define BJACK_MAX (BUTTON_SELECT|BUTTON_UP)
+#define BJACK_MIN (BUTTON_SELECT|BUTTON_DOWN)
+#define BJACK_HIT BUTTON_LEFT
+#define BJACK_STAY BUTTON_RIGHT
+#define BJACK_DOUBLEDOWN BUTTON_CUSTOM
+#define BJACK_SCORES BUTTON_RIGHT
+#define BJACK_RESUME BUTTON_MENU
+#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 c93d1a082a..2164636b7d 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -144,6 +144,14 @@ PLUGIN_HEADER
#define BOUNCE_QUIT BUTTON_POWER
#define BOUNCE_MODE BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_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_BACK
+#define BOUNCE_MODE BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index 0df7b32fa6..1a9db8acbb 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -169,6 +169,15 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == COWOND2_PAD
#define QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+
+#define QUIT BUTTON_BACK
+#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 0207688c6d..c7722e3777 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -285,6 +285,17 @@ PLUGIN_HEADER
#define CALCULATOR_RC_QUIT (BUTTON_MENU|BUTTON_PLAY)
+#elif (CONFIG_KEYPAD == CREATIVEZVM_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_BACK
+#define CALCULATOR_INPUT BUTTON_SELECT
+#define CALCULATOR_CALC BUTTON_MENU
+#define CALCULATOR_CLEAR BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h
index 88d12c787f..35ac8daaf7 100644
--- a/apps/plugins/chessbox/chessbox_pgn.h
+++ b/apps/plugins/chessbox/chessbox_pgn.h
@@ -284,6 +284,17 @@
#define CB_RESTART BUTTON_MINUS
#define CB_MENU (BUTTON_MENU|BUTTON_REL)
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+
+#define CB_SELECT BUTTON_PLAY
+#define CB_UP BUTTON_UP
+#define CB_DOWN BUTTON_DOWN
+#define CB_LEFT BUTTON_LEFT
+#define CB_RIGHT BUTTON_RIGHT
+#define CB_PLAY BUTTON_SELECT
+#define CB_LEVEL BUTTON_CUSTOM
+#define CB_MENU BUTTON_MENU
+
#else
#error No keymap defined!
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 3e22676d8b..47d8345edf 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -202,6 +202,16 @@ PLUGIN_HEADER
#define CHC_SETTINGS_OK2 BUTTON_LEFT
#define CHC_SETTINGS_CANCEL BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define CHC_QUIT BUTTON_BACK
+#define CHC_STARTSTOP BUTTON_SELECT
+#define CHC_RESET BUTTON_CUSTOM
+#define CHC_MENU BUTTON_MENU
+#define CHC_SETTINGS_INC BUTTON_UP
+#define CHC_SETTINGS_DEC BUTTON_DOWN
+#define CHC_SETTINGS_OK BUTTON_PLAY
+#define CHC_SETTINGS_CANCEL BUTTON_BACK
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index 9ce18b582b..c5c46d54b2 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1082,6 +1082,18 @@ STATIC void chip8 (void)
#elif (CONFIG_KEYPAD == COWOND2_PAD)
#define CHIP8_OFF BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define CHIP8_OFF BUTTON_POWER
+#define CHIP8_KEY1 BUTTON_MENU
+#define CHIP8_KEY2 BUTTON_UP
+#define CHIP8_KEY3 BUTTON_BACK
+#define CHIP8_KEY4 BUTTON_LEFT
+#define CHIP8_KEY5 BUTTON_SELECT
+#define CHIP8_KEY6 BUTTON_RIGHT
+#define CHIP8_KEY7 BUTTON_CUSTOM
+#define CHIP8_KEY8 BUTTON_DOWN
+#define CHIP8_KEY9 BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index b2fab7e07a..b827c7125a 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -114,6 +114,12 @@ Still To do:
#define ACTION2 BUTTON_STOP
#define ACTIONTEXT "PLAY"
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define QUIT BUTTON_BACK
+#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 fde3b7583c..3e27cbb053 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -215,6 +215,16 @@ PLUGIN_HEADER
#define CUBE_PAUSE BUTTON_PLAY
#define CUBE_HIGHSPEED BUTTON_STOP
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define CUBE_QUIT BUTTON_BACK
+#define CUBE_NEXT BUTTON_RIGHT
+#define CUBE_PREV BUTTON_LEFT
+#define CUBE_INC BUTTON_UP
+#define CUBE_DEC BUTTON_DOWN
+#define CUBE_MODE BUTTON_MENU
+#define CUBE_PAUSE BUTTON_PLAY
+#define CUBE_HIGHSPEED BUTTON_SELECT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/dict.c b/apps/plugins/dict.c
index eb1f3df5db..3004218f23 100644
--- a/apps/plugins/dict.c
+++ b/apps/plugins/dict.c
@@ -135,6 +135,8 @@ long reverse (long N) {
#define LP_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == IAUDIO67_PAD
#define LP_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define LP_QUIT BUTTON_BACK
#else
#define LP_QUIT BUTTON_OFF
#endif
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index 7713fe19f2..58edcbd3fc 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -277,6 +277,17 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_SHOOT BUTTON_VOLUP
#define DOOMBUTTON_OPEN BUTTON_VOLDOWN
#define DOOMBUTTON_ENTER BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define DOOMBUTTON_UP BUTTON_UP
+#define DOOMBUTTON_DOWN BUTTON_DOWN
+#define DOOMBUTTON_LEFT BUTTON_LEFT
+#define DOOMBUTTON_RIGHT BUTTON_RIGHT
+#define DOOMBUTTON_SHOOT BUTTON_PLAY
+#define DOOMBUTTON_OPEN BUTTON_SELECT
+#define DOOMBUTTON_ESC BUTTON_POWER
+#define DOOMBUTTON_ENTER BUTTON_CUSTOM
+#define DOOMBUTTON_WEAPON BUTTON_MENU
+#define DOOMBUTTON_MAP BUTTON_BACK
#else
#error Keymap not defined!
#endif
diff --git a/apps/plugins/fireworks.c b/apps/plugins/fireworks.c
index 5134d01538..aeb49a272f 100644
--- a/apps/plugins/fireworks.c
+++ b/apps/plugins/fireworks.c
@@ -76,6 +76,9 @@ static const struct plugin_api* rb;
#elif CONFIG_KEYPAD == IAUDIO67_PAD
#define BTN_MENU BUTTON_MENU
#define BTN_FIRE BUTTON_PLAY
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define BTN_MENU BUTTON_MENU
+#define BTN_FIRE BUTTON_PLAY
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 23f4675fae..f95644e064 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -224,6 +224,18 @@ PLUGIN_HEADER
#define FLIPIT_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_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_BACK
+#define FLIPIT_SHUFFLE BUTTON_CUSTOM
+#define FLIPIT_SOLVE BUTTON_SELECT
+#define FLIPIT_STEP_BY_STEP BUTTON_MENU
+#define FLIPIT_TOGGLE BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c
index 8b73221331..3dbe5c539d 100644
--- a/apps/plugins/invadrox.c
+++ b/apps/plugins/invadrox.c
@@ -127,6 +127,13 @@ PLUGIN_HEADER
#define RIGHT BUTTON_RIGHT
#define FIRE BUTTON_PLAY
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+
+#define QUIT BUTTON_BACK
+#define LEFT BUTTON_LEFT
+#define RIGHT BUTTON_RIGHT
+#define FIRE BUTTON_PLAY
+
#else
#error INVADROX: Unsupported keypad
#endif
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index 9d6400c9a9..c4ddcdf1c8 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -161,6 +161,14 @@ PLUGIN_HEADER
#define JEWELS_SELECT BUTTON_MENU
#define JEWELS_CANCEL BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_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_BACK
+
#else
#error No keymap defined!
#endif
@@ -1604,7 +1612,7 @@ static int jewels_main(struct game_context* bj) {
rb->lcd_puts(0, 12, "REC to cancel");
#elif CONFIG_KEYPAD == COWOND2_PAD
rb->lcd_puts(0, 11, "POWER to cancel");
-#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
+#elif CONFIG_KEYPAD == GIGABEAT_S_PAD || CREATIVEZVM_PAD
rb->lcd_puts(0, 2, "Swap pairs of jewels to");
rb->lcd_puts(0, 3, "form connected segments");
rb->lcd_puts(0, 4, "of three or more of the");
diff --git a/apps/plugins/jpeg/jpeg.h b/apps/plugins/jpeg/jpeg.h
index 154e2dd68a..db07b12b1f 100644
--- a/apps/plugins/jpeg/jpeg.h
+++ b/apps/plugins/jpeg/jpeg.h
@@ -233,6 +233,18 @@
#define JPEG_NEXT (BUTTON_PLAY|BUTTON_VOLUP)
#define JPEG_PREVIOUS (BUTTON_PLAY|BUTTON_VOLDOWN)
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+
+#define JPEG_ZOOM_IN BUTTON_PLAY
+#define JPEG_ZOOM_OUT BUTTON_SELECT
+#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_CUSTOM
+#define JPEG_PREVIOUS BUTTON_BACK
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index a8a4e9c2c3..62b264d0b8 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -88,7 +88,8 @@ const struct button_mapping generic_directions[] =
|| (CONFIG_KEYPAD == GIGABEAT_S_PAD) \
|| (CONFIG_KEYPAD == MROBE100_PAD) \
|| (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \
- || (CONFIG_KEYPAD == SANSA_CLIP_PAD)
+ || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
+ || (CONFIG_KEYPAD == CREATIVEZVM_PAD)
{ PLA_UP, BUTTON_UP, BUTTON_NONE},
{ PLA_DOWN, BUTTON_DOWN, BUTTON_NONE},
{ PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
@@ -275,6 +276,13 @@ const struct button_mapping generic_left_right_fire[] =
{ PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_FIRE, BUTTON_MENU, BUTTON_NONE},
{ PLA_FIRE_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
+#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD)
+ { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
+ { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
+ { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
+ { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
+ { PLA_FIRE, BUTTON_PLAY, BUTTON_NONE},
+ { PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
#else
#error pluginlib_actions: Unsupported keypad
#endif
@@ -415,6 +423,12 @@ const struct button_mapping generic_actions[] =
{PLA_MENU, BUTTON_MENU, BUTTON_NONE},
{PLA_FIRE, BUTTON_VOLUP, BUTTON_NONE},
{PLA_FIRE_REPEAT, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE},
+#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD)
+ {PLA_QUIT, BUTTON_BACK, BUTTON_NONE},
+ {PLA_START, BUTTON_PLAY, BUTTON_NONE},
+ {PLA_MENU, BUTTON_MENU, BUTTON_NONE},
+ {PLA_FIRE, BUTTON_PLAY, BUTTON_NONE},
+ {PLA_FIRE_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
#else
#error pluginlib_actions: Unsupported keypad
#endif
@@ -440,7 +454,8 @@ const struct button_mapping generic_increase_decrease[] =
|| (CONFIG_KEYPAD == GIGABEAT_S_PAD) \
|| (CONFIG_KEYPAD == MROBE100_PAD) \
|| (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \
- || (CONFIG_KEYPAD == SANSA_CLIP_PAD)
+ || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
+ || (CONFIG_KEYPAD == CREATIVEZVM_PAD)
{PLA_INC, BUTTON_UP, BUTTON_NONE},
{PLA_DEC, BUTTON_DOWN, BUTTON_NONE},
{PLA_INC_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE},
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c
index 756a12b289..846d3214df 100644
--- a/apps/plugins/logo.c
+++ b/apps/plugins/logo.c
@@ -148,6 +148,13 @@ const unsigned char rockbox16x7[] = {
#define LP_DEC_Y BUTTON_PLAY
#define LP_INC_Y BUTTON_STOP
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define LP_QUIT BUTTON_BACK
+#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 0ded230d92..9389d05fca 100644
--- a/apps/plugins/mandelbrot.c
+++ b/apps/plugins/mandelbrot.c
@@ -235,6 +235,18 @@ PLUGIN_HEADER
#elif CONFIG_KEYPAD == COWOND2_PAD
#define MANDELBROT_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_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 BUTTON_SELECT
+#define MANDELBROT_ZOOM_OUT BUTTON_MENU
+#define MANDELBROT_MAXITER_INC BUTTON_CUSTOM
+#define MANDELBROT_MAXITER_DEC BUTTON_BACK
+#define MANDELBROT_RESET BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/matrix.c b/apps/plugins/matrix.c
index 93565596dd..99b731d937 100644
--- a/apps/plugins/matrix.c
+++ b/apps/plugins/matrix.c
@@ -104,6 +104,11 @@ extern const fb_data matrix_normal[];
#define MATRIX_SLEEP_MORE BUTTON_VOLUP
#define MATRIX_SLEEP_LESS BUTTON_VOLDOWN
#define MATRIX_PAUSE BUTTON_PLAY
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define MATRIX_EXIT BUTTON_BACK
+#define MATRIX_SLEEP_MORE BUTTON_UP
+#define MATRIX_SLEEP_LESS BUTTON_DOWN
+#define MATRIX_PAUSE BUTTON_PLAY
#else
#error Unsupported keypad
#endif
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index c33ff3e725..4ecc477ac4 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -157,6 +157,14 @@ PLUGIN_IRAM_DECLARE
#define BTN_DOWN BUTTON_PLAY
#define BTN_PLAY BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define BTN_QUIT BUTTON_BACK
+#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 683084921b..870fb18af6 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -188,6 +188,16 @@ enum minesweeper_status {
#elif (CONFIG_KEYPAD == COWOND2_PAD)
# define MINESWP_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_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_BACK
+# define MINESWP_TOGGLE BUTTON_PLAY
+# define MINESWP_DISCOVER BUTTON_SELECT
+# define MINESWP_INFO BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c
index 6a27641f84..294d7931f4 100644
--- a/apps/plugins/mosaique.c
+++ b/apps/plugins/mosaique.c
@@ -132,6 +132,11 @@ PLUGIN_HEADER
#define MOSAIQUE_SPEED BUTTON_PLAY
#define MOSAIQUE_RESTART BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define MOSAIQUE_QUIT BUTTON_BACK
+#define MOSAIQUE_SPEED BUTTON_MENU
+#define MOSAIQUE_RESTART BUTTON_SELECT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index adc557a534..406ab9a079 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2462,6 +2462,11 @@ void get_mp3_filename(const char *wav_name)
#define MP3ENC_NEXT BUTTON_RIGHT
#define MP3ENC_DONE BUTTON_POWER
#define MP3ENC_SELECT BUTTON_PLAY
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define MP3ENC_PREV BUTTON_UP
+#define MP3ENC_NEXT BUTTON_DOWN
+#define MP3ENC_DONE BUTTON_BACK
+#define MP3ENC_SELECT BUTTON_PLAY
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index dbb2c1e030..0ab710e578 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -132,6 +132,16 @@ struct mpeg_settings settings;
#define MPEG_START_TIME_DOWN BUTTON_PLAY
#define MPEG_START_TIME_EXIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define MPEG_START_TIME_SELECT BUTTON_PLAY
+#define MPEG_START_TIME_SCROLL_UP BUTTON_SELECT
+#define MPEG_START_TIME_SCROLL_DOWN BUTTON_MENU
+#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_BACK
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index 578c783072..faa25e3e7b 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -240,6 +240,15 @@ PLUGIN_IRAM_DECLARE
#define MPEG_RW BUTTON_LEFT
#define MPEG_FF BUTTON_RIGHT
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define MPEG_MENU BUTTON_MENU
+#define MPEG_STOP BUTTON_BACK
+#define MPEG_PAUSE BUTTON_SELECT
+#define MPEG_VOLDOWN BUTTON_UP
+#define MPEG_VOLUP BUTTON_DOWN
+#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 9c25dc3a64..b3a48bb67e 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -199,6 +199,17 @@ PLUGIN_HEADER
#define OSCILLOSCOPE_VOL_UP BUTTON_PLUS
#define OSCILLOSCOPE_VOL_DOWN BUTTON_MINUS
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define OSCILLOSCOPE_QUIT BUTTON_BACK
+#define OSCILLOSCOPE_DRAWMODE BUTTON_PLAY
+#define OSCILLOSCOPE_ADVMODE BUTTON_CUSTOM
+#define OSCILLOSCOPE_ORIENTATION BUTTON_MENU
+#define OSCILLOSCOPE_PAUSE BUTTON_SELECT
+#define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT
+#define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT
+#define OSCILLOSCOPE_VOL_UP BUTTON_UP
+#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/pacbox/pacbox.h b/apps/plugins/pacbox/pacbox.h
index f38831e608..e84f8d8318 100644
--- a/apps/plugins/pacbox/pacbox.h
+++ b/apps/plugins/pacbox/pacbox.h
@@ -159,6 +159,17 @@
#define PACMAN_COIN (BUTTON_MENU | BUTTON_PLAY)
#define PACMAN_MENU BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_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_CUSTOM
+#define PACMAN_2UP BUTTON_SELECT
+#define PACMAN_COIN BUTTON_PLAY
+#define PACMAN_MENU BUTTON_MENU
+
#else
#error Keymap not defined!
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c
index 4a98426e77..414e431a4d 100644
--- a/apps/plugins/pegbox.c
+++ b/apps/plugins/pegbox.c
@@ -300,6 +300,24 @@ PLUGIN_HEADER
#define PEGBOX_QUIT BUTTON_POWER
#define QUIT_TEXT "POWER"
+
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define PEGBOX_SAVE BUTTON_CUSTOM
+#define PEGBOX_QUIT BUTTON_BACK
+#define PEGBOX_RESTART BUTTON_PLAY
+#define PEGBOX_LVL_UP BUTTON_SELECT
+#define PEGBOX_LVL_DOWN BUTTON_MENU
+#define PEGBOX_UP BUTTON_UP
+#define PEGBOX_DOWN BUTTON_DOWN
+#define PEGBOX_RIGHT BUTTON_RIGHT
+#define PEGBOX_LEFT BUTTON_LEFT
+
+#define SAVE_TEXT "CUSTOM"
+#define QUIT_TEXT "BACK"
+#define RESTART_TEXT "MIDDLE"
+#define LVL_UP_TEXT "SELECT"
+#define LVL_DOWN_TEXT "MENU"
+
#else
#error Unsupported keymap!
#endif
diff --git a/apps/plugins/plasma.c b/apps/plugins/plasma.c
index a304058d20..036dbb474c 100644
--- a/apps/plugins/plasma.c
+++ b/apps/plugins/plasma.c
@@ -109,6 +109,12 @@ static int plasma_frequency;
#define PLASMA_RC_QUIT BUTTON_STOP
#define PLASMA_REGEN_COLORS BUTTON_PLAY
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define PLASMA_QUIT BUTTON_BACK
+#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
+#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN
+#define PLASMA_REGEN_COLORS BUTTON_PLAY
+
#endif
#ifdef HAVE_TOUCHSCREEN
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index 13a51c4ab4..63ae02b344 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -159,6 +159,13 @@ PLUGIN_HEADER
#define PONG_RIGHT_UP BUTTON_RIGHT
#define PONG_RIGHT_DOWN BUTTON_LEFT
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define PONG_QUIT BUTTON_BACK
+#define PONG_LEFT_UP BUTTON_UP
+#define PONG_LEFT_DOWN BUTTON_DOWN
+#define PONG_RIGHT_UP BUTTON_SELECT
+#define PONG_RIGHT_DOWN BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h
index 69d29d4f68..2aa949d40b 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -156,6 +156,15 @@
#define REVERSI_BUTTON_MAKE_MOVE BUTTON_VOLUP
#define REVERSI_BUTTON_MENU BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define REVERSI_BUTTON_QUIT BUTTON_BACK
+#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_PLAY
+#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 5170ab94d9..e88ee58401 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -240,6 +240,16 @@ PLUGIN_HEADER
#define ROCKBLOX_DROP BUTTON_PLAY
#define ROCKBLOX_RESTART BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define ROCKBLOX_OFF BUTTON_BACK
+#define ROCKBLOX_ROTATE_RIGHT BUTTON_UP
+#define ROCKBLOX_ROTATE_LEFT BUTTON_SELECT
+#define ROCKBLOX_DOWN BUTTON_DOWN
+#define ROCKBLOX_LEFT BUTTON_LEFT
+#define ROCKBLOX_RIGHT BUTTON_RIGHT
+#define ROCKBLOX_DROP BUTTON_PLAY
+#define ROCKBLOX_RESTART BUTTON_CUSTOM
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/rockblox1d.c b/apps/plugins/rockblox1d.c
index dd28e460f6..9978ed0816 100644
--- a/apps/plugins/rockblox1d.c
+++ b/apps/plugins/rockblox1d.c
@@ -86,6 +86,10 @@ CONFIG_KEYPAD == SANSA_CLIP_PAD
#define ONEDROCKBLOX_DOWN BUTTON_MENU
#define ONEDROCKBLOX_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define ONEDROCKBLOX_DOWN BUTTON_PLAY
+#define ONEDROCKBLOX_QUIT BUTTON_BACK
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index 1addef2e44..baec042031 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -220,6 +220,15 @@ static void setoptions (void)
options.START=BUTTON_PLAY;
options.SELECT=BUTTON_SELECT;
options.MENU=BUTTON_MENU;
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+ options.UP=BUTTON_UP;
+ options.DOWN=BUTTON_DOWN;
+
+ options.A=BUTTON_CUSTOM;
+ options.B=BUTTON_SELECT;
+ options.START=BUTTON_BACK;
+ options.SELECT=BUTTON_PLAY;
+ options.MENU=BUTTON_MENU;
#else
#error No Keymap Defined!
#endif
diff --git a/apps/plugins/rockpaint.c b/apps/plugins/rockpaint.c
index c9a0c6a840..a91bdc4e88 100644
--- a/apps/plugins/rockpaint.c
+++ b/apps/plugins/rockpaint.c
@@ -121,6 +121,17 @@ PLUGIN_HEADER
#define ROCKPAINT_QUIT BUTTON_POWER
#define ROCKPAINT_MENU BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define ROCKPAINT_QUIT BUTTON_BACK
+#define ROCKPAINT_DRAW BUTTON_PLAY
+#define ROCKPAINT_MENU BUTTON_MENU
+#define ROCKPAINT_TOOLBAR BUTTON_SELECT
+#define ROCKPAINT_TOOLBAR2 ( BUTTON_SELECT | BUTTON_LEFT )
+#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 fa5ba274a5..44c4c3a1b2 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -153,6 +153,15 @@ PLUGIN_HEADER
#define PUZZLE_QUIT BUTTON_POWER
#define PUZZLE_QUIT_TEXT "[POWER]"
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define PUZZLE_QUIT BUTTON_BACK
+#define PUZZLE_LEFT BUTTON_LEFT
+#define PUZZLE_RIGHT BUTTON_RIGHT
+#define PUZZLE_UP BUTTON_UP
+#define PUZZLE_DOWN BUTTON_DOWN
+#define PUZZLE_SHUFFLE BUTTON_SELECT
+#define PUZZLE_PICTURE BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index 584d9371b3..cbe50c8c12 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -146,6 +146,14 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == COWOND2_PAD)
#define SNAKE_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define SNAKE_QUIT BUTTON_BACK
+#define SNAKE_LEFT BUTTON_LEFT
+#define SNAKE_RIGHT BUTTON_RIGHT
+#define SNAKE_UP BUTTON_UP
+#define SNAKE_DOWN BUTTON_DOWN
+#define SNAKE_PLAYPAUSE BUTTON_SELECT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index 82ef41732d..50d2bb2388 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -307,6 +307,20 @@ PLUGIN_HEADER
#elif (CONFIG_KEYPAD == COWOND2_PAD)
#define SNAKE2_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_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_BACK
+#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 "Play"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c
index 2f88875050..4f8c3dce12 100644
--- a/apps/plugins/snow.c
+++ b/apps/plugins/snow.c
@@ -66,6 +66,8 @@ PLUGIN_HEADER
#define SNOW_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == IAUDIO67_PAD
#define SNOW_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define SNOW_QUIT BUTTON_BACK
#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 9a166a3fb4..4940ac24ab 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -314,6 +314,21 @@ PLUGIN_HEADER
#define SOKOBAN_RC_MENU (BUTTON_MENU|BUTTON_STOP)
+#elif CONFIG_KEYPAD == CREATIVEZVM_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 BUTTON_BACK
+#define SOKOBAN_REDO (BUTTON_BACK | BUTTON_PLAY)
+#define SOKOBAN_LEVEL_DOWN (BUTTON_SELECT | BUTTON_DOWN)
+#define SOKOBAN_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_RIGHT)
+#define SOKOBAN_LEVEL_UP (BUTTON_SELECT | BUTTON_UP)
+#define SOKOBAN_PAUSE BUTTON_PLAY
+#define BUTTON_SAVE BUTTON_CUSTOM
+#define BUTTON_SAVE_NAME "CUSTOM"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 92f647303a..d1016ac59b 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -322,6 +322,24 @@ static const struct plugin_api* rb;
#elif (CONFIG_KEYPAD == COWOND2_PAD)
# define SOL_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+# define SOL_QUIT BUTTON_BACK
+# define SOL_UP BUTTON_UP
+# define SOL_DOWN BUTTON_DOWN
+# define SOL_LEFT BUTTON_LEFT
+# define SOL_RIGHT BUTTON_RIGHT
+# define SOL_MOVE_PRE BUTTON_SELECT
+# define SOL_MOVE (BUTTON_SELECT | BUTTON_REL)
+# define SOL_DRAW BUTTON_MENU
+# define SOL_REM2CUR (BUTTON_LEFT | BUTTON_SELECT)
+# define SOL_CUR2STACK (BUTTON_SELECT | BUTTON_REPEAT)
+# define SOL_REM2STACK (BUTTON_RIGHT | BUTTON_SELECT)
+# define HK_MOVE "PLAY"
+# define HK_DRAW "MENU"
+# define HK_REM2CUR "PLAY+LEFT"
+# define HK_CUR2STACK "PLAY.."
+# define HK_REM2STACK "PLAY+RIGHT"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index be80a2d8d7..8fea76d41b 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -216,6 +216,19 @@ static const struct plugin_api* rb; /* global api struct pointer */
#elif (CONFIG_KEYPAD == COWOND2_PAD)
#define AST_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define AST_PAUSE BUTTON_SELECT
+#define AST_QUIT BUTTON_BACK
+#define AST_THRUST_REP BUTTON_UP | BUTTON_REPEAT
+#define AST_THRUST BUTTON_UP
+#define AST_HYPERSPACE BUTTON_DOWN
+#define AST_LEFT BUTTON_LEFT
+#define AST_LEFT_REP BUTTON_LEFT | BUTTON_REPEAT
+#define AST_RIGHT BUTTON_RIGHT
+#define AST_RIGHT_REP (BUTTON_RIGHT | BUTTON_REPEAT)
+#define AST_FIRE BUTTON_PLAY
+#define AST_FIRE_REP BUTTON_PLAY | BUTTON_REPEAT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index 104a43301f..0ba6f73f8b 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -233,6 +233,19 @@ PLUGIN_HEADER
#define STAR_QUIT_NAME "[POWER]"
#define STAR_MENU_RUN BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+
+#define STAR_QUIT BUTTON_BACK
+#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_PLAY
+#define STAR_LEVEL_UP (BUTTON_CUSTOM | BUTTON_UP)
+#define STAR_LEVEL_DOWN (BUTTON_CUSTOM | BUTTON_DOWN)
+#define STAR_LEVEL_REPEAT (BUTTON_CUSTOM | BUTTON_RIGHT)
+#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 6756539c98..b0555f722f 100644
--- a/apps/plugins/starfield.c
+++ b/apps/plugins/starfield.c
@@ -98,6 +98,13 @@ static const struct plugin_api* rb; /* global api struct pointer */
#define STARFIELD_TOGGLE_COLOR BUTTON_MENU
#elif (CONFIG_KEYPAD == COWOND2_PAD)
#define STARFIELD_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define STARFIELD_QUIT BUTTON_BACK
+#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_SELECT
#endif
#ifdef HAVE_TOUCHSCREEN
diff --git a/apps/plugins/stats.c b/apps/plugins/stats.c
index ca9499befb..9dfd3ec96c 100644
--- a/apps/plugins/stats.c
+++ b/apps/plugins/stats.c
@@ -81,6 +81,9 @@ static bool abort;
#elif CONFIG_KEYPAD == IAUDIO67_PAD
#define STATS_STOP BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define STATS_STOP BUTTON_BACK
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index 2803e52440..9725c6dc67 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -158,6 +158,13 @@ PLUGIN_HEADER
#define STOPWATCH_SCROLL_UP BUTTON_VOLUP
#define STOPWATCH_SCROLL_DOWN BUTTON_VOLDOWN
#define STOPWATCH_RC_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define STOPWATCH_QUIT BUTTON_BACK
+#define STOPWATCH_START_STOP BUTTON_PLAY
+#define STOPWATCH_RESET_TIMER BUTTON_CUSTOM
+#define STOPWATCH_LAP_TIMER BUTTON_SELECT
+#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 c33a8ea9c4..7fc6a4f09b 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -210,6 +210,16 @@
#define SUDOKU_BUTTON_MENU BUTTON_MENU
#define SUDOKU_BUTTON_POSSIBLE BUTTON_VOLDOWN
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define SUDOKU_BUTTON_QUIT BUTTON_BACK
+#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_PLAY
+#define SUDOKU_BUTTON_MENU BUTTON_MENU
+#define SUDOKU_BUTTON_POSSIBLE BUTTON_SELECT
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/superdom.c b/apps/plugins/superdom.c
index 088cdaea33..4a571491dd 100644
--- a/apps/plugins/superdom.c
+++ b/apps/plugins/superdom.c
@@ -132,6 +132,14 @@ char buf[255];
#elif CONFIG_KEYPAD == COWOND2_PAD
#define SUPERDOM_CANCEL BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define SUPERDOM_OK BUTTON_PLAY
+#define SUPERDOM_UP BUTTON_UP
+#define SUPERDOM_DOWN BUTTON_DOWN
+#define SUPERDOM_LEFT BUTTON_LEFT
+#define SUPERDOM_RIGHT BUTTON_RIGHT
+#define SUPERDOM_CANCEL BUTTON_BACK
+
#endif
#ifdef HAVE_TOUCHSCREEN
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c
index b75059ffc0..76c1d93c1c 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -280,6 +280,16 @@ PLUGIN_HEADER
#define VIEWER_AUTOSCROLL BUTTON_PLAY
#define VIEWER_RC_QUIT BUTTON_STOP
+/* Creative Zen Vision:M keys */
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define VIEWER_QUIT BUTTON_BACK
+#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 65556ab2ec..67ac024c62 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -222,6 +222,18 @@ PLUGIN_HEADER
#define LABEL_QUIT "POWER"
#define LABEL_MENU "MENU"
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+#define VUMETER_QUIT BUTTON_BACK
+#define VUMETER_HELP BUTTON_SELECT
+#define VUMETER_MENU BUTTON_MENU
+#define VUMETER_MENU_EXIT BUTTON_MENU
+#define VUMETER_UP BUTTON_UP
+#define VUMETER_DOWN BUTTON_DOWN
+#define LABEL_HELP "PLAY"
+#define LABEL_QUIT "BACK"
+#define LABEL_MENU "MENU"
+#define LABEL_VOLUME "UP/DOWN"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 91f8f05c53..534fc48d43 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -235,6 +235,19 @@ PLUGIN_HEADER
#define BTN_QUIT BUTTON_POWER
+#elif CONFIG_KEYPAD == CREATIVEZVM_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_BACK
+#define BTN_STOPRESET BUTTON_MENU
+
+#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 df6bb7d871..cd9c7f29ce 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -164,6 +164,15 @@ PLUGIN_HEADER
#define DOWN BUTTON_PLAY
#define PAUSE BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+
+#define QUIT BUTTON_BACK
+#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 ae04649c72..d6b37f7bb7 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -130,6 +130,14 @@
#define ZX_SELECT BUTTON_VOLUP
#define ZX_MENU BUTTON_MENU
+#elif CONFIG_KEYPAD == CREATIVEZVM_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_PLAY
+#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 920cf8ce06..f7526e2334 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -145,6 +145,16 @@
#define KBD_RIGHT BUTTON_RIGHT
#define KBD_UP BUTTON_STOP
#define KBD_DOWN BUTTON_PLAY
+
+#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
+
+#define KBD_SELECT BUTTON_PLAY
+#define KBD_ABORT BUTTON_BACK
+#define KBD_LEFT BUTTON_LEFT
+#define KBD_RIGHT BUTTON_RIGHT
+#define KBD_UP BUTTON_UP
+#define KBD_DOWN BUTTON_DOWN
+
#endif
#ifdef HAVE_TOUCHSCREEN