summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/battery_bench.c6
-rw-r--r--apps/plugins/blackjack.c15
-rw-r--r--apps/plugins/bounce.c8
-rw-r--r--apps/plugins/brickmania.c8
-rw-r--r--apps/plugins/calculator.c10
-rw-r--r--apps/plugins/calendar.c10
-rw-r--r--apps/plugins/chessbox/chessbox_pgn.h10
-rw-r--r--apps/plugins/chessclock.c10
-rw-r--r--apps/plugins/chip8.c9
-rw-r--r--apps/plugins/chopper.c5
-rw-r--r--apps/plugins/cube.c10
-rw-r--r--apps/plugins/doom/i_video.c11
-rw-r--r--apps/plugins/fft/fft.c8
-rw-r--r--apps/plugins/fireworks.c4
-rw-r--r--apps/plugins/flipit.c12
-rw-r--r--apps/plugins/fractals/fractal.h12
-rw-r--r--apps/plugins/goban/goban.h10
-rw-r--r--apps/plugins/imageviewer/imageviewer.h12
-rw-r--r--apps/plugins/invadrox.c7
-rw-r--r--apps/plugins/jewels.c10
-rw-r--r--apps/plugins/lamp.c4
-rw-r--r--apps/plugins/lib/pluginlib_actions.c16
-rw-r--r--apps/plugins/logo.c7
-rw-r--r--apps/plugins/matrix.c6
-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.c6
-rw-r--r--apps/plugins/mpegplayer/mpeg_settings.c8
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c9
-rw-r--r--apps/plugins/oscilloscope.c11
-rw-r--r--apps/plugins/pegbox.c18
-rw-r--r--apps/plugins/pong.c7
-rw-r--r--apps/plugins/reversi/reversi-gui.h8
-rw-r--r--apps/plugins/rockblox.c10
-rw-r--r--apps/plugins/rockblox1d.c4
-rw-r--r--apps/plugins/rockboy/rockboy.c12
-rw-r--r--apps/plugins/sliding_puzzle.c9
-rw-r--r--apps/plugins/snake.c8
-rw-r--r--apps/plugins/snake2.c9
-rw-r--r--apps/plugins/snow.c3
-rw-r--r--apps/plugins/sokoban.c15
-rw-r--r--apps/plugins/solitaire.c18
-rw-r--r--apps/plugins/spacerocks.c10
-rw-r--r--apps/plugins/star.c18
-rw-r--r--apps/plugins/starfield.c8
-rw-r--r--apps/plugins/stats.c3
-rw-r--r--apps/plugins/stopwatch.c8
-rw-r--r--apps/plugins/sudoku/sudoku.h9
-rw-r--r--apps/plugins/superdom.c8
-rw-r--r--apps/plugins/test_codec.c4
-rw-r--r--apps/plugins/test_fps.c2
-rw-r--r--apps/plugins/test_grey.c8
-rw-r--r--apps/plugins/test_greylib_bitmap_scale.c2
-rw-r--r--apps/plugins/test_scanrate.c9
-rw-r--r--apps/plugins/text_viewer/tv_button.h11
-rw-r--r--apps/plugins/vu_meter.c11
-rw-r--r--apps/plugins/wormlet.c10
-rw-r--r--apps/plugins/xobox.c9
-rw-r--r--apps/plugins/zxbox/keymaps.h9
-rw-r--r--apps/plugins/zxbox/zxbox_keyb.c9
-rwxr-xr-xtools/configure2
62 files changed, 547 insertions, 1 deletions
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index be71701c6f..3f90a72b3e 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -223,6 +223,12 @@
#define BATTERY_ON_TXT "PLAY - start"
#define BATTERY_OFF_TXT "REC"
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define BATTERY_ON BUTTON_PLAY
+#define BATTERY_OFF BUTTON_REC
+#define BATTERY_ON_TXT "PLAY - start"
+#define BATTERY_OFF_TXT "REC"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index f7cda90eb4..3a43a12bb2 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -435,6 +435,21 @@ enum {
#define BJACK_RIGHT BUTTON_VOL_UP
#define BJACK_LEFT BUTTON_VOL_DOWN
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define BJACK_SELECT_NAME "FUNC"
+#define BJACK_STAY_NAME "VOL +"
+#define BJACK_RESUME_NAME "PLAY"
+#define BJACK_QUIT_NAME "REC+PLAY"
+#define BJACK_DOUBLE_NAME "VOL -"
+#define BJACK_SELECT BUTTON_ENTER
+#define BJACK_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define BJACK_STAY BUTTON_PLAY
+#define BJACK_DOUBLEDOWN BUTTON_REC
+#define BJACK_UP BUTTON_UP
+#define BJACK_DOWN BUTTON_DOWN
+#define BJACK_RIGHT BUTTON_FF
+#define BJACK_LEFT BUTTON_REW
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/bounce.c b/apps/plugins/bounce.c
index 4a803a3e7f..aa373ea0d2 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -220,6 +220,14 @@
#define BOUNCE_QUIT (BUTTON_REC | BUTTON_PLAY)
#define BOUNCE_MODE BUTTON_FUNC
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define BOUNCE_LEFT BUTTON_REW
+#define BOUNCE_RIGHT BUTTON_FF
+#define BOUNCE_UP BUTTON_UP
+#define BOUNCE_DOWN BUTTON_DOWN
+#define BOUNCE_QUIT (BUTTON_REC | BUTTON_REPEAT)
+#define BOUNCE_MODE BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index d9abd5dca9..79ebfefbd4 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -259,6 +259,14 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define UP BUTTON_REW
#define DOWN BUTTON_FF
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define LEFT BUTTON_REW
+#define RIGHT BUTTON_FF
+#define SELECT BUTTON_ENTER
+#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 0507ce81d6..a5f14b44f8 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -398,6 +398,16 @@ F3: equal to "="
#define CALCULATOR_INPUT BUTTON_FUNC
#define CALCULATOR_CALC BUTTON_PLAY
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define CALCULATOR_LEFT BUTTON_REW
+#define CALCULATOR_RIGHT BUTTON_FF
+#define CALCULATOR_UP BUTTON_UP
+#define CALCULATOR_DOWN BUTTON_DOWN
+#define CALCULATOR_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define CALCULATOR_INPUT BUTTON_ENTER
+#define CALCULATOR_CALC BUTTON_PLAY
+#define CALCULATOR_CLEAR BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c
index 129b6780f8..1ca40254ca 100644
--- a/apps/plugins/calendar.c
+++ b/apps/plugins/calendar.c
@@ -278,6 +278,16 @@
#define CALENDAR_NEXT_MONTH BUTTON_PLAY
#define CALENDAR_PREV_MONTH BUTTON_REC
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define CALENDAR_QUIT BUTTON_REC
+#define CALENDAR_SELECT BUTTON_ENTER
+#define CALENDAR_NEXT_WEEK BUTTON_FF
+#define CALENDAR_PREV_WEEK BUTTON_REW
+#define CALENDAR_NEXT_DAY BUTTON_UP
+#define CALENDAR_PREV_DAY BUTTON_DOWN
+#define CALENDAR_NEXT_MONTH BUTTON_PLAY
+#define CALENDAR_PREV_MONTH BUTTON_MENU
+
#else
#error "No keypad setting."
#endif
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h
index df90151522..eb58a44e2f 100644
--- a/apps/plugins/chessbox/chessbox_pgn.h
+++ b/apps/plugins/chessbox/chessbox_pgn.h
@@ -386,6 +386,16 @@
#define CB_LEVEL BUTTON_REC
#define CB_MENU (BUTTON_FUNC | BUTTON_REPEAT)
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define CB_SELECT BUTTON_ENTER
+#define CB_UP BUTTON_UP
+#define CB_DOWN BUTTON_DOWN
+#define CB_LEFT BUTTON_REW
+#define CB_RIGHT BUTTON_FF
+#define CB_PLAY BUTTON_PLAY
+#define CB_LEVEL BUTTON_REC
+#define CB_MENU (BUTTON_MENU | BUTTON_REPEAT)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 8711308fc1..1fd01d38f6 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -296,6 +296,16 @@
#define CHC_SETTINGS_OK BUTTON_FUNC
#define CHC_SETTINGS_CANCEL BUTTON_REC
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define CHC_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define CHC_STARTSTOP BUTTON_PLAY
+#define CHC_RESET BUTTON_REW
+#define CHC_MENU BUTTON_MENU
+#define CHC_SETTINGS_INC BUTTON_UP
+#define CHC_SETTINGS_DEC BUTTON_DOWN
+#define CHC_SETTINGS_OK BUTTON_ENTER
+#define CHC_SETTINGS_CANCEL BUTTON_MENU
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index c68c987d48..1ffbbfbac5 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1158,6 +1158,15 @@ CONFIG_KEYPAD == MROBE500_PAD
#define CHIP8_KEY6 BUTTON_VOL_DOWN
#define CHIP8_KEY8 BUTTON_VOL_UP
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+
+#define CHIP8_OFF (BUTTON_REC|BUTTON_REPEAT)
+#define CHIP8_KEY2 BUTTON_REW
+#define CHIP8_KEY4 BUTTON_FF
+#define CHIP8_KEY5 BUTTON_PLAY
+#define CHIP8_KEY6 BUTTON_DOWN
+#define CHIP8_KEY8 BUTTON_UP
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index e0959c6672..fce7232d23 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -168,6 +168,11 @@ CONFIG_KEYPAD == MROBE500_PAD
#define ACTION BUTTON_FUNC
#define ACTIONTEXT "FUNC"
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define QUIT BUTTON_REC
+#define ACTION BUTTON_ENTER
+#define ACTIONTEXT "ENTER"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index 0555bc5e37..6d0e14f8f0 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -299,6 +299,16 @@
#define CUBE_PAUSE BUTTON_PLAY
#define CUBE_HIGHSPEED BUTTON_FUNC
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define CUBE_QUIT BUTTON_REC
+#define CUBE_NEXT BUTTON_FF
+#define CUBE_PREV BUTTON_REW
+#define CUBE_INC BUTTON_UP
+#define CUBE_DEC BUTTON_DOWN
+#define CUBE_MODE BUTTON_MENU
+#define CUBE_PAUSE BUTTON_PLAY
+#define CUBE_HIGHSPEED BUTTON_ENTER
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index 92ff065535..d9472663c4 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -391,6 +391,17 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_ESC BUTTON_REC
#define DOOMBUTTON_ENTER BUTTON_PLAY
#define DOOMBUTTON_WEAPON (BUTTON_PLAY|BUTTON_REPEAT)
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define DOOMBUTTON_UP BUTTON_UP
+#define DOOMBUTTON_DOWN BUTTON_DOWN
+#define DOOMBUTTON_LEFT BUTTON_REW
+#define DOOMBUTTON_RIGHT BUTTON_FF
+#define DOOMBUTTON_SHOOT BUTTON_ENTER
+#define DOOMBUTTON_OPEN BUTTON_MENU
+#define DOOMBUTTON_ESC BUTTON_REC
+#define DOOMBUTTON_ENTER BUTTON_PLAY
+#define DOOMBUTTON_WEAPON (BUTTON_PLAY|BUTTON_REPEAT)
+
#else
#error Keymap not defined!
#endif
diff --git a/apps/plugins/fft/fft.c b/apps/plugins/fft/fft.c
index 572ee5325f..3da3b455f7 100644
--- a/apps/plugins/fft/fft.c
+++ b/apps/plugins/fft/fft.c
@@ -232,6 +232,14 @@ GREY_INFO_STRUCT
# define FFT_AMP_SCALE BUTTON_PLAY
# define FFT_QUIT (BUTTON_REC | BUTTON_PLAY)
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+# define FFT_PREV_GRAPH BUTTON_REW
+# define FFT_NEXT_GRAPH BUTTON_FF
+# define FFT_ORIENTATION BUTTON_REC
+# define FFT_WINDOW BUTTON_ENTER
+# define FFT_AMP_SCALE BUTTON_PLAY
+# define FFT_QUIT (BUTTON_REC | BUTTON_REPEAT)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/fireworks.c b/apps/plugins/fireworks.c
index ea7fb11cfd..efb49db4f9 100644
--- a/apps/plugins/fireworks.c
+++ b/apps/plugins/fireworks.c
@@ -122,6 +122,10 @@
#define BTN_MENU BUTTON_REC
#define BTN_FIRE BUTTON_PLAY
+#elif (CONFIG_KEYPAD == MPIO_HD300_PAD)
+#define BTN_MENU BUTTON_MENU
+#define BTN_FIRE BUTTON_PLAY
+
#elif defined(HAVE_TOUCHSCREEN)
/* This is a touchscreen target */
#else
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 0e1e626d3c..a837b1a64e 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -344,6 +344,18 @@
#define FLIPIT_STEP_BY_STEP (BUTTON_PLAY|BUTTON_REW)
#define FLIPIT_TOGGLE (BUTTON_PLAY|BUTTON_FF)
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+
+#define FLIPIT_LEFT BUTTON_REW
+#define FLIPIT_RIGHT BUTTON_FF
+#define FLIPIT_UP BUTTON_UP
+#define FLIPIT_DOWN BUTTON_DOWN
+#define FLIPIT_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define FLIPIT_SHUFFLE BUTTON_PLAY
+#define FLIPIT_SOLVE BUTTON_MENU
+#define FLIPIT_STEP_BY_STEP BUTTON_REC
+#define FLIPIT_TOGGLE BUTTON_ENTER
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/fractals/fractal.h b/apps/plugins/fractals/fractal.h
index 3ca50485f0..327f23b7d2 100644
--- a/apps/plugins/fractals/fractal.h
+++ b/apps/plugins/fractals/fractal.h
@@ -342,6 +342,18 @@
#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_VOL_DOWN)
#define FRACTAL_RESET BUTTON_REC
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define FRACTAL_QUIT BUTTON_REC
+#define FRACTAL_UP BUTTON_UP
+#define FRACTAL_DOWN BUTTON_DOWN
+#define FRACTAL_LEFT BUTTON_MENU
+#define FRACTAL_RIGHT BUTTON_ENTER
+#define FRACTAL_ZOOM_IN (BUTTON_PLAY|BUTTON_UP)
+#define FRACTAL_ZOOM_OUT (BUTTON_PLAY|BUTTON_DOWN)
+#define FRACTAL_PRECISION_INC (BUTTON_PLAY | BUTTON_FF)
+#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_REW)
+#define FRACTAL_RESET (BUTTON_PLAY | BUTTON_REC)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/goban/goban.h b/apps/plugins/goban/goban.h
index d014eb2329..1c992c775f 100644
--- a/apps/plugins/goban/goban.h
+++ b/apps/plugins/goban/goban.h
@@ -331,6 +331,16 @@
#define GBN_BUTTON_PLAY BUTTON_FUNC | BUTTON_REL
#define GBN_BUTTON_MENU BUTTON_FUNC | BUTTON_REPEAT
+#elif (CONFIG_KEYPAD == MPIO_HD300_PAD)
+#define GBN_BUTTON_UP BUTTON_UP
+#define GBN_BUTTON_DOWN BUTTON_DOWN
+#define GBN_BUTTON_LEFT BUTTON_REW
+#define GBN_BUTTON_RIGHT BUTTON_FF
+#define GBN_BUTTON_RETREAT BUTTON_REC
+#define GBN_BUTTON_ADVANCE BUTTON_PLAY
+#define GBN_BUTTON_PLAY BUTTON_ENTER
+#define GBN_BUTTON_MENU BUTTON_MENU
+
#else
#error Unsupported keypad
#endif
diff --git a/apps/plugins/imageviewer/imageviewer.h b/apps/plugins/imageviewer/imageviewer.h
index 8e838def08..504ef2bb3a 100644
--- a/apps/plugins/imageviewer/imageviewer.h
+++ b/apps/plugins/imageviewer/imageviewer.h
@@ -340,6 +340,18 @@
#define IMGVIEW_MENU BUTTON_FUNC
#define IMGVIEW_QUIT (BUTTON_REC | BUTTON_PLAY)
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define IMGVIEW_ZOOM_IN (BUTTON_ENTER | BUTTON_UP)
+#define IMGVIEW_ZOOM_OUT (BUTTON_ENTER | BUTTON_DOWN)
+#define IMGVIEW_UP BUTTON_UP
+#define IMGVIEW_DOWN BUTTON_DOWN
+#define IMGVIEW_LEFT BUTTON_REW
+#define IMGVIEW_RIGHT BUTTON_FF
+#define IMGVIEW_NEXT (BUTTON_FF | BUTTON_ENTER)
+#define IMGVIEW_PREVIOUS (BUTTON_REW | BUTTON_ENTER)
+#define IMGVIEW_MENU (BUTTON_ENTER | BUTTON_REPEAT)
+#define IMGVIEW_QUIT BUTTON_REC
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c
index 480cf9d5e2..efabf81379 100644
--- a/apps/plugins/invadrox.c
+++ b/apps/plugins/invadrox.c
@@ -213,6 +213,13 @@ CONFIG_KEYPAD == MROBE500_PAD
#define RIGHT BUTTON_NEXT
#define FIRE BUTTON_OK
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+
+#define QUIT BUTTON_REC
+#define LEFT BUTTON_MENU
+#define RIGHT BUTTON_ENTER
+#define FIRE BUTTON_PLAY
+
#else
#error INVADROX: Unsupported keypad
#endif
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index 71267484b1..0df7c35d84 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -293,6 +293,16 @@ CONFIG_KEYPAD == MROBE500_PAD
#define HK_SELECT "FUNC"
#define HK_CANCEL "REC"
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define JEWELS_LEFT BUTTON_REW
+#define JEWELS_RIGHT BUTTON_FF
+#define JEWELS_UP BUTTON_UP
+#define JEWELS_DOWN BUTTON_DOWN
+#define JEWELS_SELECT BUTTON_ENTER
+#define JEWELS_CANCEL BUTTON_MENU
+#define HK_SELECT "ENTER"
+#define HK_CANCEL "MENU"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/lamp.c b/apps/plugins/lamp.c
index 41cf33f4c9..3400107407 100644
--- a/apps/plugins/lamp.c
+++ b/apps/plugins/lamp.c
@@ -130,6 +130,10 @@
# define LAMP_UP BUTTON_REW
# define LAMP_DOWN BUTTON_FF
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+# define LAMP_UP BUTTON_UP
+# define LAMP_DOWN BUTTON_DOWN
+
#else
# error Missing key definitions for this keypad
#endif
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index 0d95bc8d87..f42dbb34c6 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -200,6 +200,16 @@ const struct button_mapping pla_main_ctx[] =
{ PLA_DOWN_REPEAT, BUTTON_FF|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_LEFT_REPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_RIGHT_REPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
+#elif (CONFIG_KEYPAD == MPIO_HD300_PAD)
+ { PLA_UP, BUTTON_UP, BUTTON_NONE},
+ { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE},
+ { PLA_LEFT, BUTTON_REW, BUTTON_NONE},
+ { PLA_RIGHT, BUTTON_FF, BUTTON_NONE},
+ { PLA_UP_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE},
+ { PLA_DOWN_REPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE},
+ { PLA_LEFT_REPEAT, BUTTON_REW|BUTTON_REPEAT, BUTTON_NONE},
+ { PLA_RIGHT_REPEAT, BUTTON_FF|BUTTON_REPEAT, BUTTON_NONE},
+
#else
# ifndef HAVE_TOUCHSCREEN
# error pluginlib_actions: No directions defined
@@ -366,6 +376,12 @@ const struct button_mapping pla_main_ctx[] =
{PLA_SELECT, BUTTON_FUNC, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_FUNC|BUTTON_REL, BUTTON_FUNC},
{PLA_SELECT_REPEAT, BUTTON_FUNC|BUTTON_REPEAT, BUTTON_NONE},
+#elif (CONFIG_KEYPAD == MPIO_HD300_PAD)
+ {PLA_CANCEL, BUTTON_MENU, BUTTON_NONE},
+ {PLA_EXIT, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE},
+ {PLA_SELECT, BUTTON_ENTER, BUTTON_NONE},
+ {PLA_SELECT_REL, BUTTON_ENTER|BUTTON_REL, BUTTON_ENTER},
+ {PLA_SELECT_REPEAT, BUTTON_ENTER|BUTTON_REPEAT, BUTTON_NONE},
#else
# ifndef HAVE_TOUCHSCREEN
# error pluginlib_actions: No actions defined
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c
index 0f255fcccb..9cbc051631 100644
--- a/apps/plugins/logo.c
+++ b/apps/plugins/logo.c
@@ -207,6 +207,13 @@ const unsigned char rockbox16x7[] = {
#define LP_DEC_Y BUTTON_REW
#define LP_INC_Y BUTTON_FF
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define LP_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define LP_DEC_X BUTTON_REW
+#define LP_INC_X BUTTON_FF
+#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/matrix.c b/apps/plugins/matrix.c
index 4fcf16b288..02a64dba81 100644
--- a/apps/plugins/matrix.c
+++ b/apps/plugins/matrix.c
@@ -163,6 +163,12 @@ CONFIG_KEYPAD == MROBE500_PAD
#define MATRIX_SLEEP_LESS BUTTON_VOL_DOWN
#define MATRIX_PAUSE BUTTON_PLAY
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define MATRIX_EXIT (BUTTON_REC|BUTTON_REPEAT)
+#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 d2b8cf818a..9bf4d50822 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -209,6 +209,14 @@
#define BTN_DOWN BUTTON_FF
#define BTN_PLAY BUTTON_PLAY
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define BTN_QUIT (BUTTON_REC | BUTTON_REPEAT)
+#define BTN_RIGHT BUTTON_FF
+#define BTN_LEFT BUTTON_REW
+#define BTN_UP BUTTON_UP
+#define BTN_DOWN BUTTON_DOWN
+#define BTN_PLAY BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index bc9d102236..adecc00502 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -277,6 +277,16 @@ CONFIG_KEYPAD == MROBE500_PAD
# define MINESWP_DISCOVER BUTTON_FUNC
# define MINESWP_INFO BUTTON_REC
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+# define MINESWP_LEFT BUTTON_MENU
+# define MINESWP_RIGHT BUTTON_ENTER
+# define MINESWP_UP BUTTON_UP
+# define MINESWP_DOWN BUTTON_DOWN
+# define MINESWP_QUIT BUTTON_REC
+# define MINESWP_TOGGLE BUTTON_PLAY
+# define MINESWP_DISCOVER BUTTON_FF
+# define MINESWP_INFO BUTTON_REW
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c
index eb6405b56c..c3f6fc34cd 100644
--- a/apps/plugins/mosaique.c
+++ b/apps/plugins/mosaique.c
@@ -178,6 +178,11 @@
#define MOSAIQUE_SPEED BUTTON_FUNC
#define MOSAIQUE_RESTART BUTTON_PLAY
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define MOSAIQUE_QUIT (BUTTON_REC | BUTTON_REPEAT)
+#define MOSAIQUE_SPEED BUTTON_ENTER
+#define MOSAIQUE_RESTART BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index e39cfbb39b..c0b0252e14 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2474,6 +2474,12 @@ CONFIG_KEYPAD == MROBE500_PAD
#define MP3ENC_DONE BUTTON_PLAY
#define MP3ENC_SELECT BUTTON_FUNC
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define MP3ENC_PREV BUTTON_REW
+#define MP3ENC_NEXT BUTTON_FF
+#define MP3ENC_DONE BUTTON_PLAY
+#define MP3ENC_SELECT BUTTON_ENTER
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 94a375d866..3daba2c928 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -224,6 +224,14 @@ struct mpeg_settings settings;
#define MPEG_START_TIME_DOWN BUTTON_VOL_DOWN
#define MPEG_START_TIME_EXIT BUTTON_REC
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define MPEG_START_TIME_SELECT BUTTON_ENTER
+#define MPEG_START_TIME_LEFT BUTTON_REW
+#define MPEG_START_TIME_RIGHT BUTTON_FF
+#define MPEG_START_TIME_UP BUTTON_UP
+#define MPEG_START_TIME_DOWN BUTTON_DOWN
+#define MPEG_START_TIME_EXIT BUTTON_REC
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index 2314d96889..b324133940 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -336,6 +336,15 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define MPEG_RW BUTTON_REW
#define MPEG_FF BUTTON_FF
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define MPEG_MENU BUTTON_MENU
+#define MPEG_PAUSE (BUTTON_PLAY | BUTTON_REL)
+#define MPEG_STOP (BUTTON_PLAY | BUTTON_REPEAT)
+#define MPEG_VOLDOWN BUTTON_DOWN
+#define MPEG_VOLUP BUTTON_UP
+#define MPEG_RW BUTTON_REW
+#define MPEG_FF BUTTON_FF
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index 2d0d58eca5..f80b9c014a 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -309,6 +309,17 @@
#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define OSCILLOSCOPE_QUIT (BUTTON_REC | BUTTON_REPEAT)
+#define OSCILLOSCOPE_DRAWMODE BUTTON_ENTER
+#define OSCILLOSCOPE_ADVMODE BUTTON_REC
+#define OSCILLOSCOPE_ORIENTATION BUTTON_MENU
+#define OSCILLOSCOPE_PAUSE BUTTON_PLAY
+#define OSCILLOSCOPE_SPEED_UP BUTTON_FF
+#define OSCILLOSCOPE_SPEED_DOWN BUTTON_REW
+#define OSCILLOSCOPE_VOL_UP BUTTON_UP
+#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c
index b4b34911c2..e3d096e507 100644
--- a/apps/plugins/pegbox.c
+++ b/apps/plugins/pegbox.c
@@ -454,6 +454,24 @@ CONFIG_KEYPAD == MROBE500_PAD
#define LVL_DOWN_TEXT "FF"
#define SELECT_TEXT "FUNC"
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define PEGBOX_QUIT BUTTON_REC
+#define PEGBOX_RESTART (BUTTON_MENU | BUTTON_REC)
+#define PEGBOX_LVL_UP BUTTON_REW
+#define PEGBOX_LVL_DOWN BUTTON_FF
+#define PEGBOX_UP BUTTON_UP
+#define PEGBOX_DOWN BUTTON_DOWN
+#define PEGBOX_RIGHT BUTTON_ENTER
+#define PEGBOX_LEFT BUTTON_MENU
+#define PEGBOX_SELECT BUTTON_PLAY
+
+#define SAVE_TEXT "PLAY + FUNC"
+#define QUIT_TEXT "REC + PLAY"
+#define RESTART_TEXT "REC"
+#define LVL_UP_TEXT "REW"
+#define LVL_DOWN_TEXT "FF"
+#define SELECT_TEXT "FUNC"
+
#else
#error Unsupported keymap!
#endif
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index 9697b9821f..eece69db12 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -224,6 +224,13 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PONG_RIGHT_UP BUTTON_VOL_UP
#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define PONG_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define PONG_LEFT_UP BUTTON_FF
+#define PONG_LEFT_DOWN BUTTON_REW
+#define PONG_RIGHT_UP BUTTON_UP
+#define PONG_RIGHT_DOWN BUTTON_DOWN
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h
index ee20c6dbc0..d5ba08fe56 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -235,6 +235,14 @@
#define REVERSI_BUTTON_MENU BUTTON_FUNC
#define REVERSI_BUTTON_MENU_LONGPRESS
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define REVERSI_BUTTON_UP BUTTON_UP
+#define REVERSI_BUTTON_DOWN BUTTON_DOWN
+#define REVERSI_BUTTON_LEFT BUTTON_REW
+#define REVERSI_BUTTON_RIGHT BUTTON_FF
+#define REVERSI_BUTTON_MAKE_MOVE BUTTON_ENTER
+#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 ae9c922342..717aedab1f 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -349,6 +349,16 @@
#define ROCKBLOX_DROP BUTTON_PLAY
#define ROCKBLOX_RESTART BUTTON_REC
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define ROCKBLOX_OFF (BUTTON_REC|BUTTON_REPEAT)
+#define ROCKBLOX_ROTATE_CCW BUTTON_REW
+#define ROCKBLOX_ROTATE_CW BUTTON_FF
+#define ROCKBLOX_DOWN BUTTON_DOWN
+#define ROCKBLOX_LEFT BUTTON_MENU
+#define ROCKBLOX_RIGHT BUTTON_ENTER
+#define ROCKBLOX_DROP BUTTON_PLAY
+#define ROCKBLOX_RESTART BUTTON_REC
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/rockblox1d.c b/apps/plugins/rockblox1d.c
index af9c0ab16d..eb1ad1de90 100644
--- a/apps/plugins/rockblox1d.c
+++ b/apps/plugins/rockblox1d.c
@@ -120,6 +120,10 @@
#define ONEDROCKBLOX_DOWN BUTTON_FUNC
#define ONEDROCKBLOX_QUIT (BUTTON_REC | BUTTON_PLAY)
+#elif (CONFIG_KEYPAD == MPIO_HD300_PAD)
+#define ONEDROCKBLOX_DOWN BUTTON_DOWN
+#define ONEDROCKBLOX_QUIT (BUTTON_REC | BUTTON_REPEAT)
+
#elif defined(HAVE_TOUCHSCREEN)
#define ONEDROCKBLOX_DOWN BUTTON_BOTTOMMIDDLE
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index a085858b14..f28c0ccccd 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -306,6 +306,18 @@ static void setoptions (void)
options.SELECT = BUTTON_UP;
options.MENU = BUTTON_MENU;
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+ options.UP = BUTTON_UP;
+ options.DOWN = BUTTON_DOWN;
+ options.LEFT = BUTTON_REW;
+ options.RIGHT = BUTTON_FF;
+
+ options.A = BUTTON_MENU;
+ options.B = BUTTON_ENTER;
+ options.START = BUTTON_PLAY;
+ options.SELECT = (BUTTON_ENTER | BUTTON_REPEAT);
+ options.MENU = (BUTTON_MENU | BUTTON_REPEAT);
+
#else
#error No Keymap Defined!
#endif
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index f265dd2d6a..aeac96dfba 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -236,6 +236,15 @@ CONFIG_KEYPAD == MROBE500_PAD
#define PUZZLE_SHUFFLE BUTTON_REC
#define PUZZLE_PICTURE BUTTON_PLAY
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define PUZZLE_QUIT (BUTTON_REC | BUTTON_REPEAT)
+#define PUZZLE_LEFT BUTTON_REW
+#define PUZZLE_RIGHT BUTTON_FF
+#define PUZZLE_UP BUTTON_UP
+#define PUZZLE_DOWN BUTTON_DOWN
+#define PUZZLE_SHUFFLE BUTTON_ENTER
+#define PUZZLE_PICTURE BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index c4bbae0b96..120485a248 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -217,6 +217,14 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
#define SNAKE_DOWN BUTTON_FF
#define SNAKE_PLAYPAUSE BUTTON_PLAY
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define SNAKE_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define SNAKE_LEFT BUTTON_REW
+#define SNAKE_RIGHT BUTTON_FF
+#define SNAKE_UP BUTTON_UP
+#define SNAKE_DOWN BUTTON_DOWN
+#define SNAKE_PLAYPAUSE BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index a147f7cd23..1b1526745a 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -327,6 +327,15 @@ CONFIG_KEYPAD == MROBE500_PAD
#define SNAKE2_PLAYPAUSE BUTTON_PLAY
#define SNAKE2_PLAYPAUSE_TEXT "Play"
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define SNAKE2_LEFT BUTTON_MENU
+#define SNAKE2_RIGHT BUTTON_ENTER
+#define SNAKE2_UP BUTTON_UP
+#define SNAKE2_DOWN BUTTON_DOWN
+#define SNAKE2_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define SNAKE2_PLAYPAUSE BUTTON_PLAY
+#define SNAKE2_PLAYPAUSE_TEXT "Play"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c
index ab27950750..22ffee9880 100644
--- a/apps/plugins/snow.c
+++ b/apps/plugins/snow.c
@@ -84,6 +84,9 @@
#elif CONFIG_KEYPAD == MPIO_HD200_PAD
#define SNOW_QUIT (BUTTON_REC|BUTTON_PLAY)
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define SNOW_QUIT (BUTTON_REC|BUTTON_REPEAT)
+
#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 b14132c7f6..6fe2b267aa 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -476,6 +476,21 @@
#define BUTTON_SAVE (BUTTON_PLAY|BUTTON_FUNC)
#define BUTTON_SAVE_NAME "PLAY+FUNC"
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define SOKOBAN_LEFT BUTTON_REW
+#define SOKOBAN_RIGHT BUTTON_FF
+#define SOKOBAN_UP BUTTON_UP
+#define SOKOBAN_DOWN BUTTON_DOWN
+#define SOKOBAN_MENU BUTTON_MENU
+#define SOKOBAN_UNDO (BUTTON_PLAY | BUTTON_REW)
+#define SOKOBAN_REDO (BUTTON_PLAY | BUTTON_FF)
+#define SOKOBAN_LEVEL_DOWN (BUTTON_PLAY | BUTTON_DOWN)
+#define SOKOBAN_LEVEL_REPEAT BUTTON_REC
+#define SOKOBAN_LEVEL_UP (BUTTON_PLAY | BUTTON_UP)
+#define SOKOBAN_PAUSE BUTTON_PLAY
+#define BUTTON_SAVE (BUTTON_PLAY|BUTTON_ENTER)
+#define BUTTON_SAVE_NAME "PLAY+ENTER"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index feafd42f76..006e073ba4 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -489,6 +489,24 @@ CONFIG_KEYPAD == MROBE500_PAD
# define HK_CUR2STACK "PLAY"
# define HK_REM2STACK "PLAY...."
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+# define SOL_QUIT BUTTON_REC
+# define SOL_UP BUTTON_UP
+# define SOL_DOWN BUTTON_DOWN
+# define SOL_LEFT BUTTON_MENU
+# define SOL_RIGHT BUTTON_ENTER
+# define SOL_MOVE_PRE BUTTON_REW
+# define SOL_MOVE BUTTON_FF
+# define SOL_DRAW (BUTTON_ENTER | BUTTON_PLAY)
+# define SOL_REM2CUR (BUTTON_MENU | BUTTON_REPEAT)
+# define SOL_CUR2STACK BUTTON_PLAY
+# define SOL_REM2STACK (BUTTON_PLAY | BUTTON_REPEAT)
+# define HK_MOVE "FF"
+# define HK_DRAW "ENTER + PLAY"
+# define HK_REM2CUR "EMNU.."
+# define HK_CUR2STACK "PLAY"
+# define HK_REM2STACK "PLAY...."
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index d04205cb05..59463b3c97 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -248,6 +248,16 @@
#define AST_RIGHT BUTTON_FF
#define AST_FIRE BUTTON_FUNC
+#elif (CONFIG_KEYPAD == MPIO_HD300_PAD)
+
+#define AST_PAUSE BUTTON_PLAY
+#define AST_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define AST_THRUST BUTTON_MENU
+#define AST_HYPERSPACE (BUTTON_PLAY|BUTTON_REPEAT)
+#define AST_LEFT BUTTON_REW
+#define AST_RIGHT BUTTON_FF
+#define AST_FIRE BUTTON_ENTER
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index 9f4e8f50a0..0268ceb947 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -428,6 +428,24 @@
#define STAR_LEVEL_DOWN_NAME "REC"
#define STAR_LEVEL_REPEAT_NAME "FUNC LONG"
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+
+#define STAR_QUIT (BUTTON_REC | BUTTON_REPEAT)
+#define STAR_LEFT BUTTON_REW
+#define STAR_RIGHT BUTTON_FF
+#define STAR_UP BUTTON_UP
+#define STAR_DOWN BUTTON_DOWN
+#define STAR_TOGGLE_CONTROL_PRE BUTTON_MENU
+#define STAR_TOGGLE_CONTROL (BUTTON_MENU | BUTTON_REL)
+#define STAR_LEVEL_UP BUTTON_PLAY
+#define STAR_LEVEL_DOWN BUTTON_REC
+#define STAR_LEVEL_REPEAT (BUTTON_MENU | BUTTON_REPEAT)
+#define STAR_TOGGLE_CONTROL_NAME "MENU"
+#define STAR_QUIT_NAME "REC LONG"
+#define STAR_LEVEL_UP_NAME "PLAY"
+#define STAR_LEVEL_DOWN_NAME "REC"
+#define STAR_LEVEL_REPEAT_NAME "MENU LONG"
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/starfield.c b/apps/plugins/starfield.c
index ace58f0cd9..d06998ee2c 100644
--- a/apps/plugins/starfield.c
+++ b/apps/plugins/starfield.c
@@ -171,6 +171,14 @@
#define STARFIELD_DECREASE_NB_STARS BUTTON_REW
#define STARFIELD_TOGGLE_COLOR BUTTON_PLAY
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define STARFIELD_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define STARFIELD_INCREASE_ZMOVE BUTTON_UP
+#define STARFIELD_DECREASE_ZMOVE BUTTON_DOWN
+#define STARFIELD_INCREASE_NB_STARS BUTTON_FF
+#define STARFIELD_DECREASE_NB_STARS BUTTON_REW
+#define STARFIELD_TOGGLE_COLOR BUTTON_PLAY
+
#endif
#ifdef HAVE_TOUCHSCREEN
diff --git a/apps/plugins/stats.c b/apps/plugins/stats.c
index fbc00d3902..388a617b14 100644
--- a/apps/plugins/stats.c
+++ b/apps/plugins/stats.c
@@ -107,6 +107,9 @@ static bool cancel;
#elif CONFIG_KEYPAD == MPIO_HD200_PAD
#define STATS_STOP BUTTON_REC
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define STATS_STOP BUTTON_REC
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index 475b4de5b9..c07cfd93a5 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -239,6 +239,14 @@
#define STOPWATCH_SCROLL_UP BUTTON_VOL_UP
#define STOPWATCH_SCROLL_DOWN BUTTON_VOL_DOWN
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define STOPWATCH_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define STOPWATCH_START_STOP BUTTON_PLAY
+#define STOPWATCH_RESET_TIMER BUTTON_REW
+#define STOPWATCH_LAP_TIMER BUTTON_FF
+#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 c7048d8f99..a65767b21e 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -300,6 +300,15 @@
#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_REW
#define SUDOKU_BUTTON_POSSIBLE BUTTON_PLAY
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define SUDOKU_BUTTON_MENU BUTTON_MENU
+#define SUDOKU_BUTTON_LEFT BUTTON_REW
+#define SUDOKU_BUTTON_RIGHT BUTTON_FF
+#define SUDOKU_BUTTON_CHANGEDIR BUTTON_ENTER
+#define SUDOKU_BUTTON_TOGGLE BUTTON_UP
+#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_DOWN
+#define SUDOKU_BUTTON_POSSIBLE BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/superdom.c b/apps/plugins/superdom.c
index f4cefdfa4e..4c25ff28e6 100644
--- a/apps/plugins/superdom.c
+++ b/apps/plugins/superdom.c
@@ -174,6 +174,14 @@ char buf[255];
#define SUPERDOM_RIGHT BUTTON_NEXT
#define SUPERDOM_CANCEL BUTTON_CANCEL
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define SUPERDOM_OK BUTTON_ENTER
+#define SUPERDOM_UP BUTTON_UP
+#define SUPERDOM_DOWN BUTTON_DOWN
+#define SUPERDOM_LEFT BUTTON_REW
+#define SUPERDOM_RIGHT BUTTON_FF
+#define SUPERDOM_CANCEL BUTTON_MENU
+
#endif
#ifdef HAVE_TOUCHSCREEN
diff --git a/apps/plugins/test_codec.c b/apps/plugins/test_codec.c
index 2d0f610d88..6def9ca2cd 100644
--- a/apps/plugins/test_codec.c
+++ b/apps/plugins/test_codec.c
@@ -34,6 +34,10 @@
#define TESTCODEC_EXITBUTTON BUTTON_POWER
#elif CONFIG_KEYPAD == PBELL_VIBE500_PAD
#define TESTCODEC_EXITBUTTON BUTTON_REC
+#elif CONFIG_KEYPAD == MPIO_HD200_PAD
+#define TESTCODEC_EXITBUTTON (BUTTON_REC | BUTTON_PLAY)
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define TESTCODEC_EXITBUTTON (BUTTON_REC | BUTTON_REPEAT)
#elif defined(HAVE_TOUCHSCREEN)
#define TESTCODEC_EXITBUTTON BUTTON_TOPLEFT
#else
diff --git a/apps/plugins/test_fps.c b/apps/plugins/test_fps.c
index 4f197e0d5b..24c0700e6d 100644
--- a/apps/plugins/test_fps.c
+++ b/apps/plugins/test_fps.c
@@ -33,6 +33,8 @@
#define FPS_QUIT (BUTTON_HOME|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == MPIO_HD200_PAD
#define FPS_QUIT (BUTTON_REC|BUTTON_PLAY)
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define FPS_QUIT (BUTTON_REC|BUTTON_REPEAT)
#elif defined(BUTTON_OFF)
#define FPS_QUIT BUTTON_OFF
#else
diff --git a/apps/plugins/test_grey.c b/apps/plugins/test_grey.c
index da199a6f14..bf6d1755af 100644
--- a/apps/plugins/test_grey.c
+++ b/apps/plugins/test_grey.c
@@ -91,6 +91,14 @@
#define GREY_UP BUTTON_VOL_UP
#define GREY_DOWN BUTTON_VOL_DOWN
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define GREY_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define GREY_OK BUTTON_PLAY
+#define GREY_PREV BUTTON_REW
+#define GREY_NEXT BUTTON_FF
+#define GREY_UP BUTTON_UP
+#define GREY_DOWN BUTTON_DOWN
+
#else
#error unsupported keypad
#endif
diff --git a/apps/plugins/test_greylib_bitmap_scale.c b/apps/plugins/test_greylib_bitmap_scale.c
index d096d0240b..5d08253997 100644
--- a/apps/plugins/test_greylib_bitmap_scale.c
+++ b/apps/plugins/test_greylib_bitmap_scale.c
@@ -32,6 +32,8 @@
#define GBS_QUIT BUTTON_PLAY
#elif CONFIG_KEYPAD == MPIO_HD200_PAD
#define GBS_QUIT (BUTTON_REC|BUTTON_PLAY)
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define GBS_QUIT (BUTTON_REC|BUTTON_REPEAT)
#elif defined(BUTTON_OFF)
#define GBS_QUIT BUTTON_OFF
#else
diff --git a/apps/plugins/test_scanrate.c b/apps/plugins/test_scanrate.c
index 4d8d3c6241..ba9f5330a7 100644
--- a/apps/plugins/test_scanrate.c
+++ b/apps/plugins/test_scanrate.c
@@ -74,6 +74,13 @@
#define SCANRATE_INC BUTTON_VOL_UP
#define SCANRATE_DEC BUTTON_VOL_DOWN
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define SCANRATE_DONE BUTTON_PLAY
+#define SCANRATE_FASTINC BUTTON_UP
+#define SCANRATE_FASTDEC BUTTON_DOWN
+#define SCANRATE_INC BUTTON_FF
+#define SCANRATE_DEC BUTTON_REW
+
#endif
/* Default refresh rates in 1/10 Hz */
@@ -88,6 +95,8 @@
#elif defined MPIO_HD200
#define DEFAULT_SCAN_RATE 1460
#define NEED_BOOST
+#elif defined MPIO_HD300
+#define DEFAULT_SCAN_RATE 730
#elif defined IAUDIO_M5
#define DEFAULT_SCAN_RATE 730
#elif defined IPOD_1G2G
diff --git a/apps/plugins/text_viewer/tv_button.h b/apps/plugins/text_viewer/tv_button.h
index 6157d5fe9e..1ed90e1294 100644
--- a/apps/plugins/text_viewer/tv_button.h
+++ b/apps/plugins/text_viewer/tv_button.h
@@ -402,6 +402,17 @@
#define TV_AUTOSCROLL BUTTON_PLAY
#define TV_BOOKMARK BUTTON_REC
+/* MPIO HD300 keys */
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define TV_QUIT BUTTON_REC
+#define TV_SCROLL_UP BUTTON_UP
+#define TV_SCROLL_DOWN BUTTON_DOWN
+#define TV_SCREEN_LEFT BUTTON_REW
+#define TV_SCREEN_RIGHT BUTTON_FF
+#define TV_MENU (BUTTON_MENU | BUTTON_REPEAT)
+#define TV_AUTOSCROLL BUTTON_ENTER
+#define TV_BOOKMARK BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 08c88169be..077a6e92f4 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -305,6 +305,17 @@
#define LABEL_MENU "FUNC"
#define LABEL_VOLUME "UP/DOWN"
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+#define VUMETER_QUIT (BUTTON_REC|BUTTON_REPEAT)
+#define VUMETER_HELP BUTTON_PLAY
+#define VUMETER_MENU BUTTON_MENU
+#define VUMETER_UP BUTTON_UP
+#define VUMETER_DOWN BUTTON_DOWN
+#define LABEL_HELP "PLAY"
+#define LABEL_QUIT "REC..."
+#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 155567958d..3d24f7fa19 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -290,6 +290,16 @@ CONFIG_KEYPAD == MROBE500_PAD
#define BTN_QUIT (BUTTON_REC|BUTTON_PLAY)
#define BTN_STOPRESET (BUTTON_FUNC|BUTTON_REPEAT)
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+
+#define BTN_DIR_UP BUTTON_UP
+#define BTN_DIR_DOWN BUTTON_DOWN
+#define BTN_DIR_LEFT BUTTON_MENU
+#define BTN_DIR_RIGHT BUTTON_ENTER
+#define BTN_STARTPAUSE BUTTON_PLAY
+#define BTN_QUIT BUTTON_REC
+#define BTN_STOPRESET (BUTTON_MENU | BUTTON_REPEAT)
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index d20a703601..49efdc9914 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -250,6 +250,15 @@ CONFIG_KEYPAD == MROBE500_PAD
#define DOWN BUTTON_FF
#define PAUSE BUTTON_PLAY
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+
+#define QUIT BUTTON_REC
+#define LEFT BUTTON_MENU
+#define RIGHT BUTTON_ENTER
+#define UP BUTTON_UP
+#define DOWN BUTTON_DOWN
+#define PAUSE BUTTON_PLAY
+
#else
#error No keymap defined!
#endif
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index f73ff16486..c05a3c93fb 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -207,6 +207,15 @@
#define ZX_LEFT BUTTON_VOL_DOWN
#define ZX_RIGHT BUTTON_VOL_UP
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+
+#define ZX_MENU (BUTTON_REC|BUTTON_REPEAT)
+#define ZX_UP BUTTON_UP
+#define ZX_DOWN BUTTON_DOWN
+#define ZX_SELECT BUTTON_ENTER
+#define ZX_LEFT BUTTON_REW
+#define ZX_RIGHT BUTTON_FF
+
#else
#error Keymap not defined!
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c
index c415cfb799..9a55475d3f 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -211,6 +211,15 @@
#define KBD_UP BUTTON_REW
#define KBD_DOWN BUTTON_FF
+#elif CONFIG_KEYPAD == MPIO_HD300_PAD
+
+#define KBD_SELECT BUTTON_ENTER
+#define KBD_ABORT BUTTON_MENU
+#define KBD_LEFT BUTTON_REW
+#define KBD_RIGHT BUTTON_FF
+#define KBD_UP BUTTON_UP
+#define KBD_DOWN BUTTON_DOWN
+
#endif
#ifdef HAVE_TOUCHSCREEN
diff --git a/tools/configure b/tools/configure
index 1281d9446f..ac109dff09 100755
--- a/tools/configure
+++ b/tools/configure
@@ -2730,7 +2730,7 @@ fi
output="rockbox.mpio"
bootoutput="bootloader.mpio"
appextra="recorder:gui:radio"
- plugins=""
+ plugins="yes"
swcodec="yes"
# toolset is the tools within the tools directory that we build for
# this particular target.