summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorSimon Rothen <rothen@gmx.net>2014-08-30 13:15:53 +0200
committerMichael Giacomelli <giac2000@hotmail.com>2014-09-18 18:19:01 +0200
commit0b5ad60c26f30dc5363c21e436b73292c09ac567 (patch)
tree2d7cee2b2133218d59e0f462c9dbdbec8e88b2e2 /apps
parent1f0fa0546647a191c52784a4a225982ffbd1af11 (diff)
downloadrockbox-0b5ad60c26f30dc5363c21e436b73292c09ac567.tar.gz
rockbox-0b5ad60c26f30dc5363c21e436b73292c09ac567.zip
Introducing Targets iBasso DX50 & iBasso DX90
The port to for this two targets has been entirely developped by Ilia Sergachev (alias Il or xzcc). His source can be found at https://bitbucket.org/isergachev/rockbox . The few necesary modifications for the DX90 port was done by headwhacker form head-fi.org. Unfortunately i could not try out the final state of the DX90 port. The port is hosted on android (without java) as standalone app. The official Firmware is required to run this port. Ilia did modify the source files for the "android" target in the rockbox source to make the DX port work. The work I did was to separate the code for DX50 (&DX90) from the android target. On this Target Ilia used source from tinyalsa from AOSP. I did not touch that part of the code because I do not understand it. What else I changed from Ilias sources besides the separation from the target "android": * removed a dirty hack to keep backlight off * changed value battery meter to voltage battery meter * made all plugins compile (named target as "standalone") and added keymaps * i added the graphics for the manual but did not do anything else for the manual yet * minor optimizations known bugs: * timers are slowed donw when playback is active (tinyalsa related?) * some minor bugs Things to do: * The main prolem will be how to install the app correctly. A guy called DOC2008 added a CWM (by androtab.info) to the official firmware and Ilia made a CWM installation script and a dualboot selector (rbutils/ibassoboot, build with ndk-build). We will have to find a way to install rockbox in a proper way without breaking any copyrights. Maybe ADB is an option but it is not enable with OF by default. Patching the OF is probably the way to go. * All the wiki and manual to build: needed: android ndk installed, android sdk installed with additional build-tools 19.1.0 installed ./tools/configure select iBasso DX50 or iBasso DX90 make -j apk the content of rockbox.zip/.rockbox needs to be copied to /system/rockbox/app_rockbox/rockbox/ (rockbox app not needed) the content of libs/armeabi to /system/rockbox/lib/ (rockbox app needed) The boot selector is needed as /system/bin/MangoPlayer and the iBasso app as /system/bin/MangoPlayer_original. There is also the "vold" file. The one from OF does not work with DX50 rockbox (DX90 works!?), the one from Ilia is necessary. Until we have found a proper way to install it, it can only be installed following the instructions of Ilia on his bitbucket page, using the CWM-OF and his installation script package. Change-Id: Ic4faaf84824c162aabcc08e492cee6e0068719d0 Reviewed-on: http://gerrit.rockbox.org/941 Tested: Chiwen Chang <rock1104.tw@yahoo.com.tw> Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
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)