echoplayer: enable plugins

rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]> Sun, 12 Jul 2026 08:56:45 -0400
Newsgroups gmane.comp.systems.archos.rockbox.cvs
Message-ID <[email protected]>
commit 7e6ae1e0d81206f7971c677cabd78e0cd3502aa4
Author: Aidan MacDonald <[email protected]>
Date:   Sun May 3 00:49:18 2026 +0100

    echoplayer: enable plugins
    
    First pass at enabling plugins and setting up keymaps.
    
    Change-Id: I3140160bcc3044850416904840b35065f86ac32d

diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index 284043c14f..ec7ad45bb8 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -264,6 +264,12 @@ struct battery_tables_t {
 #define BATTERY_ON_TXT  "A - start"
 #define BATTERY_OFF_TXT "B"
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define BATTERY_ON      BUTTON_START
+#define BATTERY_OFF     BUTTON_SELECT
+#define BATTERY_ON_TXT  "Start"
+#define BATTERY_OFF_TXT "Select"
+
 #else
 #error "No keymap defined!"
 #endif
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index d5a84b7e4e..cca73029b2 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -627,6 +627,22 @@ enum {
 #define BJACK_RIGHT         BUTTON_RIGHT
 #define BJACK_LEFT          BUTTON_LEFT
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define BJACK_SELECT_NAME   "A"
+#define BJACK_STAY_NAME     "X"
+#define BJACK_QUIT_NAME     "B"
+#define BJACK_DOUBLE_NAME   "Y"
+#define BJACK_SELECT        BUTTON_A
+#define BJACK_QUIT          BUTTON_POWER
+#define BJACK_MAX           BUTTON_B
+#define BJACK_MIN           BUTTON_Y
+#define BJACK_STAY          BUTTON_X
+#define BJACK_DOUBLEDOWN    BUTTON_START
+#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/brickmania.c b/apps/plugins/brickmania.c
index 855aeb98db..4ec3a40f3a 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -381,6 +381,14 @@ CONFIG_KEYPAD == SANSA_M200_PAD
 #define UP          BUTTON_UP
 #define DOWN        BUTTON_DOWN
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define QUIT        BUTTON_POWER
+#define LEFT        BUTTON_LEFT
+#define RIGHT       BUTTON_RIGHT
+#define SELECT      BUTTON_A
+#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 2feee39799..0b06609573 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -557,6 +557,17 @@ F3: equal to "="
 #define CALCULATOR_CALC  BUTTON_MENU
 #define CALCULATOR_CLEAR BUTTON_USER
 
+#elif CONFIG_KEYPAD == ECHO_R1_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 BUTTON_A
+#define CALCULATOR_CALC  BUTTON_B
+#define CALCULATOR_CLEAR BUTTON_X
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c
index f605c3267c..b1c2662038 100644
--- a/apps/plugins/calendar.c
+++ b/apps/plugins/calendar.c
@@ -442,6 +442,16 @@
 #define CALENDAR_NEXT_MONTH BUTTON_POWER
 #define CALENDAR_PREV_MONTH BUTTON_USER
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define CALENDAR_QUIT       BUTTON_POWER
+#define CALENDAR_SELECT     BUTTON_A
+#define CALENDAR_NEXT_WEEK  BUTTON_DOWN
+#define CALENDAR_PREV_WEEK  BUTTON_UP
+#define CALENDAR_NEXT_DAY   BUTTON_RIGHT
+#define CALENDAR_PREV_DAY   BUTTON_LEFT
+#define CALENDAR_NEXT_MONTH BUTTON_B
+#define CALENDAR_PREV_MONTH BUTTON_Y
+
 #else
 #error "No keypad setting."
 #endif
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h
index 8d621dcfb7..eecb70d1c0 100644
--- a/apps/plugins/chessbox/chessbox_pgn.h
+++ b/apps/plugins/chessbox/chessbox_pgn.h
@@ -613,6 +613,20 @@
 #define CB_SCROLL_LEFT  (BUTTON_LEFT|BUTTON_REPEAT)
 #define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define CB_SELECT       BUTTON_A
+#define CB_UP           BUTTON_UP
+#define CB_DOWN         BUTTON_DOWN
+#define CB_LEFT         BUTTON_LEFT
+#define CB_RIGHT        BUTTON_RIGHT
+#define CB_PLAY         BUTTON_START
+#define CB_LEVEL        BUTTON_SELECT
+#define CB_MENU         BUTTON_POWER
+#define CB_SCROLL_UP    (BUTTON_UP|BUTTON_REPEAT)
+#define CB_SCROLL_DOWN  (BUTTON_DOWN|BUTTON_REPEAT)
+#define CB_SCROLL_LEFT  (BUTTON_LEFT|BUTTON_REPEAT)
+#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 9de3a78229..5d4ca183ae 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -417,6 +417,16 @@
 #define CHC_SETTINGS_OK     BUTTON_SELECT
 #define CHC_SETTINGS_CANCEL BUTTON_BACK
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define CHC_QUIT            BUTTON_POWER
+#define CHC_STARTSTOP       BUTTON_START
+#define CHC_RESET           BUTTON_SELECT
+#define CHC_MENU            BUTTON_X
+#define CHC_SETTINGS_INC    BUTTON_UP
+#define CHC_SETTINGS_DEC    BUTTON_DOWN
+#define CHC_SETTINGS_OK     BUTTON_A
+#define CHC_SETTINGS_CANCEL BUTTON_B
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index d791d8408b..0df928eb77 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1313,6 +1313,19 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define CHIP8_KEY8 BUTTON_POWER
 #define CHIP8_KEY9 BUTTON_USER
 
+#elif (CONFIG_KEYPAD == ECHO_R1_PAD)
+#define CHIP8_OFF  BUTTON_POWER
+#define CHIP8_KEY1 BUTTON_Y
+#define CHIP8_KEY2 BUTTON_UP
+#define CHIP8_KEY3 BUTTON_B
+#define CHIP8_KEY4 BUTTON_LEFT
+#define CHIP8_KEY5 BUTTON_A
+#define CHIP8_KEY6 BUTTON_RIGHT
+#define CHIP8_KEY7 BUTTON_SELECT
+#define CHIP8_KEY8 BUTTON_DOWN
+#define CHIP8_KEY9 BUTTON_START
+#define CHIP8_KEYA BUTTON_X
+
 #elif CONFIG_KEYPAD == SHANLING_Q1_PAD || CONFIG_KEYPAD == HIBY_R3PROII_PAD
 /* use touchscreen */
 
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index f31e834b4c..8dfa68a2b8 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -212,6 +212,12 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define ACTION2     BUTTON_MENU
 #define ACTIONTEXT  "A"
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define QUIT        BUTTON_POWER
+#define ACTION      BUTTON_A
+#define ACTION2     BUTTON_UP
+#define ACTIONTEXT  "A"
+
 #elif !defined(HAVE_TOUCHSCREEN)
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c
index b8e8d2164b..721f2b85fa 100644
--- a/apps/plugins/clix.c
+++ b/apps/plugins/clix.c
@@ -332,6 +332,14 @@
 #define CLIX_BUTTON_UP          BUTTON_UP
 #define CLIX_BUTTON_DOWN        BUTTON_DOWN
 
+#elif (CONFIG_KEYPAD == ECHO_R1_PAD)
+#define CLIX_BUTTON_QUIT        BUTTON_POWER
+#define CLIX_BUTTON_LEFT        BUTTON_LEFT
+#define CLIX_BUTTON_RIGHT       BUTTON_RIGHT
+#define CLIX_BUTTON_CLICK       BUTTON_A
+#define CLIX_BUTTON_UP          BUTTON_UP
+#define CLIX_BUTTON_DOWN        BUTTON_DOWN
+
 #else
 #error "no keymap"
 #endif
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index 5ea60363c5..fec40eb274 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -424,6 +424,16 @@
 #define CUBE_PAUSE         BUTTON_USER
 #define CUBE_HIGHSPEED     BUTTON_SELECT
 
+#elif (CONFIG_KEYPAD == ECHO_R1_PAD)
+#define CUBE_QUIT          BUTTON_POWER
+#define CUBE_NEXT          BUTTON_RIGHT
+#define CUBE_PREV          BUTTON_LEFT
+#define CUBE_INC           BUTTON_UP
+#define CUBE_DEC           BUTTON_DOWN
+#define CUBE_MODE          BUTTON_SELECT
+#define CUBE_PAUSE         BUTTON_START
+#define CUBE_HIGHSPEED     BUTTON_A
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index a66bf25852..1e64c2f40d 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -643,6 +643,18 @@ void I_ShutdownGraphics(void)
 #define DOOMBUTTON_ENTER   BUTTON_POWER
 #define DOOMBUTTON_WEAPON  BUTTON_USER
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_A
+#define DOOMBUTTON_OPEN    BUTTON_B
+#define DOOMBUTTON_ESC     BUTTON_POWER
+#define DOOMBUTTON_ENTER   BUTTON_X
+#define DOOMBUTTON_WEAPON  BUTTON_Y
+#define DOOMBUTTON_MAP     BUTTON_START
+
 #else
 #error Keymap not defined!
 #endif
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 42a1e4b9af..66bf87cc94 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -522,6 +522,18 @@
 #define FLIPIT_STEP_BY_STEP BUTTON_POWER
 #define FLIPIT_TOGGLE       BUTTON_SELECT
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_SELECT
+#define FLIPIT_SOLVE        BUTTON_START
+#define FLIPIT_STEP_BY_STEP BUTTON_X
+#define FLIPIT_TOGGLE       BUTTON_A
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/fractals/fractal.h b/apps/plugins/fractals/fractal.h
index 79324a507b..96a41736e7 100644
--- a/apps/plugins/fractals/fractal.h
+++ b/apps/plugins/fractals/fractal.h
@@ -530,6 +530,18 @@
 #define FRACTAL_PRECISION_DEC   (BUTTON_USER|BUTTON_REPEAT)
 #define FRACTAL_RESET           BUTTON_POWER
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define FRACTAL_QUIT            BUTTON_POWER
+#define FRACTAL_UP              BUTTON_UP
+#define FRACTAL_DOWN            BUTTON_DOWN
+#define FRACTAL_LEFT            BUTTON_LEFT
+#define FRACTAL_RIGHT           BUTTON_RIGHT
+#define FRACTAL_ZOOM_IN         BUTTON_A
+#define FRACTAL_ZOOM_OUT        BUTTON_B
+#define FRACTAL_PRECISION_INC   BUTTON_Y
+#define FRACTAL_PRECISION_DEC   BUTTON_X
+#define FRACTAL_RESET           BUTTON_START
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/goban/goban.h b/apps/plugins/goban/goban.h
index 80d69cb9e1..4ecabcca76 100644
--- a/apps/plugins/goban/goban.h
+++ b/apps/plugins/goban/goban.h
@@ -519,6 +519,16 @@
 #define  GBN_BUTTON_PLAY            BUTTON_SELECT
 #define  GBN_BUTTON_MENU            BUTTON_MENU
 
+#elif (CONFIG_KEYPAD == ECHO_R1_PAD)
+#define  GBN_BUTTON_UP              BUTTON_UP
+#define  GBN_BUTTON_DOWN            BUTTON_DOWN
+#define  GBN_BUTTON_LEFT            BUTTON_LEFT
+#define  GBN_BUTTON_RIGHT           BUTTON_RIGHT
+#define  GBN_BUTTON_RETREAT         BUTTON_X
+#define  GBN_BUTTON_ADVANCE         BUTTON_Y
+#define  GBN_BUTTON_PLAY            BUTTON_A
+#define  GBN_BUTTON_MENU            BUTTON_POWER
+
 #else
 #error Unsupported keypad
 #endif
diff --git a/apps/plugins/imageviewer/imageviewer_button.h b/apps/plugins/imageviewer/imageviewer_button.h
index d86f4c812e..2396c647b3 100644
--- a/apps/plugins/imageviewer/imageviewer_button.h
+++ b/apps/plugins/imageviewer/imageviewer_button.h
@@ -571,6 +571,18 @@
 #define IMGVIEW_MENU        BUTTON_MENU
 #define IMGVIEW_QUIT        BUTTON_BACK
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define IMGVIEW_ZOOM_IN     BUTTON_A
+#define IMGVIEW_ZOOM_OUT    BUTTON_B
+#define IMGVIEW_UP          BUTTON_UP
+#define IMGVIEW_DOWN        BUTTON_DOWN
+#define IMGVIEW_LEFT        BUTTON_LEFT
+#define IMGVIEW_RIGHT       BUTTON_RIGHT
+#define IMGVIEW_NEXT        BUTTON_Y
+#define IMGVIEW_PREVIOUS    BUTTON_X
+#define IMGVIEW_MENU        BUTTON_START
+#define IMGVIEW_QUIT        BUTTON_POWER
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c
index f365e04534..8500e2b558 100644
--- a/apps/plugins/invadrox.c
+++ b/apps/plugins/invadrox.c
@@ -304,6 +304,13 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define RIGHT BUTTON_RIGHT
 #define FIRE  BUTTON_SELECT
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+
+#define QUIT  BUTTON_POWER
+#define LEFT  BUTTON_LEFT
+#define RIGHT BUTTON_RIGHT
+#define FIRE  BUTTON_A
+
 #else
     #error INVADROX: Unsupported keypad
 #endif
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index 0cf4fd1743..779febed22 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -399,6 +399,16 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define HK_SELECT "A"
 #define HK_CANCEL "B"
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_A
+#define JEWELS_CANCEL BUTTON_POWER
+#define HK_SELECT "A"
+#define HK_CANCEL "POWER"
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/lib/keymaps.h b/apps/plugins/lib/keymaps.h
index 3cd281bf2e..71d5b6ad5f 100644
--- a/apps/plugins/lib/keymaps.h
+++ b/apps/plugins/lib/keymaps.h
@@ -282,6 +282,14 @@
 #define BTN_FIRE        BUTTON_USER
 #define BTN_PAUSE       BUTTON_MENU
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define BTN_UP          BUTTON_UP
+#define BTN_DOWN        BUTTON_DOWN
+#define BTN_LEFT        BUTTON_LEFT
+#define BTN_RIGHT       BUTTON_RIGHT
+#define BTN_FIRE        BUTTON_A
+#define BTN_PAUSE       BUTTON_POWER
+
 #else
 #error Unsupported keypad
 #endif
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index 5d2c0e323a..5b175a66a4 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -293,6 +293,15 @@ const struct button_mapping pla_main_ctx[] =
     { PLA_DOWN_REPEAT,      BUTTON_DOWN|BUTTON_REPEAT,          BUTTON_NONE },
     { PLA_LEFT_REPEAT,      BUTTON_LEFT|BUTTON_REPEAT,          BUTTON_NONE },
     { PLA_RIGHT_REPEAT,     BUTTON_RIGHT|BUTTON_REPEAT,         BUTTON_NONE },
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+    { PLA_UP,               BUTTON_UP,                          BUTTON_NONE },
+    { PLA_DOWN,             BUTTON_DOWN,                        BUTTON_NONE },
+    { PLA_LEFT,             BUTTON_LEFT,                        BUTTON_NONE },
+    { PLA_RIGHT,            BUTTON_RIGHT,                       BUTTON_NONE },
+    { PLA_UP_REPEAT,        BUTTON_UP|BUTTON_REPEAT,            BUTTON_NONE },
+    { PLA_DOWN_REPEAT,      BUTTON_DOWN|BUTTON_REPEAT,          BUTTON_NONE },
+    { PLA_LEFT_REPEAT,      BUTTON_LEFT|BUTTON_REPEAT,          BUTTON_NONE },
+    { PLA_RIGHT_REPEAT,     BUTTON_RIGHT|BUTTON_REPEAT,         BUTTON_NONE },
 #else
 #   ifndef HAVE_TOUCHSCREEN
 #       error pluginlib_actions: No directions defined
@@ -540,6 +549,12 @@ const struct button_mapping pla_main_ctx[] =
     {PLA_SELECT,            BUTTON_SELECT,                      BUTTON_NONE},
     {PLA_SELECT_REL,        BUTTON_SELECT|BUTTON_REL,           BUTTON_SELECT},
     {PLA_SELECT_REPEAT,     BUTTON_SELECT|BUTTON_REPEAT,        BUTTON_NONE},
+#elif (CONFIG_KEYPAD == ECHO_R1_PAD)
+    {PLA_CANCEL,            BUTTON_B,                           BUTTON_NONE},
+    {PLA_EXIT,              BUTTON_POWER,                       BUTTON_NONE},
+    {PLA_SELECT,            BUTTON_A,                           BUTTON_NONE},
+    {PLA_SELECT_REL,        BUTTON_A|BUTTON_REL,                BUTTON_SELECT},
+    {PLA_SELECT_REPEAT,     BUTTON_A|BUTTON_REPEAT,             BUTTON_NONE},
 #else
 #   ifndef HAVE_TOUCHSCREEN
 #       error pluginlib_actions: No actions defined
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index 7f2c8ba2c6..5ec6e7ede4 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -343,6 +343,14 @@
 #define MIDI_VOL_DOWN   BUTTON_DOWN
 #define MIDI_PLAYPAUSE  BUTTON_USER
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define MIDI_QUIT       BUTTON_POWER
+#define MIDI_FFWD       BUTTON_RIGHT
+#define MIDI_REWIND     BUTTON_LEFT
+#define MIDI_VOL_UP     BUTTON_UP
+#define MIDI_VOL_DOWN   BUTTON_DOWN
+#define MIDI_PLAYPAUSE  BUTTON_A
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 0faff83f33..41145c90b8 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -464,6 +464,16 @@ CONFIG_KEYPAD == MROBE500_PAD
 #   define MINESWP_DISCOVER     BUTTON_SELECT
 #   define MINESWP_INFO         BUTTON_MENU
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_B
+#   define MINESWP_DISCOVER     BUTTON_A
+#   define MINESWP_INFO         BUTTON_START
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index b5790f3ae2..af998487e9 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2599,6 +2599,12 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define MP3ENC_DONE     BUTTON_POWER
 #define MP3ENC_SELECT   BUTTON_SELECT
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define MP3ENC_PREV     BUTTON_UP
+#define MP3ENC_NEXT     BUTTON_DOWN
+#define MP3ENC_DONE     BUTTON_POWER
+#define MP3ENC_SELECT   BUTTON_RIGHT
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 3dc621d2e9..3c6ec54a0e 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -373,6 +373,14 @@ struct mpeg_settings settings;
 #define MPEG_START_TIME_DOWN        BUTTON_DOWN
 #define MPEG_START_TIME_EXIT        BUTTON_BACK
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define MPEG_START_TIME_SELECT      BUTTON_A
+#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_B
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index fcbd872125..60522cd56c 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -506,6 +506,15 @@ CONFIG_KEYPAD == SANSA_M200_PAD
 #define MPEG_RW         BUTTON_LEFT
 #define MPEG_FF         BUTTON_RIGHT
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define MPEG_MENU       BUTTON_UP
+#define MPEG_PAUSE      BUTTON_DOWN
+#define MPEG_STOP       BUTTON_POWER
+#define MPEG_VOLDOWN    BUTTON_VOL_DOWN
+#define MPEG_VOLUP      BUTTON_VOL_UP
+#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 8888bdc356..4754416ab7 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -575,6 +575,17 @@
 #define OSCILLOSCOPE_VOL_UP          BUTTON_UP
 #define OSCILLOSCOPE_VOL_DOWN        BUTTON_DOWN
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define OSCILLOSCOPE_QUIT            BUTTON_POWER
+#define OSCILLOSCOPE_DRAWMODE        BUTTON_SELECT
+#define OSCILLOSCOPE_ADVMODE         BUTTON_START
+#define OSCILLOSCOPE_ORIENTATION     BUTTON_B
+#define OSCILLOSCOPE_PAUSE           BUTTON_A
+#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 e7cef86453..4292e47f18 100644
--- a/apps/plugins/pacbox/pacbox.h
+++ b/apps/plugins/pacbox/pacbox.h
@@ -428,6 +428,17 @@
 #define PACMAN_COIN     BUTTON_USER
 #define PACMAN_MENU     BUTTON_MENU
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+
+#define PACMAN_UP       BUTTON_RIGHT
+#define PACMAN_DOWN     BUTTON_LEFT
+#define PACMAN_LEFT     BUTTON_UP
+#define PACMAN_RIGHT    BUTTON_DOWN
+#define PACMAN_1UP      BUTTON_SELECT
+#define PACMAN_2UP      BUTTON_START
+#define PACMAN_COIN     BUTTON_X
+#define PACMAN_MENU     BUTTON_VOL_UP
+
 #else
 
 #error Keymap not defined!
@@ -533,7 +544,7 @@
    NOTE: pacbox.c assumes this is an integer divisor of 60
  */
 #if defined(TOSHIBA_GIGABEAT_S) || defined (TOSHIBA_GIGABEAT_F) || \
-    defined(SANSA_FUZEPLUS)
+    defined(SANSA_FUZEPLUS) || defined(ECHO_R1)
 /* Gigabeat S,F and Sansa Fuze+ can manage the full framerate
    (1 in 1 frames) */
 #define FPS 60
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c
index 1074555399..7fbac41335 100644
--- a/apps/plugins/pegbox.c
+++ b/apps/plugins/pegbox.c
@@ -747,6 +747,23 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define LVL_DOWN_TEXT "Start"
 #define SELECT_TEXT "A"
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define PEGBOX_SELECT   BUTTON_A
+#define PEGBOX_QUIT     BUTTON_POWER
+#define PEGBOX_RESTART  BUTTON_X
+#define PEGBOX_LVL_UP   BUTTON_START
+#define PEGBOX_LVL_DOWN BUTTON_SELECT
+#define PEGBOX_UP       BUTTON_UP
+#define PEGBOX_DOWN     BUTTON_DOWN
+#define PEGBOX_RIGHT    BUTTON_RIGHT
+#define PEGBOX_LEFT     BUTTON_LEFT
+
+#define QUIT_TEXT "Power"
+#define RESTART_TEXT "X"
+#define LVL_UP_TEXT "Start"
+#define LVL_DOWN_TEXT "Select"
+#define SELECT_TEXT "A"
+
 #else
 #error "Unsupported keymap!"
 #endif
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index e7c5e5671c..a7aa93724f 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -344,6 +344,14 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define PONG_RIGHT_UP   BUTTON_MENU
 #define PONG_RIGHT_DOWN BUTTON_POWER
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define PONG_QUIT       BUTTON_POWER
+#define PONG_PAUSE      BUTTON_START
+#define PONG_LEFT_UP    BUTTON_Y
+#define PONG_LEFT_DOWN  BUTTON_LEFT
+#define PONG_RIGHT_UP   BUTTON_B
+#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 b8883c7a50..c73acb2797 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -381,6 +381,15 @@
 #define REVERSI_BUTTON_MAKE_MOVE    BUTTON_SELECT
 #define REVERSI_BUTTON_MENU         BUTTON_MENU
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define REVERSI_BUTTON_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_A
+#define REVERSI_BUTTON_MENU         BUTTON_START
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index 306568b76a..bdc3795301 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -494,6 +494,19 @@
 #define ROCKBLOX_DROP          BUTTON_SELECT
 #define ROCKBLOX_RESTART       BUTTON_USER
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+
+#define ROCKBLOX_OFF           BUTTON_POWER
+#define ROCKBLOX_LEFT          BUTTON_LEFT
+#define ROCKBLOX_RIGHT         BUTTON_RIGHT
+#define ROCKBLOX_ROTATE_CCW    BUTTON_UP
+#define ROCKBLOX_ROTATE_CW     BUTTON_DOWN
+#define ROCKBLOX_ROTATE_CCW2   BUTTON_Y
+#define ROCKBLOX_ROTATE_CW2    BUTTON_B
+#define ROCKBLOX_DOWN          BUTTON_X
+#define ROCKBLOX_DROP          BUTTON_A
+#define ROCKBLOX_RESTART       BUTTON_START
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index 16889108b9..96fb2c68ba 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -494,6 +494,18 @@ static void setoptions (void)
         options.SELECT = BUTTON_USER;
         options.MENU   = BUTTON_MENU;
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+        options.UP     = BUTTON_UP;
+        options.DOWN   = BUTTON_DOWN;
+        options.LEFT   = BUTTON_LEFT;
+        options.RIGHT  = BUTTON_RIGHT;
+
+        options.A      = BUTTON_A;
+        options.B      = BUTTON_B;
+        options.START  = BUTTON_START;
+        options.SELECT = BUTTON_SELECT;
+        options.MENU   = BUTTON_POWER;
+
 #else
 #error No Keymap Defined!
 #endif
diff --git a/apps/plugins/rockpaint.c b/apps/plugins/rockpaint.c
index 6fdedb0736..bfde6c53f0 100644
--- a/apps/plugins/rockpaint.c
+++ b/apps/plugins/rockpaint.c
@@ -439,6 +439,17 @@
 #define ROCKPAINT_LEFT      BUTTON_LEFT
 #define ROCKPAINT_RIGHT     BUTTON_RIGHT
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define ROCKPAINT_QUIT      BUTTON_POWER
+#define ROCKPAINT_DRAW      BUTTON_A
+#define ROCKPAINT_MENU      BUTTON_B
+#define ROCKPAINT_TOOLBAR   BUTTON_X
+#define ROCKPAINT_TOOLBAR2  BUTTON_Y
+#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 d3c223e2ec..d3189945ee 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -377,6 +377,15 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define PUZZLE_SHUFFLE  BUTTON_SELECT
 #define PUZZLE_PICTURE  BUTTON_MENU
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_SELECT
+#define PUZZLE_PICTURE  BUTTON_START
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index a2213cf0b5..49c4ca81e8 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -331,6 +331,14 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
 #define SNAKE_DOWN      BUTTON_DOWN
 #define SNAKE_PLAYPAUSE BUTTON_SELECT
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_START
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index 9a269b48be..b5f15b80c2 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -478,6 +478,15 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define SNAKE2_PLAYPAUSE    BUTTON_SELECT
 #define SNAKE2_PLAYPAUSE_TEXT "A"
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_PLAYPAUSE    BUTTON_START
+#define SNAKE2_PLAYPAUSE_TEXT "START"
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index ae5ccf1574..027ad99c7e 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -733,6 +733,19 @@
 #define SOKOBAN_LEVEL_REPEAT_NAME "[TOPRIGHT]"
 #define BUTTON_SAVE_NAME      "A [CENTER]"
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_POWER
+#define SOKOBAN_UNDO         BUTTON_X
+#define SOKOBAN_REDO         BUTTON_Y
+#define SOKOBAN_LEVEL_REPEAT BUTTON_SELECT
+#define SOKOBAN_PAUSE        BUTTON_START
+#define BUTTON_SAVE          BUTTON_A
+#define BUTTON_SAVE_NAME     "A"
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 215412164a..aa5f876c80 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -780,6 +780,24 @@ CONFIG_KEYPAD == MROBE500_PAD
 #   define HK_REM2STACK     "MENU+UP"
 
 
+#elif (CONFIG_KEYPAD == ECHO_R1_PAD)
+#   define SOL_QUIT         BUTTON_POWER
+#   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_A
+#   define SOL_MOVE         (BUTTON_A | BUTTON_REL)
+#   define SOL_DRAW         BUTTON_X
+#   define SOL_REM2CUR      (BUTTON_Y | BUTTON_REPEAT)
+#   define SOL_CUR2STACK    (BUTTON_A | BUTTON_REPEAT)
+#   define SOL_REM2STACK    BUTTON_START
+#   define HK_MOVE         "A"
+#   define HK_DRAW         "X"
+#   define HK_REM2CUR      "Long Y"
+#   define HK_CUR2STACK    "Long A.."
+#   define HK_REM2STACK    "Start"
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 1555c2d4ad..611a373418 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -392,6 +392,16 @@
 #define AST_RIGHT       BUTTON_RIGHT
 #define AST_FIRE        BUTTON_SELECT
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+
+#define AST_PAUSE       BUTTON_START
+#define AST_QUIT        BUTTON_POWER
+#define AST_THRUST      BUTTON_UP
+#define AST_HYPERSPACE  BUTTON_DOWN
+#define AST_LEFT        BUTTON_LEFT
+#define AST_RIGHT       BUTTON_RIGHT
+#define AST_FIRE        BUTTON_A
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index 14c4d671e2..735fb3bc60 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -704,6 +704,23 @@
 #define STAR_LEVEL_DOWN_NAME "Start"
 #define STAR_LEVEL_REPEAT_NAME "Y"
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_A
+#define STAR_LEVEL_UP       BUTTON_START
+#define STAR_LEVEL_DOWN     BUTTON_SELECT
+#define STAR_LEVEL_REPEAT   BUTTON_X
+#define STAR_TOGGLE_CONTROL_NAME "A"
+#define STAR_QUIT_NAME      "Power"
+#define STAR_LEVEL_UP_NAME  "Start"
+#define STAR_LEVEL_DOWN_NAME "Select"
+#define STAR_LEVEL_REPEAT_NAME "X"
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index c0a6b2dc01..550904efd9 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -313,6 +313,14 @@
 #define STOPWATCH_SCROLL_UP     BUTTON_UP
 #define STOPWATCH_SCROLL_DOWN   BUTTON_DOWN
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define STOPWATCH_QUIT          BUTTON_POWER
+#define STOPWATCH_START_STOP    BUTTON_START
+#define STOPWATCH_RESET_TIMER   BUTTON_SELECT
+#define STOPWATCH_LAP_TIMER     BUTTON_RIGHT
+#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 fe2bf6c592..c43a6b0d96 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -482,6 +482,16 @@
 #define SUDOKU_BUTTON_TOGGLE     BUTTON_SELECT
 #define SUDOKU_BUTTON_POSSIBLE   BUTTON_USER
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_MENU       BUTTON_START
+#define SUDOKU_BUTTON_TOGGLE     BUTTON_A
+#define SUDOKU_BUTTON_POSSIBLE   BUTTON_B
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/text_viewer/tv_button.h b/apps/plugins/text_viewer/tv_button.h
index 03256fe3fd..d1bacb1f10 100644
--- a/apps/plugins/text_viewer/tv_button.h
+++ b/apps/plugins/text_viewer/tv_button.h
@@ -597,6 +597,16 @@
 #define TV_AUTOSCROLL   BUTTON_USER
 #define TV_BOOKMARK     BUTTON_SELECT
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define TV_QUIT         BUTTON_POWER
+#define TV_SCROLL_UP    BUTTON_UP
+#define TV_SCROLL_DOWN  BUTTON_DOWN
+#define TV_SCREEN_LEFT  BUTTON_LEFT
+#define TV_SCREEN_RIGHT BUTTON_RIGHT
+#define TV_MENU         BUTTON_START
+#define TV_AUTOSCROLL   BUTTON_A
+#define TV_BOOKMARK     BUTTON_B
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index d18b6a658c..e1178fc691 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -479,6 +479,17 @@
 #define LABEL_MENU   "X"
 #define LABEL_VOLUME "Up/Down"
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+#define VUMETER_QUIT BUTTON_POWER
+#define VUMETER_HELP BUTTON_SELECT
+#define VUMETER_MENU BUTTON_START
+#define VUMETER_UP   BUTTON_UP
+#define VUMETER_DOWN BUTTON_DOWN
+#define LABEL_HELP   "Select"
+#define LABEL_QUIT   "Power"
+#define LABEL_MENU   "Start"
+#define LABEL_VOLUME "Up/Down"
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 5c30c7eb72..fec98315af 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -428,6 +428,16 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define BTN_QUIT        BUTTON_BACK
 #define BTN_STOPRESET   BUTTON_MENU
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_START
+#define BTN_QUIT        BUTTON_POWER
+#define BTN_STOPRESET   BUTTON_SELECT
+
 #else
 #error No keymap defined!
 #endif
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index 84f8fe8698..445ca77b18 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -371,6 +371,15 @@ CONFIG_KEYPAD == MROBE500_PAD
 #define DOWN  BUTTON_DOWN
 #define PAUSE BUTTON_SELECT
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+
+#define QUIT  BUTTON_POWER
+#define LEFT  BUTTON_LEFT
+#define RIGHT BUTTON_RIGHT
+#define UP    BUTTON_UP
+#define DOWN  BUTTON_DOWN
+#define PAUSE BUTTON_START
+
 #else
 #error "No keymap defined!"
 #endif
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index 0bb7d3e80f..fa7394abfa 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -310,6 +310,15 @@
 #define ZX_SELECT       BUTTON_SELECT
 #define ZX_MENU         BUTTON_MENU
 
+#elif CONFIG_KEYPAD == ECHO_R1_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_A
+#define ZX_MENU         BUTTON_POWER
+
 #else
 #error Keymap not defined!
 
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c
index 6a5c2a6c81..053215ce6d 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -300,6 +300,15 @@
 #define KBD_UP     BUTTON_UP
 #define KBD_DOWN   BUTTON_DOWN
 
+#elif CONFIG_KEYPAD == ECHO_R1_PAD
+
+#define KBD_SELECT BUTTON_A
+#define KBD_ABORT  BUTTON_B
+#define KBD_LEFT   BUTTON_LEFT
+#define KBD_RIGHT  BUTTON_RIGHT
+#define KBD_UP     BUTTON_UP
+#define KBD_DOWN   BUTTON_DOWN
+
 #endif
 
 #ifdef HAVE_TOUCHSCREEN
diff --git a/tools/configure b/tools/configure
index 6d798820fa..ff19ab75ab 100755
--- a/tools/configure
+++ b/tools/configure
@@ -4105,7 +4105,7 @@ fi
     memory=32
     armcortexm7cc
     appextra="recorder:gui"
-    plugins="no"
+    plugins="yes"
     tool="cp "
     boottool="cp "
     output="rockbox.echo"
-- 
rockbox-cvs mailing list
[email protected]
https://lists.haxx.se/mailman/listinfo/rockbox-cvs