summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/SOURCES6
-rw-r--r--apps/keymaps/keymap-dx50.c219
-rw-r--r--apps/main.c2
-rw-r--r--apps/plugins/battery_bench.c6
-rw-r--r--apps/plugins/blackjack.c14
-rw-r--r--apps/plugins/brickmania.c7
-rw-r--r--apps/plugins/calculator.c3
-rw-r--r--apps/plugins/calendar.c10
-rw-r--r--apps/plugins/chessbox/chessbox_pgn.h13
-rw-r--r--apps/plugins/chessclock.c9
-rw-r--r--apps/plugins/chip8.c3
-rw-r--r--apps/plugins/clix.c3
-rw-r--r--apps/plugins/cube.c8
-rw-r--r--apps/plugins/doom/i_video.c6
-rw-r--r--apps/plugins/fft/fft.c5
-rw-r--r--apps/plugins/flipit.c12
-rw-r--r--apps/plugins/fractals/fractal.h3
-rw-r--r--apps/plugins/goban/goban.h3
-rw-r--r--apps/plugins/imageviewer/imageviewer_button.h8
-rw-r--r--apps/plugins/invadrox.c7
-rw-r--r--apps/plugins/jewels.c4
-rw-r--r--apps/plugins/lib/pluginlib_actions.c7
-rw-r--r--apps/plugins/midi/midiplay.c7
-rw-r--r--apps/plugins/minesweeper.c3
-rw-r--r--apps/plugins/mp3_encoder.c5
-rw-r--r--apps/plugins/mpegplayer/mpeg_settings.c8
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c9
-rw-r--r--apps/plugins/oscilloscope.c5
-rw-r--r--apps/plugins/pacbox/pacbox.h3
-rw-r--r--apps/plugins/pegbox.c5
-rw-r--r--apps/plugins/plugins.make4
-rw-r--r--apps/plugins/pong.c3
-rw-r--r--apps/plugins/reversi/reversi-gui.h4
-rw-r--r--apps/plugins/rockblox.c8
-rw-r--r--apps/plugins/rockboy/rockboy.c9
-rw-r--r--apps/plugins/rockpaint.c3
-rw-r--r--apps/plugins/sliding_puzzle.c6
-rw-r--r--apps/plugins/snake.c8
-rw-r--r--apps/plugins/snake2.c9
-rw-r--r--apps/plugins/sokoban.c8
-rw-r--r--apps/plugins/solitaire.c3
-rw-r--r--apps/plugins/spacerocks.c8
-rw-r--r--apps/plugins/star.c4
-rw-r--r--apps/plugins/sudoku/sudoku.h3
-rw-r--r--apps/plugins/text_viewer/tv_button.h10
-rw-r--r--apps/plugins/vu_meter.c8
-rw-r--r--apps/plugins/wormlet.c9
-rw-r--r--apps/plugins/xobox.c8
-rw-r--r--apps/plugins/zxbox/keymaps.h8
-rw-r--r--apps/root_menu.c4
50 files changed, 523 insertions, 7 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index 1aa4955205..6118438b40 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -100,7 +100,7 @@ gui/statusbar.c
100#ifdef HAVE_LCD_BITMAP 100#ifdef HAVE_LCD_BITMAP
101gui/statusbar-skinned.c 101gui/statusbar-skinned.c
102#endif 102#endif
103#if (CONFIG_PLATFORM&PLATFORM_ANDROID) 103#if (CONFIG_PLATFORM&PLATFORM_ANDROID) && !defined (DX50) && !defined(DX90)
104hosted/android/yesno.c 104hosted/android/yesno.c
105hosted/android/notification.c 105hosted/android/notification.c
106#else 106#else
@@ -129,7 +129,7 @@ player/keyboard.c
129#ifdef HAVE_LCD_BITMAP 129#ifdef HAVE_LCD_BITMAP
130recorder/bmp.c 130recorder/bmp.c
131recorder/icons.c 131recorder/icons.c
132#if (CONFIG_PLATFORM&PLATFORM_ANDROID) 132#if (CONFIG_PLATFORM&PLATFORM_ANDROID) && !defined (DX50) && !defined(DX90)
133hosted/android/keyboard.c 133hosted/android/keyboard.c
134#else 134#else
135recorder/keyboard.c 135recorder/keyboard.c
@@ -305,4 +305,6 @@ keymaps/keymap-ypz5.c
305keymaps/keymap-ihifi.c 305keymaps/keymap-ihifi.c
306#elif CONFIG_KEYPAD == SAMSUNG_YPR1_PAD 306#elif CONFIG_KEYPAD == SAMSUNG_YPR1_PAD
307keymaps/keymap-ypr1.c 307keymaps/keymap-ypr1.c
308#elif CONFIG_KEYPAD == DX50_PAD
309keymaps/keymap-dx50.c
308#endif 310#endif
diff --git a/apps/keymaps/keymap-dx50.c b/apps/keymaps/keymap-dx50.c
new file mode 100644
index 0000000000..ee3b32005a
--- /dev/null
+++ b/apps/keymaps/keymap-dx50.c
@@ -0,0 +1,219 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2010 Maurus Cuelenaere
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22/* Button Code Definitions for iBasso DX50 & DX90 */
23
24#include <stdio.h>
25#include <string.h>
26#include <stdlib.h>
27
28#include "config.h"
29#include "action.h"
30#include "button.h"
31#include "settings.h"
32
33/*
34 * The format of the list is as follows
35 * { Action Code, Button code, Prereq button code }
36 * if there's no need to check the previous button's value, use BUTTON_NONE
37 * Insert LAST_ITEM_IN_LIST at the end of each mapping
38 */
39
40static const struct button_mapping button_context_standard[] = {
41 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
42 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
43 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
44 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
45 { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
46 { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
47 { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
48
49 LAST_ITEM_IN_LIST
50}; /* button_context_standard */
51
52static const struct button_mapping button_context_wps[] = {
53 { ACTION_WPS_MENU, BUTTON_POWER, BUTTON_NONE },
54 { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
55 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
56 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
57 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
58 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
59 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
60 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
61 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
62 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
63 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
64 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
65 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
66 LAST_ITEM_IN_LIST
67}; /* button_context_wps */
68
69static const struct button_mapping button_context_list[] = {
70#ifdef HAVE_VOLUME_IN_LIST
71 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
72 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
73 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
74 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
75#endif
76 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
77}; /* button_context_list */
78
79static const struct button_mapping button_context_tree[] = {
80
81 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
82}; /* button_context_tree */
83
84static const struct button_mapping button_context_listtree_scroll_with_combo[] = {
85 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
86};
87
88static const struct button_mapping button_context_listtree_scroll_without_combo[] = {
89 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
90};
91
92static const struct button_mapping button_context_settings[] = {
93 { ACTION_SETTINGS_INC, BUTTON_VOL_UP|BUTTON_REL, BUTTON_NONE },
94 { ACTION_SETTINGS_INCREPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
95 { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_NONE },
96 { ACTION_SETTINGS_DECREPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
97 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
98}; /* button_context_settings */
99
100static const struct button_mapping button_context_settings_right_is_inc[] = {
101
102 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
103}; /* button_context_settingsgraphical */
104
105static const struct button_mapping button_context_mainmenu[] = {
106
107 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_TREE),
108}; /* button_context_mainmenu */
109
110static const struct button_mapping button_context_yesno[] = {
111 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
112
113 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
114}; /* button_context_settings_yesno */
115
116static const struct button_mapping button_context_colorchooser[] = {
117 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
118}; /* button_context_colorchooser */
119
120static const struct button_mapping button_context_eq[] = {
121 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
122}; /* button_context_eq */
123
124static const struct button_mapping button_context_keyboard[] = {
125 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
126 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
127 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
128 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
129
130 { ACTION_KBD_CURSOR_LEFT, BUTTON_PLAY|BUTTON_LEFT, BUTTON_NONE },
131 { ACTION_KBD_CURSOR_LEFT, BUTTON_PLAY|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
132 { ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_NONE },
133 { ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
134 { ACTION_KBD_SELECT, BUTTON_PLAY, BUTTON_NONE },
135
136 { ACTION_KBD_UP, BUTTON_VOL_UP, BUTTON_NONE },
137 { ACTION_KBD_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
138 { ACTION_KBD_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
139 { ACTION_KBD_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
140
141 LAST_ITEM_IN_LIST
142}; /* button_context_keyboard */
143
144/** Bookmark Screen **/
145static const struct button_mapping button_context_bmark[] = {
146 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
147}; /* button_context_bmark */
148
149static const struct button_mapping button_context_time[] = {
150 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
151}; /* button_context_time */
152
153static const struct button_mapping button_context_quickscreen[] = {
154 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
155}; /* button_context_quickscreen */
156
157static const struct button_mapping button_context_pitchscreen[] = {
158
159 { ACTION_PS_INC_SMALL, BUTTON_VOL_UP|BUTTON_REL, BUTTON_NONE },
160 { ACTION_PS_DEC_SMALL, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_NONE },
161 { ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE },
162
163 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
164}; /* button_context_pitchcreen */
165
166
167static const struct button_mapping button_context_radio[] = {
168 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
169}; /* button_context_radio */
170
171const struct button_mapping* target_get_context_mapping(int context)
172{
173 switch (context)
174 {
175 case CONTEXT_STD:
176 return button_context_standard;
177 case CONTEXT_WPS:
178 return button_context_wps;
179
180 case CONTEXT_LIST:
181 return button_context_list;
182 case CONTEXT_MAINMENU:
183 return button_context_mainmenu;
184 case CONTEXT_TREE:
185 if (global_settings.hold_lr_for_scroll_in_list)
186 return button_context_listtree_scroll_without_combo;
187 else
188 return button_context_listtree_scroll_with_combo;
189 case CONTEXT_CUSTOM|CONTEXT_TREE:
190 return button_context_tree;
191
192 case CONTEXT_SETTINGS:
193 return button_context_settings;
194 case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
195 case CONTEXT_SETTINGS_RECTRIGGER:
196 return button_context_settings_right_is_inc;
197
198 case CONTEXT_SETTINGS_COLOURCHOOSER:
199 return button_context_colorchooser;
200 case CONTEXT_SETTINGS_EQ:
201 return button_context_eq;
202
203 case CONTEXT_SETTINGS_TIME:
204 return button_context_time;
205
206 case CONTEXT_KEYBOARD:
207 return button_context_keyboard;
208
209 case CONTEXT_FM:
210 return button_context_radio;
211 case CONTEXT_BOOKMARKSCREEN:
212 return button_context_bmark;
213 case CONTEXT_QUICKSCREEN:
214 return button_context_quickscreen;
215 case CONTEXT_PITCHSCREEN:
216 return button_context_pitchscreen;
217 }
218 return button_context_standard;
219}
diff --git a/apps/main.c b/apps/main.c
index 9098180fb8..60164515fa 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -340,7 +340,7 @@ static void init(void)
340#ifdef SIMULATOR 340#ifdef SIMULATOR
341 sim_tasks_init(); 341 sim_tasks_init();
342#endif 342#endif
343#if (CONFIG_PLATFORM & PLATFORM_ANDROID) 343#if (CONFIG_PLATFORM & PLATFORM_ANDROID) && !defined(DX50) && !defined(DX90)
344 notification_init(); 344 notification_init();
345#endif 345#endif
346 lang_init(core_language_builtin, language_strings, 346 lang_init(core_language_builtin, language_strings,
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index 930d56f29a..b0976d5e10 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -261,6 +261,12 @@
261#define BATTERY_ON_TXT "PLAY - start" 261#define BATTERY_ON_TXT "PLAY - start"
262#define BATTERY_OFF_TXT "Power" 262#define BATTERY_OFF_TXT "Power"
263 263
264#elif CONFIG_KEYPAD == DX50_PAD
265#define BATTERY_ON BUTTON_PLAY
266#define BATTERY_OFF BUTTON_POWER
267#define BATTERY_OFF_TXT "POWER"
268#define BATTERY_ON_TXT "PLAY - start"
269
264#else 270#else
265#error No keymap defined! 271#error No keymap defined!
266#endif 272#endif
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index 2211f88620..4022696a1f 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -541,6 +541,20 @@ enum {
541#define BJACK_QUIT_NAME "Back" 541#define BJACK_QUIT_NAME "Back"
542#define BJACK_DOUBLE_NAME "Shortcut" 542#define BJACK_DOUBLE_NAME "Shortcut"
543 543
544#elif CONFIG_KEYPAD == DX50_PAD
545#define BJACK_QUIT BUTTON_POWER
546#define BJACK_DOUBLEDOWN BUTTON_RIGHT
547#define BJACK_SELECT BUTTON_PLAY
548#define BJACK_QUIT BUTTON_POWER
549#define BJACK_STAY BUTTON_LEFT
550#define BJACK_UP BUTTON_VOL_UP
551#define BJACK_DOWN BUTTON_VOL_DOWN
552#define BJACK_LEFT BUTTON_LEFT
553#define BJACK_SELECT_NAME "Play"
554#define BJACK_STAY_NAME "Left"
555#define BJACK_QUIT_NAME "Power"
556#define BJACK_DOUBLE_NAME "Right"
557
544#else 558#else
545#error No keymap defined! 559#error No keymap defined!
546#endif 560#endif
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index ee72e0bf37..0c9223d398 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -311,6 +311,13 @@ CONFIG_KEYPAD == SANSA_CONNECT_PAD
311#define UP BUTTON_UP 311#define UP BUTTON_UP
312#define DOWN BUTTON_DOWN 312#define DOWN BUTTON_DOWN
313 313
314#elif CONFIG_KEYPAD == DX50_PAD
315#define QUIT BUTTON_POWER
316#define LEFT BUTTON_LEFT
317#define RIGHT BUTTON_RIGHT
318#define SELECT BUTTON_PLAY
319#define UP BUTTON_VOL_UP
320#define DOWN BUTTON_VOL_DOWN
314 321
315#else 322#else
316#error No keymap defined! 323#error No keymap defined!
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index 6c75595f9e..c378ecbb81 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -497,6 +497,9 @@ F3: equal to "="
497#define CALCULATOR_CALC BUTTON_PLAYPAUSE 497#define CALCULATOR_CALC BUTTON_PLAYPAUSE
498#define CALCULATOR_CLEAR BUTTON_SHORTCUT 498#define CALCULATOR_CLEAR BUTTON_SHORTCUT
499 499
500#elif CONFIG_KEYPAD == DX50_PAD
501#define CALCULATOR_QUIT BUTTON_POWER
502
500#else 503#else
501#error No keymap defined! 504#error No keymap defined!
502#endif 505#endif
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c
index 2e0577fc73..91613fcf88 100644
--- a/apps/plugins/calendar.c
+++ b/apps/plugins/calendar.c
@@ -369,6 +369,16 @@
369#define CALENDAR_NEXT_MONTH BUTTON_SHORTCUT 369#define CALENDAR_NEXT_MONTH BUTTON_SHORTCUT
370#define CALENDAR_PREV_MONTH BUTTON_MENU 370#define CALENDAR_PREV_MONTH BUTTON_MENU
371 371
372#elif CONFIG_KEYPAD == DX50_PAD
373#define CALENDAR_QUIT (BUTTON_POWER|BUTTON_REL)
374#define CALENDAR_SELECT BUTTON_PLAY
375#define CALENDAR_NEXT_WEEK BUTTON_VOL_DOWN
376#define CALENDAR_PREV_WEEK BUTTON_VOL_UP
377#define CALENDAR_NEXT_DAY BUTTON_RIGHT
378#define CALENDAR_PREV_DAY BUTTON_LEFT
379#define CALENDAR_NEXT_MONTH BUTTON_BOTTOMRIGHT
380#define CALENDAR_PREV_MONTH BUTTON_BOTTOMLEFT
381
372#else 382#else
373#error "No keypad setting." 383#error "No keypad setting."
374#endif 384#endif
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h
index c7aca0f939..df6a01c891 100644
--- a/apps/plugins/chessbox/chessbox_pgn.h
+++ b/apps/plugins/chessbox/chessbox_pgn.h
@@ -485,6 +485,19 @@
485#define CB_MENU BUTTON_MENU 485#define CB_MENU BUTTON_MENU
486#define CB_LEVEL BUTTON_BACK 486#define CB_LEVEL BUTTON_BACK
487 487
488#elif CONFIG_KEYPAD == DX50_PAD
489#define CB_SELECT BUTTON_PLAY
490#define CB_UP BUTTON_VOL_UP
491#define CB_DOWN BUTTON_VOL_DOWN
492#define CB_LEFT BUTTON_LEFT
493#define CB_RIGHT BUTTON_RIGHT
494#define CB_PLAY (BUTTON_PLAY|BUTTON_REPEAT)
495#define CB_MENU BUTTON_POWER
496#define CB_SCROLL_UP (BUTTON_VOL_UP|BUTTON_REPEAT)
497#define CB_SCROLL_DOWN (BUTTON_VOL_DOWN|BUTTON_REPEAT)
498#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
499#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
500
488#else 501#else
489#error No keymap defined! 502#error No keymap defined!
490#endif 503#endif
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index cacfbbe939..01895d20f8 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -387,6 +387,15 @@
387#define CHC_SETTINGS_OK BUTTON_SELECT 387#define CHC_SETTINGS_OK BUTTON_SELECT
388#define CHC_SETTINGS_CANCEL BUTTON_BACK 388#define CHC_SETTINGS_CANCEL BUTTON_BACK
389 389
390#elif CONFIG_KEYPAD == DX50_PAD
391#define CHC_QUIT (BUTTON_POWER|BUTTON_REPEAT)
392#define CHC_RESET (BUTTON_PLAY|BUTTON_REPEAT)
393#define CHC_MENU BUTTON_RIGHT
394#define CHC_STARTSTOP BUTTON_PLAY
395#define CHC_SETTINGS_INC BUTTON_VOL_UP
396#define CHC_SETTINGS_DEC BUTTON_VOL_DOWN
397#define CHC_SETTINGS_CANCEL BUTTON_RIGHT
398
390#else 399#else
391#error No keymap defined! 400#error No keymap defined!
392#endif 401#endif
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index d1a8285ace..efb62eb27e 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1259,6 +1259,9 @@ CONFIG_KEYPAD == MROBE500_PAD
1259#define CHIP8_KEY8 BUTTON_PLAY 1259#define CHIP8_KEY8 BUTTON_PLAY
1260#define CHIP8_KEY9 BUTTON_POWER 1260#define CHIP8_KEY9 BUTTON_POWER
1261 1261
1262#elif (CONFIG_KEYPAD == DX50_PAD)
1263#define CHIP8_OFF BUTTON_POWER
1264
1262#else 1265#else
1263#error No keymap defined! 1266#error No keymap defined!
1264#endif 1267#endif
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c
index c204663cf5..ffbb01abb8 100644
--- a/apps/plugins/clix.c
+++ b/apps/plugins/clix.c
@@ -253,6 +253,9 @@
253#elif (CONFIG_KEYPAD == SAMSUNG_YPR1_PAD) 253#elif (CONFIG_KEYPAD == SAMSUNG_YPR1_PAD)
254#define CLIX_BUTTON_QUIT BUTTON_POWER 254#define CLIX_BUTTON_QUIT BUTTON_POWER
255 255
256#elif (CONFIG_KEYPAD == DX50_PAD)
257#define CLIX_BUTTON_QUIT BUTTON_POWER
258
256#else 259#else
257#error "no keymap" 260#error "no keymap"
258#endif 261#endif
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index 5331d531db..09993204cd 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -390,6 +390,14 @@
390#define CUBE_PAUSE BUTTON_PLAYPAUSE 390#define CUBE_PAUSE BUTTON_PLAYPAUSE
391#define CUBE_HIGHSPEED BUTTON_SHORTCUT 391#define CUBE_HIGHSPEED BUTTON_SHORTCUT
392 392
393#elif (CONFIG_KEYPAD == DX50_PAD)
394#define CUBE_QUIT (BUTTON_POWER|BUTTON_REL)
395#define CUBE_NEXT BUTTON_RIGHT
396#define CUBE_PREV BUTTON_LEFT
397#define CUBE_INC BUTTON_VOL_UP
398#define CUBE_DEC BUTTON_VOL_DOWN
399#define CUBE_MODE BUTTON_PLAY
400
393#else 401#else
394#error No keymap defined! 402#error No keymap defined!
395#endif 403#endif
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index c285215e50..11aa712d33 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -523,6 +523,12 @@ void I_ShutdownGraphics(void)
523#define DOOMBUTTON_WEAPON BUTTON_SHORTCUT 523#define DOOMBUTTON_WEAPON BUTTON_SHORTCUT
524#define DOOMBUTTON_MAP BUTTON_MENU 524#define DOOMBUTTON_MAP BUTTON_MENU
525 525
526#elif CONFIG_KEYPAD == DX50_PAD
527#define DOOMBUTTON_ESC BUTTON_POWER
528#define DOOMBUTTON_SHOOT BUTTON_VOL_UP
529#define DOOMBUTTON_WEAPON BUTTON_VOL_DOWN
530#define DOOMBUTTON_MAP BUTTON_PLAY
531
526#else 532#else
527#error Keymap not defined! 533#error Keymap not defined!
528#endif 534#endif
diff --git a/apps/plugins/fft/fft.c b/apps/plugins/fft/fft.c
index d4b79b2ea7..9871c31eb9 100644
--- a/apps/plugins/fft/fft.c
+++ b/apps/plugins/fft/fft.c
@@ -320,6 +320,11 @@ GREY_INFO_STRUCT
320# define FFT_ORIENTATION BUTTON_SELECT 320# define FFT_ORIENTATION BUTTON_SELECT
321# define FFT_WINDOW BUTTON_MENU 321# define FFT_WINDOW BUTTON_MENU
322 322
323#elif (CONFIG_KEYPAD == DX50_PAD)
324# define FFT_QUIT (BUTTON_POWER|BUTTON_REL)
325# define FFT_PREV_GRAPH BUTTON_VOL_UP
326# define FFT_NEXT_GRAPH BUTTON_VOL_DOWN
327
323#elif !defined(HAVE_TOUCHSCREEN) 328#elif !defined(HAVE_TOUCHSCREEN)
324#error No keymap defined! 329#error No keymap defined!
325#endif 330#endif
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 6274af4f1d..d3dc98aa54 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -453,6 +453,18 @@
453#define FLIPIT_STEP_BY_STEP BUTTON_PLAY 453#define FLIPIT_STEP_BY_STEP BUTTON_PLAY
454#define FLIPIT_TOGGLE BUTTON_SELECT 454#define FLIPIT_TOGGLE BUTTON_SELECT
455 455
456#elif CONFIG_KEYPAD == DX50_PAD
457
458#define FLIPIT_LEFT BUTTON_LEFT
459#define FLIPIT_RIGHT BUTTON_RIGHT
460#define FLIPIT_UP BUTTON_VOL_UP
461#define FLIPIT_DOWN BUTTON_VOL_DOWN
462#define FLIPIT_QUIT (BUTTON_POWER|BUTTON_REL)
463#define FLIPIT_SHUFFLE (BUTTON_VOL_UP|BUTTON_POWER)
464#define FLIPIT_SOLVE (BUTTON_VOL_DOWN|BUTTON_POWER)
465#define FLIPIT_STEP_BY_STEP (BUTTON_LEFT|BUTTON_POWER)
466#define FLIPIT_TOGGLE BUTTON_PLAY
467
456#else 468#else
457#error No keymap defined! 469#error No keymap defined!
458#endif 470#endif
diff --git a/apps/plugins/fractals/fractal.h b/apps/plugins/fractals/fractal.h
index b5ab0d31c9..7e13657595 100644
--- a/apps/plugins/fractals/fractal.h
+++ b/apps/plugins/fractals/fractal.h
@@ -451,6 +451,9 @@
451#define FRACTAL_PRECISION_DEC (BUTTON_POWER|BUTTON_MENU) 451#define FRACTAL_PRECISION_DEC (BUTTON_POWER|BUTTON_MENU)
452#define FRACTAL_RESET BUTTON_SHORTCUT 452#define FRACTAL_RESET BUTTON_SHORTCUT
453 453
454#elif CONFIG_KEYPAD == DX50_PAD
455#define FRACTAL_QUIT (BUTTON_POWER|BUTTON_REL)
456
454#else 457#else
455#error No keymap defined! 458#error No keymap defined!
456#endif 459#endif
diff --git a/apps/plugins/goban/goban.h b/apps/plugins/goban/goban.h
index c709df3281..531b137556 100644
--- a/apps/plugins/goban/goban.h
+++ b/apps/plugins/goban/goban.h
@@ -432,6 +432,9 @@
432#define GBN_BUTTON_CONTEXT BUTTON_PLAY 432#define GBN_BUTTON_CONTEXT BUTTON_PLAY
433#define GBN_BUTTON_NEXT_VAR BUTTON_NEXT 433#define GBN_BUTTON_NEXT_VAR BUTTON_NEXT
434 434
435#elif (CONFIG_KEYPAD == DX50_PAD)
436#define GBN_BUTTON_MENU (BUTTON_POWER|BUTTON_REL)
437
435#else 438#else
436#error Unsupported keypad 439#error Unsupported keypad
437#endif 440#endif
diff --git a/apps/plugins/imageviewer/imageviewer_button.h b/apps/plugins/imageviewer/imageviewer_button.h
index dd3b35041f..c5fb9730c1 100644
--- a/apps/plugins/imageviewer/imageviewer_button.h
+++ b/apps/plugins/imageviewer/imageviewer_button.h
@@ -452,6 +452,14 @@
452#define IMGVIEW_PREVIOUS BUTTON_BACK 452#define IMGVIEW_PREVIOUS BUTTON_BACK
453#define IMGVIEW_MENU BUTTON_MENU 453#define IMGVIEW_MENU BUTTON_MENU
454 454
455#elif CONFIG_KEYPAD == DX50_PAD
456#define IMGVIEW_ZOOM_IN BUTTON_VOL_UP
457#define IMGVIEW_ZOOM_OUT BUTTON_VOL_DOWN
458#define IMGVIEW_NEXT BUTTON_RIGHT
459#define IMGVIEW_PREVIOUS BUTTON_LEFT
460#define IMGVIEW_QUIT (BUTTON_POWER|BUTTON_REL)
461#define IMGVIEW_MENU (BUTTON_PLAY|BUTTON_REL)
462
455#else 463#else
456#error No keymap defined! 464#error No keymap defined!
457#endif 465#endif
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c
index e77fe1e4a6..c1da3a6338 100644
--- a/apps/plugins/invadrox.c
+++ b/apps/plugins/invadrox.c
@@ -259,6 +259,13 @@ CONFIG_KEYPAD == MROBE500_PAD
259#define RIGHT BUTTON_RIGHT 259#define RIGHT BUTTON_RIGHT
260#define FIRE BUTTON_SELECT 260#define FIRE BUTTON_SELECT
261 261
262#elif CONFIG_KEYPAD == DX50_PAD
263
264#define QUIT (BUTTON_POWER|BUTTON_REL)
265#define LEFT BUTTON_LEFT
266#define RIGHT BUTTON_PLAY
267#define FIRE BUTTON_RIGHT
268
262#else 269#else
263 #error INVADROX: Unsupported keypad 270 #error INVADROX: Unsupported keypad
264#endif 271#endif
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index b4c53a96c4..d8a3cc39b5 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -359,6 +359,10 @@ CONFIG_KEYPAD == MROBE500_PAD
359#define HK_SELECT "SELECT" 359#define HK_SELECT "SELECT"
360#define HK_CANCEL "POWER" 360#define HK_CANCEL "POWER"
361 361
362#elif CONFIG_KEYPAD == DX50_PAD
363#define JEWELS_CANCEL BUTTON_POWER
364#define HK_CANCEL "Power"
365
362#else 366#else
363#error No keymap defined! 367#error No keymap defined!
364#endif 368#endif
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index 97dde57fbe..3113f64667 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -434,6 +434,13 @@ const struct button_mapping pla_main_ctx[] =
434 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 434 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
435 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 435 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
436 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 436 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
437#elif (CONFIG_KEYPAD == DX50_PAD)
438 {PLA_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE},
439 {PLA_EXIT, BUTTON_POWER|BUTTON_REL, BUTTON_NONE},
440 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
441 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE},
442 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
443
437#else 444#else
438# ifndef HAVE_TOUCHSCREEN 445# ifndef HAVE_TOUCHSCREEN
439# error pluginlib_actions: No actions defined 446# error pluginlib_actions: No actions defined
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index f5edc83f9a..2f4a698fad 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -275,6 +275,13 @@
275#define BTN_DOWN BUTTON_DOWN 275#define BTN_DOWN BUTTON_DOWN
276#define BTN_PLAY BUTTON_PLAYPAUSE 276#define BTN_PLAY BUTTON_PLAYPAUSE
277 277
278#elif CONFIG_KEYPAD == DX50_PAD
279#define BTN_QUIT BUTTON_POWER
280#define BTN_RIGHT BUTTON_RIGHT
281#define BTN_LEFT BUTTON_LEFT
282#define BTN_UP BUTTON_VOL_UP
283#define BTN_DOWN BUTTON_VOL_DOWN
284
278#else 285#else
279#error No keymap defined! 286#error No keymap defined!
280#endif 287#endif
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 4758a1f911..982bb8b67c 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -377,6 +377,9 @@ CONFIG_KEYPAD == MROBE500_PAD
377#define MINESWP_DISCOVER BUTTON_SELECT 377#define MINESWP_DISCOVER BUTTON_SELECT
378#define MINESWP_INFO BUTTON_MENU 378#define MINESWP_INFO BUTTON_MENU
379 379
380#elif (CONFIG_KEYPAD == DX50_PAD)
381# define MINESWP_QUIT (BUTTON_POWER|BUTTON_REL)
382
380#else 383#else
381#error No keymap defined! 384#error No keymap defined!
382#endif 385#endif
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index 7b3c18bea2..7da00ad23b 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2540,6 +2540,11 @@ CONFIG_KEYPAD == MROBE500_PAD
2540#define MP3ENC_DONE BUTTON_PLAYPAUSE 2540#define MP3ENC_DONE BUTTON_PLAYPAUSE
2541#define MP3ENC_SELECT BUTTON_SELECT 2541#define MP3ENC_SELECT BUTTON_SELECT
2542 2542
2543#elif (CONFIG_KEYPAD == DX50_PAD)
2544#define MP3ENC_PREV BUTTON_LEFT
2545#define MP3ENC_NEXT BUTTON_RIGHT
2546#define MP3ENC_DONE BUTTON_POWER
2547#define MP3ENC_SELECT BUTTON_PLAY
2543 2548
2544#else 2549#else
2545#error No keymap defined! 2550#error No keymap defined!
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 7b259395b9..1a9636e8d8 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -289,6 +289,14 @@ struct mpeg_settings settings;
289#define MPEG_START_TIME_DOWN BUTTON_DOWN 289#define MPEG_START_TIME_DOWN BUTTON_DOWN
290#define MPEG_START_TIME_EXIT BUTTON_BACK 290#define MPEG_START_TIME_EXIT BUTTON_BACK
291 291
292#elif CONFIG_KEYPAD == DX50_PAD
293#define MPEG_START_TIME_EXIT BUTTON_POWER
294#define MPEG_START_TIME_SELECT BUTTON_PLAY
295#define MPEG_START_TIME_LEFT BUTTON_LEFT
296#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
297#define MPEG_START_TIME_UP BUTTON_VOL_UP
298#define MPEG_START_TIME_DOWN BUTTON_VOL_DOWN
299
292#else 300#else
293#error No keymap defined! 301#error No keymap defined!
294#endif 302#endif
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index b041094e25..945d906d8b 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -417,6 +417,15 @@ CONFIG_KEYPAD == SANSA_M200_PAD
417#define MPEG_RW BUTTON_LEFT 417#define MPEG_RW BUTTON_LEFT
418#define MPEG_FF BUTTON_RIGHT 418#define MPEG_FF BUTTON_RIGHT
419 419
420#elif CONFIG_KEYPAD == DX50_PAD
421#define MPEG_MENU BUTTON_POWER
422#define MPEG_VOLDOWN BUTTON_VOL_DOWN
423#define MPEG_VOLUP BUTTON_VOL_UP
424#define MPEG_RW BUTTON_LEFT
425#define MPEG_FF BUTTON_RIGHT
426#define MPEG_PAUSE BUTTON_PLAY
427#define MPEG_STOP (BUTTON_PLAY|BUTTON_REPEAT)
428
420#else 429#else
421#error No keymap defined! 430#error No keymap defined!
422#endif 431#endif
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index 559d52ea06..a0b976f466 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -486,6 +486,11 @@
486#define OSCILLOSCOPE_VOL_UP BUTTON_UP 486#define OSCILLOSCOPE_VOL_UP BUTTON_UP
487#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN 487#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
488 488
489#elif CONFIG_KEYPAD == DX50_PAD
490#define OSCILLOSCOPE_QUIT (BUTTON_POWER|BUTTON_REL)
491#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
492#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
493
489#else 494#else
490#error No keymap defined! 495#error No keymap defined!
491#endif 496#endif
diff --git a/apps/plugins/pacbox/pacbox.h b/apps/plugins/pacbox/pacbox.h
index 1854006a91..5da7a8b099 100644
--- a/apps/plugins/pacbox/pacbox.h
+++ b/apps/plugins/pacbox/pacbox.h
@@ -328,6 +328,9 @@
328#define PACMAN_1UP BUTTON_SELECT 328#define PACMAN_1UP BUTTON_SELECT
329#define PACMAN_COIN BUTTON_PLAYPAUSE 329#define PACMAN_COIN BUTTON_PLAYPAUSE
330 330
331#elif CONFIG_KEYPAD == DX50_PAD
332#define PACMAN_MENU BUTTON_POWER
333
331#else 334#else
332 335
333#error Keymap not defined! 336#error Keymap not defined!
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c
index fc0019fc26..1048138136 100644
--- a/apps/plugins/pegbox.c
+++ b/apps/plugins/pegbox.c
@@ -616,6 +616,11 @@ CONFIG_KEYPAD == MROBE500_PAD
616#define LVL_DOWN_TEXT "PLAY/PAUSE" 616#define LVL_DOWN_TEXT "PLAY/PAUSE"
617#define SELECT_TEXT "SELECT" 617#define SELECT_TEXT "SELECT"
618 618
619#elif CONFIG_KEYPAD == DX50_PAD
620#define PEGBOX_QUIT BUTTON_POWER
621
622#define QUIT_TEXT "Power"
623
619#else 624#else
620#error Unsupported keymap! 625#error Unsupported keymap!
621#endif 626#endif
diff --git a/apps/plugins/plugins.make b/apps/plugins/plugins.make
index 92769d770a..1edbd37306 100644
--- a/apps/plugins/plugins.make
+++ b/apps/plugins/plugins.make
@@ -11,7 +11,9 @@
11is_app_build = 11is_app_build =
12ifdef APP_TYPE 12ifdef APP_TYPE
13ifneq ($(APP_TYPE),sdl-sim) 13ifneq ($(APP_TYPE),sdl-sim)
14 is_app_build = yes 14ifeq (,$(findstring standalone, $(APP_TYPE)))
15 is_app_build = yes
16endif
15endif 17endif
16endif 18endif
17 19
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index eb5adb3351..4ec62e01be 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -287,6 +287,9 @@ CONFIG_KEYPAD == MROBE500_PAD
287#define PONG_RIGHT_UP BUTTON_RIGHT 287#define PONG_RIGHT_UP BUTTON_RIGHT
288#define PONG_RIGHT_DOWN BUTTON_LEFT 288#define PONG_RIGHT_DOWN BUTTON_LEFT
289 289
290#elif (CONFIG_KEYPAD == DX50_PAD)
291#define PONG_QUIT (BUTTON_POWER|BUTTON_REL)
292
290#else 293#else
291#error No keymap defined! 294#error No keymap defined!
292#endif 295#endif
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h
index 5c43ce2373..3932b688ef 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -312,6 +312,10 @@
312#define REVERSI_BUTTON_MAKE_MOVE BUTTON_SELECT 312#define REVERSI_BUTTON_MAKE_MOVE BUTTON_SELECT
313#define REVERSI_BUTTON_MENU BUTTON_MENU 313#define REVERSI_BUTTON_MENU BUTTON_MENU
314 314
315#elif CONFIG_KEYPAD == DX50_PAD
316#define REVERSI_BUTTON_QUIT BUTTON_POWER
317#define REVERSI_BUTTON_MENU BUTTON_PLAY
318
315#else 319#else
316#error No keymap defined! 320#error No keymap defined!
317#endif 321#endif
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index 5647b0a719..cde542a1c0 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -449,6 +449,14 @@
449#define ROCKBLOX_DROP BUTTON_SELECT 449#define ROCKBLOX_DROP BUTTON_SELECT
450#define ROCKBLOX_RESTART BUTTON_SHORTCUT 450#define ROCKBLOX_RESTART BUTTON_SHORTCUT
451 451
452#elif CONFIG_KEYPAD == DX50_PAD
453#define ROCKBLOX_OFF BUTTON_POWER
454#define ROCKBLOX_ROTATE BUTTON_RIGHT
455#define ROCKBLOX_LEFT BUTTON_LEFT
456#define ROCKBLOX_RIGHT BUTTON_PLAY
457#define ROCKBLOX_DROP BUTTON_VOL_DOWN
458#define ROCKBLOX_RESTART BUTTON_VOL_UP
459
452#else 460#else
453#error No keymap defined! 461#error No keymap defined!
454#endif 462#endif
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index c12df07140..12feabb8e1 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -402,6 +402,13 @@ static void setoptions (void)
402 options.A = BUTTON_SHORTCUT; 402 options.A = BUTTON_SHORTCUT;
403 options.B = BUTTON_PLAYPAUSE; 403 options.B = BUTTON_PLAYPAUSE;
404 404
405#elif CONFIG_KEYPAD == DX50_PAD
406 options.A = BUTTON_VOL_UP;
407 options.B = BUTTON_VOL_DOWN;
408 options.MENU = BUTTON_POWER;
409 options.START = BUTTON_LEFT;
410 options.SELECT = BUTTON_RIGHT;
411
405#else 412#else
406#error No Keymap Defined! 413#error No Keymap Defined!
407#endif 414#endif
@@ -414,7 +421,7 @@ static void setoptions (void)
414#if CONFIG_KEYPAD == MROBE500_PAD 421#if CONFIG_KEYPAD == MROBE500_PAD
415 options.A = BUTTON_BOTTOMLEFT; 422 options.A = BUTTON_BOTTOMLEFT;
416 options.B = BUTTON_BOTTOMRIGHT; 423 options.B = BUTTON_BOTTOMRIGHT;
417#elif CONFIG_KEYPAD != COWON_D2_PAD 424#elif (CONFIG_KEYPAD != COWON_D2_PAD ) || (CONFIG_KEYPAD != DX50_PAD )
418 options.A = BUTTON_BOTTOMLEFT; 425 options.A = BUTTON_BOTTOMLEFT;
419 options.B = BUTTON_BOTTOMRIGHT; 426 options.B = BUTTON_BOTTOMRIGHT;
420 options.MENU = BUTTON_TOPLEFT; 427 options.MENU = BUTTON_TOPLEFT;
diff --git a/apps/plugins/rockpaint.c b/apps/plugins/rockpaint.c
index af6ce20eec..f3647c6024 100644
--- a/apps/plugins/rockpaint.c
+++ b/apps/plugins/rockpaint.c
@@ -310,6 +310,9 @@
310#define ROCKPAINT_TOOLBAR BUTTON_SHORTCUT 310#define ROCKPAINT_TOOLBAR BUTTON_SHORTCUT
311#define ROCKPAINT_TOOLBAR2 BUTTON_PLAYPAUSE 311#define ROCKPAINT_TOOLBAR2 BUTTON_PLAYPAUSE
312 312
313#elif ( CONFIG_KEYPAD == DX50_PAD )
314#define ROCKPAINT_QUIT (BUTTON_POWER|BUTTON_REL)
315
313#else 316#else
314#error "Please define keys for this keypad" 317#error "Please define keys for this keypad"
315#endif 318#endif
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index 39c60628c7..d4dd01f948 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -310,6 +310,12 @@ CONFIG_KEYPAD == MROBE500_PAD
310#define PUZZLE_SHUFFLE BUTTON_SHORTCUT 310#define PUZZLE_SHUFFLE BUTTON_SHORTCUT
311#define PUZZLE_PICTURE BUTTON_PLAYPAUSE 311#define PUZZLE_PICTURE BUTTON_PLAYPAUSE
312 312
313#elif (CONFIG_KEYPAD == DX50_PAD)
314#define PUZZLE_QUIT (BUTTON_POWER|BUTTON_REL)
315#define PUZZLE_SHUFFLE BUTTON_PLAY
316#define PUZZLE_PICTURE BUTTON_RIGHT
317#define PUZZLE_QUIT_TEXT "[Power]"
318
313#else 319#else
314#error No keymap defined! 320#error No keymap defined!
315#endif 321#endif
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index 55d91cb5f9..a22ecf4c70 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -269,6 +269,14 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
269#define SNAKE_DOWN BUTTON_DOWN 269#define SNAKE_DOWN BUTTON_DOWN
270#define SNAKE_PLAYPAUSE BUTTON_PLAYPAUSE 270#define SNAKE_PLAYPAUSE BUTTON_PLAYPAUSE
271 271
272#elif CONFIG_KEYPAD == DX50_PAD
273#define SNAKE_QUIT BUTTON_POWER
274#define SNAKE_LEFT BUTTON_LEFT
275#define SNAKE_RIGHT BUTTON_PLAY
276#define SNAKE_UP BUTTON_VOL_UP
277#define SNAKE_DOWN BUTTON_VOL_DOWN
278#define SNAKE_PLAYPAUSE BUTTON_RIGHT
279
272#else 280#else
273#error No keymap defined! 281#error No keymap defined!
274#endif 282#endif
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index 2fb5521a79..b695dc9abd 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -383,6 +383,15 @@ CONFIG_KEYPAD == MROBE500_PAD
383#define SNAKE2_PLAYPAUSE BUTTON_PLAYPAUSE 383#define SNAKE2_PLAYPAUSE BUTTON_PLAYPAUSE
384#define SNAKE2_PLAYPAUSE_TEXT "Play/Pause" 384#define SNAKE2_PLAYPAUSE_TEXT "Play/Pause"
385 385
386#elif (CONFIG_KEYPAD == DX50_PAD)
387#define SNAKE2_QUIT (BUTTON_POWER|BUTTON_REL)
388#define SNAKE2_LEFT BUTTON_LEFT
389#define SNAKE2_RIGHT BUTTON_PLAY
390#define SNAKE2_UP BUTTON_VOL_UP
391#define SNAKE2_DOWN BUTTON_VOL_DOWN
392#define SNAKE2_PLAYPAUSE BUTTON_RIGHT
393#define SNAKE2_PLAYPAUSE_TEXT "Right"
394
386#else 395#else
387#error No keymap defined! 396#error No keymap defined!
388#endif 397#endif
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index 07b5856240..f3c4f9c8f6 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -611,6 +611,14 @@
611#define BUTTON_SAVE (BUTTON_POWER | BUTTON_PLAY) 611#define BUTTON_SAVE (BUTTON_POWER | BUTTON_PLAY)
612#define BUTTON_SAVE_NAME "POWER + PLAY" 612#define BUTTON_SAVE_NAME "POWER + PLAY"
613 613
614#elif CONFIG_KEYPAD == DX50_PAD
615#define SOKOBAN_MENU (BUTTON_POWER|BUTTON_REL)
616#define SOKOBAN_PAUSE BUTTON_PLAY
617#define SOKOBAN_LEVEL_DOWN BUTTON_LEFT
618#define SOKOBAN_LEVEL_UP BUTTON_RIGHT
619#define SOKOBAN_MENU_NAME "Power"
620#define SOKOBAN_PAUSE_NAME "Play"
621
614#else 622#else
615#error No keymap defined! 623#error No keymap defined!
616#endif 624#endif
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 04e3c15d56..541b42de42 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -651,6 +651,9 @@ CONFIG_KEYPAD == MROBE500_PAD
651#define HK_CUR2STACK "Menu" 651#define HK_CUR2STACK "Menu"
652#define HK_REM2STACK "Shortcut" 652#define HK_REM2STACK "Shortcut"
653 653
654#elif (CONFIG_KEYPAD == DX50_PAD)
655# define SOL_QUIT (BUTTON_POWER | BUTTON_REL)
656
654#else 657#else
655#error No keymap defined! 658#error No keymap defined!
656#endif 659#endif
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 68f47caa4a..a7e9912cf4 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -333,6 +333,14 @@
333#define AST_RIGHT BUTTON_RIGHT 333#define AST_RIGHT BUTTON_RIGHT
334#define AST_FIRE BUTTON_SELECT 334#define AST_FIRE BUTTON_SELECT
335 335
336#elif (CONFIG_KEYPAD == DX50_PAD)
337#define AST_QUIT BUTTON_POWER
338#define AST_THRUST BUTTON_VOL_UP
339#define AST_HYPERSPACE BUTTON_VOL_DOWN
340#define AST_LEFT BUTTON_LEFT
341#define AST_RIGHT BUTTON_PLAY
342#define AST_FIRE BUTTON_RIGHT
343
336#else 344#else
337#error No keymap defined! 345#error No keymap defined!
338#endif 346#endif
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index b43c05ebf5..a1367e9044 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -581,6 +581,10 @@
581#define STAR_TOGGLE_CONTROL_NAME "Select" 581#define STAR_TOGGLE_CONTROL_NAME "Select"
582#define STAR_QUIT_NAME "Back" 582#define STAR_QUIT_NAME "Back"
583 583
584#elif (CONFIG_KEYPAD == DX50_PAD)
585#define STAR_QUIT BUTTON_POWER
586#define STAR_QUIT_NAME "Power"
587
584#else 588#else
585#error No keymap defined! 589#error No keymap defined!
586#endif 590#endif
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index 2bc65eeaa7..2caa75fbbe 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -398,6 +398,9 @@
398#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT 398#define SUDOKU_BUTTON_TOGGLE BUTTON_SELECT
399#define SUDOKU_BUTTON_POSSIBLE BUTTON_SHORTCUT 399#define SUDOKU_BUTTON_POSSIBLE BUTTON_SHORTCUT
400 400
401#elif CONFIG_KEYPAD == DX50_PAD
402#define SUDOKU_BUTTON_QUIT (BUTTON_POWER|BUTTON_REL)
403
401#else 404#else
402#error No keymap defined! 405#error No keymap defined!
403#endif 406#endif
diff --git a/apps/plugins/text_viewer/tv_button.h b/apps/plugins/text_viewer/tv_button.h
index bcaa593cea..7c0cfab519 100644
--- a/apps/plugins/text_viewer/tv_button.h
+++ b/apps/plugins/text_viewer/tv_button.h
@@ -506,6 +506,16 @@
506#define TV_AUTOSCROLL BUTTON_PLAYPAUSE 506#define TV_AUTOSCROLL BUTTON_PLAYPAUSE
507#define TV_BOOKMARK BUTTON_SHORTCUT 507#define TV_BOOKMARK BUTTON_SHORTCUT
508 508
509#elif CONFIG_KEYPAD == DX50_PAD
510#define TV_QUIT (BUTTON_POWER | BUTTON_REL)
511#define TV_SCROLL_UP BUTTON_VOL_UP
512#define TV_SCROLL_DOWN BUTTON_VOL_DOWN
513#define TV_SCREEN_LEFT BUTTON_LEFT
514#define TV_SCREEN_RIGHT BUTTON_RIGHT
515#define TV_MENU (BUTTON_PLAY | BUTTON_REL)
516#define TV_AUTOSCROLL (BUTTON_POWER | BUTTON_PLAY)
517#define TV_BOOKMARK (BUTTON_POWER | BUTTON_VOL_UP)
518
509#else 519#else
510#error No keymap defined! 520#error No keymap defined!
511#endif 521#endif
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 6d8922cd4b..43a7b917a9 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -395,6 +395,14 @@
395#define LABEL_MENU "Menu" 395#define LABEL_MENU "Menu"
396#define LABEL_VOLUME "Up/Down" 396#define LABEL_VOLUME "Up/Down"
397 397
398#elif CONFIG_KEYPAD == DX50_PAD
399#define VUMETER_QUIT (BUTTON_POWER|BUTTON_REL)
400#define VUMETER_MENU BUTTON_PLAY
401#define VUMETER_UP BUTTON_RIGHT
402#define VUMETER_DOWN BUTTON_LEFT
403#define LABEL_QUIT "Power"
404#define LABEL_MENU "Play"
405
398#else 406#else
399#error No keymap defined! 407#error No keymap defined!
400#endif 408#endif
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 51021dfac4..26b97c7748 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -370,6 +370,15 @@ CONFIG_KEYPAD == MROBE500_PAD
370#define BTN_QUIT BUTTON_BACK 370#define BTN_QUIT BUTTON_BACK
371#define BTN_STOPRESET BUTTON_SHORTCUT 371#define BTN_STOPRESET BUTTON_SHORTCUT
372 372
373#elif CONFIG_KEYPAD == DX50_PAD
374#define BTN_DIR_UP BUTTON_VOL_UP
375#define BTN_DIR_DOWN BUTTON_VOL_DOWN
376#define BTN_DIR_LEFT BUTTON_LEFT
377#define BTN_DIR_RIGHT BUTTON_RIGHT
378#define BTN_STARTPAUSE BUTTON_PLAY
379#define BTN_QUIT BUTTON_POWER
380#define BTN_STOPRESET (BUTTON_PLAY|BUTTON_REPEAT)
381
373#else 382#else
374#error No keymap defined! 383#error No keymap defined!
375#endif 384#endif
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index 3cf3b2a434..f3ed96f282 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -322,6 +322,14 @@ CONFIG_KEYPAD == MROBE500_PAD
322#define DOWN BUTTON_DOWN 322#define DOWN BUTTON_DOWN
323#define PAUSE BUTTON_PLAYPAUSE 323#define PAUSE BUTTON_PLAYPAUSE
324 324
325#elif CONFIG_KEYPAD == DX50_PAD
326#define QUIT BUTTON_POWER
327#define LEFT BUTTON_LEFT
328#define RIGHT BUTTON_RIGHT
329#define UP BUTTON_VOL_UP
330#define DOWN BUTTON_VOL_DOWN
331#define PAUSE BUTTON_PLAY
332
325#else 333#else
326#error No keymap defined! 334#error No keymap defined!
327#endif 335#endif
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index d8be7f832b..bdbe4f93ad 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -262,6 +262,14 @@
262#define ZX_RIGHT BUTTON_RIGHT 262#define ZX_RIGHT BUTTON_RIGHT
263#define ZX_SELECT BUTTON_SELECT 263#define ZX_SELECT BUTTON_SELECT
264 264
265#elif CONFIG_KEYPAD == DX50_PAD
266#define ZX_MENU BUTTON_POWER
267#define ZX_UP BUTTON_VOL_UP
268#define ZX_DOWN BUTTON_VOL_DOWN
269#define ZX_SELECT BUTTON_PLAY
270#define ZX_LEFT BUTTON_LEFT
271#define ZX_RIGHT BUTTON_RIGHT
272
265#else 273#else
266#error Keymap not defined! 274#error Keymap not defined!
267 275
diff --git a/apps/root_menu.c b/apps/root_menu.c
index 7ec803f585..f1b5017751 100644
--- a/apps/root_menu.c
+++ b/apps/root_menu.c
@@ -792,13 +792,13 @@ void root_menu(void)
792 case GO_TO_ROOT: 792 case GO_TO_ROOT:
793 if (last_screen != GO_TO_ROOT) 793 if (last_screen != GO_TO_ROOT)
794 selected = get_selection(last_screen); 794 selected = get_selection(last_screen);
795#if (CONFIG_PLATFORM&PLATFORM_ANDROID) 795#if (CONFIG_PLATFORM&PLATFORM_ANDROID) && !defined(DX50) && !defined(DX90)
796 /* When we are in the main menu we want the hardware BACK 796 /* When we are in the main menu we want the hardware BACK
797 * button to be handled by Android instead of rockbox */ 797 * button to be handled by Android instead of rockbox */
798 android_ignore_back_button(true); 798 android_ignore_back_button(true);
799#endif 799#endif
800 next_screen = do_menu(&root_menu_, &selected, NULL, false); 800 next_screen = do_menu(&root_menu_, &selected, NULL, false);
801#if (CONFIG_PLATFORM&PLATFORM_ANDROID) 801#if (CONFIG_PLATFORM&PLATFORM_ANDROID) && !defined(DX50) && !defined(DX90)
802 android_ignore_back_button(false); 802 android_ignore_back_button(false);
803#endif 803#endif
804 if (next_screen != GO_TO_PREVIOUS) 804 if (next_screen != GO_TO_PREVIOUS)