summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/SOURCES4
-rw-r--r--apps/bitmaps/native/SOURCES4
-rw-r--r--apps/bitmaps/native/hibyicon.130x130x16.bmpbin0 -> 51016 bytes
-rw-r--r--apps/keymaps/keymap-xduoox20.c213
-rw-r--r--apps/keymaps/keymap-xduoox3ii.c213
-rw-r--r--apps/plugins/battery_bench.c12
-rw-r--r--apps/plugins/blackjack.c32
-rw-r--r--apps/plugins/brickmania.c20
-rw-r--r--apps/plugins/calculator.c22
-rw-r--r--apps/plugins/calendar.c20
-rw-r--r--apps/plugins/chessbox/chessbox_pgn.h28
-rw-r--r--apps/plugins/chessclock.c20
-rw-r--r--apps/plugins/chip8.c16
-rw-r--r--apps/plugins/chopper.c10
-rw-r--r--apps/plugins/clix.c16
-rw-r--r--apps/plugins/cube.c20
-rw-r--r--apps/plugins/doom/i_video.c22
-rw-r--r--apps/plugins/fft/fft.c18
-rw-r--r--apps/plugins/flipit.c24
-rw-r--r--apps/plugins/fractals/fractal.h24
-rw-r--r--apps/plugins/goban/goban.h24
-rw-r--r--apps/plugins/imageviewer/imageviewer_button.h30
-rw-r--r--apps/plugins/invadrox.c14
-rw-r--r--apps/plugins/jewels.c20
-rw-r--r--apps/plugins/lib/keymaps.h16
-rw-r--r--apps/plugins/lib/pluginlib_actions.c30
-rw-r--r--apps/plugins/midi/midiplay.c16
-rw-r--r--apps/plugins/minesweeper.c26
-rw-r--r--apps/plugins/mp3_encoder.c13
-rw-r--r--apps/plugins/mpegplayer/mpeg_settings.c20
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c18
-rw-r--r--apps/plugins/oscilloscope.c29
-rw-r--r--apps/plugins/pacbox/pacbox.h19
-rw-r--r--apps/plugins/pegbox.c34
-rw-r--r--apps/plugins/pong.c16
-rw-r--r--apps/plugins/reversi/reversi-gui.h22
-rw-r--r--apps/plugins/rockblox.c24
-rw-r--r--apps/plugins/rockboy/rockboy.c20
-rw-r--r--apps/plugins/sliding_puzzle.c19
-rw-r--r--apps/plugins/snake.c16
-rw-r--r--apps/plugins/snake2.c18
-rw-r--r--apps/plugins/sokoban.c32
-rw-r--r--apps/plugins/solitaire.c38
-rw-r--r--apps/plugins/spacerocks.c18
-rw-r--r--apps/plugins/star.c32
-rw-r--r--apps/plugins/stopwatch.c16
-rw-r--r--apps/plugins/sudoku/sudoku.h28
-rw-r--r--apps/plugins/text_viewer/tv_button.h24
-rw-r--r--apps/plugins/vu_meter.c22
-rw-r--r--apps/plugins/wormlet.c18
-rw-r--r--apps/plugins/xobox.c18
-rw-r--r--apps/plugins/zxbox/keymaps.h16
-rw-r--r--apps/plugins/zxbox/zxbox_keyb.c18
53 files changed, 1462 insertions, 0 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index 67fe678287..20e6fa9d2d 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -323,4 +323,8 @@ keymaps/keymap-dx50.c
323keymaps/keymap-agptekrocker.c 323keymaps/keymap-agptekrocker.c
324#elif CONFIG_KEYPAD == XDUOO_X3_PAD 324#elif CONFIG_KEYPAD == XDUOO_X3_PAD
325keymaps/keymap-xduoox3.c 325keymaps/keymap-xduoox3.c
326#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
327keymaps/keymap-xduoox3ii.c
328#elif CONFIG_KEYPAD == XDUOO_X20_PAD
329keymaps/keymap-xduoox20.c
326#endif 330#endif
diff --git a/apps/bitmaps/native/SOURCES b/apps/bitmaps/native/SOURCES
index ea726d4c07..f74f289214 100644
--- a/apps/bitmaps/native/SOURCES
+++ b/apps/bitmaps/native/SOURCES
@@ -48,6 +48,10 @@ toolsicon.130x130x16.bmp
48hibyicon.70x70x16.bmp 48hibyicon.70x70x16.bmp
49rockboxicon.70x70x16.bmp 49rockboxicon.70x70x16.bmp
50toolsicon.70x70x16.bmp 50toolsicon.70x70x16.bmp
51#elif (defined(XDUOO_X3II) || defined(XDUOO_X20))
52hibyicon.130x130x16.bmp
53rockboxicon.130x130x16.bmp
54toolsicon.130x130x16.bmp
51#endif 55#endif
52#endif 56#endif
53 57
diff --git a/apps/bitmaps/native/hibyicon.130x130x16.bmp b/apps/bitmaps/native/hibyicon.130x130x16.bmp
new file mode 100644
index 0000000000..0c31b90e28
--- /dev/null
+++ b/apps/bitmaps/native/hibyicon.130x130x16.bmp
Binary files differ
diff --git a/apps/keymaps/keymap-xduoox20.c b/apps/keymaps/keymap-xduoox20.c
new file mode 100644
index 0000000000..3b1b01b7fa
--- /dev/null
+++ b/apps/keymaps/keymap-xduoox20.c
@@ -0,0 +1,213 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2018 by Roman Stolyarov
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 xDuoo X20 target */
23
24#include "config.h"
25#include "action.h"
26#include "button.h"
27#include "settings.h"
28
29/* {Action Code, Button code, Prereq button code } */
30
31/*
32 * The format of the list is as follows
33 * { Action Code, Button code, Prereq button code }
34 * if there's no need to check the previous button's value, use BUTTON_NONE
35 * Insert LAST_ITEM_IN_LIST at the end of each mapping
36 */
37static const struct button_mapping button_context_standard[] = {
38 { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE },
39 { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
40 { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE },
41 { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
42 { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
43 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
44 { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
45 { ACTION_STD_MENU, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION },
46
47 LAST_ITEM_IN_LIST
48}; /* button_context_standard */
49
50static const struct button_mapping button_context_wps[] = {
51 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
52 { ACTION_WPS_SKIPPREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
53 { ACTION_WPS_SEEKBACK, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
54 { ACTION_WPS_STOPSEEK, BUTTON_PREV|BUTTON_REL, BUTTON_PREV|BUTTON_REPEAT },
55 { ACTION_WPS_SKIPNEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
56 { ACTION_WPS_SEEKFWD, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
57 { ACTION_WPS_STOPSEEK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT|BUTTON_REPEAT },
58 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
59 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
60 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
61 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
62 { ACTION_WPS_BROWSE, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
63 { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
64 { ACTION_WPS_MENU, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION },
65 { ACTION_WPS_QUICKSCREEN, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_OPTION },
66 { ACTION_WPS_HOTKEY, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME },
67
68 LAST_ITEM_IN_LIST
69}; /* button_context_wps */
70
71static const struct button_mapping button_context_list[] = {
72 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
73 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
74 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
75 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
76
77 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
78}; /* button_context_list */
79
80/** Bookmark Screen **/
81static const struct button_mapping button_context_bmark[] = {
82 { ACTION_BMS_DELETE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
83
84 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
85}; /* button_context_bmark */
86
87/** Keyboard **/
88static const struct button_mapping button_context_keyboard[] = {
89 { ACTION_KBD_LEFT, BUTTON_PREV, BUTTON_NONE },
90 { ACTION_KBD_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
91 { ACTION_KBD_RIGHT, BUTTON_NEXT, BUTTON_NONE },
92 { ACTION_KBD_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
93 { ACTION_KBD_DOWN, BUTTON_OPTION, BUTTON_NONE },
94 { ACTION_KBD_DOWN, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE },
95 { ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP, BUTTON_NONE },
96 { ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
97 { ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN, BUTTON_NONE },
98 { ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
99 { ACTION_KBD_BACKSPACE, BUTTON_HOME, BUTTON_NONE },
100 { ACTION_KBD_BACKSPACE, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE },
101 { ACTION_KBD_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
102 { ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
103 { ACTION_KBD_ABORT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
104
105 LAST_ITEM_IN_LIST
106}; /* button_context_keyboard */
107
108/** Pitchscreen **/
109static const struct button_mapping button_context_pitchscreen[] = {
110 { ACTION_PS_INC_SMALL, BUTTON_VOL_UP, BUTTON_NONE },
111 { ACTION_PS_INC_BIG, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
112 { ACTION_PS_DEC_SMALL, BUTTON_VOL_DOWN, BUTTON_NONE },
113 { ACTION_PS_DEC_BIG, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
114 { ACTION_PS_NUDGE_LEFT, BUTTON_PREV, BUTTON_NONE },
115 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_PREV|BUTTON_REL, BUTTON_NONE },
116 { ACTION_PS_NUDGE_RIGHT, BUTTON_NEXT, BUTTON_NONE },
117 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE },
118 { ACTION_PS_TOGGLE_MODE, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
119 { ACTION_PS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
120 { ACTION_PS_EXIT, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
121 { ACTION_PS_SLOWER, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
122 { ACTION_PS_FASTER, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
123
124 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
125}; /* button_context_pitchscreen */
126
127/** Quickscreen **/
128static const struct button_mapping button_context_quickscreen[] = {
129 { ACTION_QS_TOP, BUTTON_VOL_UP, BUTTON_NONE },
130 { ACTION_QS_TOP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
131 { ACTION_QS_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
132 { ACTION_QS_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
133 { ACTION_QS_LEFT, BUTTON_PREV, BUTTON_NONE },
134 { ACTION_QS_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
135 { ACTION_QS_RIGHT, BUTTON_NEXT, BUTTON_NONE },
136 { ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
137 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
138
139 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
140}; /* button_context_quickscreen */
141
142/** Settings - General Mappings **/
143static const struct button_mapping button_context_settings[] = {
144 { ACTION_SETTINGS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
145 { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE },
146 { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
147 { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE },
148 { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
149 { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
150 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
151
152 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
153}; /* button_context_settings */
154
155static const struct button_mapping button_context_settings_vol_is_inc[] = {
156 { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE },
157 { ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
158 { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
159 { ACTION_SETTINGS_DECREPEAT,BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
160
161 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
162}; /* button_context_settings_right_is_inc */
163
164/** Tree **/
165static const struct button_mapping button_context_tree[] = {
166 { ACTION_TREE_WPS, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION },
167 { ACTION_TREE_HOTKEY, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME },
168 { ACTION_STD_MENU, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_OPTION },
169
170 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
171}; /* button_context_tree */
172
173/** Yes/No Screen **/
174static const struct button_mapping button_context_yesnoscreen[] = {
175 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
176
177 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
178}; /* button_context_settings_yesnoscreen */
179
180/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
181const struct button_mapping* get_context_mapping(int context)
182{
183 switch (context)
184 {
185 case CONTEXT_LIST:
186 return button_context_list;
187 case CONTEXT_STD:
188 return button_context_standard;
189 case CONTEXT_BOOKMARKSCREEN:
190 return button_context_bmark;
191 case CONTEXT_KEYBOARD:
192 return button_context_keyboard;
193 case CONTEXT_PITCHSCREEN:
194 return button_context_pitchscreen;
195 case CONTEXT_QUICKSCREEN:
196 return button_context_quickscreen;
197 case CONTEXT_SETTINGS:
198 return button_context_settings;
199 case CONTEXT_SETTINGS_TIME:
200 case CONTEXT_SETTINGS_COLOURCHOOSER:
201 case CONTEXT_SETTINGS_EQ:
202 case CONTEXT_SETTINGS_RECTRIGGER:
203 return button_context_settings_vol_is_inc;
204 case CONTEXT_TREE:
205 case CONTEXT_MAINMENU:
206 return button_context_tree;
207 case CONTEXT_WPS:
208 return button_context_wps;
209 case CONTEXT_YESNOSCREEN:
210 return button_context_yesnoscreen;
211 }
212 return button_context_standard;
213}
diff --git a/apps/keymaps/keymap-xduoox3ii.c b/apps/keymaps/keymap-xduoox3ii.c
new file mode 100644
index 0000000000..d30efaed2c
--- /dev/null
+++ b/apps/keymaps/keymap-xduoox3ii.c
@@ -0,0 +1,213 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2018 by Roman Stolyarov
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 xDuoo X3ii target */
23
24#include "config.h"
25#include "action.h"
26#include "button.h"
27#include "settings.h"
28
29/* {Action Code, Button code, Prereq button code } */
30
31/*
32 * The format of the list is as follows
33 * { Action Code, Button code, Prereq button code }
34 * if there's no need to check the previous button's value, use BUTTON_NONE
35 * Insert LAST_ITEM_IN_LIST at the end of each mapping
36 */
37static const struct button_mapping button_context_standard[] = {
38 { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE },
39 { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
40 { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE },
41 { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
42 { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
43 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
44 { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
45 { ACTION_STD_MENU, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION },
46
47 LAST_ITEM_IN_LIST
48}; /* button_context_standard */
49
50static const struct button_mapping button_context_wps[] = {
51 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
52 { ACTION_WPS_SKIPPREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
53 { ACTION_WPS_SEEKBACK, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
54 { ACTION_WPS_STOPSEEK, BUTTON_PREV|BUTTON_REL, BUTTON_PREV|BUTTON_REPEAT },
55 { ACTION_WPS_SKIPNEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
56 { ACTION_WPS_SEEKFWD, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
57 { ACTION_WPS_STOPSEEK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT|BUTTON_REPEAT },
58 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
59 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
60 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
61 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
62 { ACTION_WPS_BROWSE, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
63 { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
64 { ACTION_WPS_MENU, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION },
65 { ACTION_WPS_QUICKSCREEN, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_OPTION },
66 { ACTION_WPS_HOTKEY, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME },
67
68 LAST_ITEM_IN_LIST
69}; /* button_context_wps */
70
71static const struct button_mapping button_context_list[] = {
72 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
73 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
74 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
75 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
76
77 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
78}; /* button_context_list */
79
80/** Bookmark Screen **/
81static const struct button_mapping button_context_bmark[] = {
82 { ACTION_BMS_DELETE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
83
84 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
85}; /* button_context_bmark */
86
87/** Keyboard **/
88static const struct button_mapping button_context_keyboard[] = {
89 { ACTION_KBD_LEFT, BUTTON_PREV, BUTTON_NONE },
90 { ACTION_KBD_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
91 { ACTION_KBD_RIGHT, BUTTON_NEXT, BUTTON_NONE },
92 { ACTION_KBD_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
93 { ACTION_KBD_DOWN, BUTTON_OPTION, BUTTON_NONE },
94 { ACTION_KBD_DOWN, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE },
95 { ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP, BUTTON_NONE },
96 { ACTION_KBD_CURSOR_LEFT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
97 { ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN, BUTTON_NONE },
98 { ACTION_KBD_CURSOR_RIGHT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
99 { ACTION_KBD_BACKSPACE, BUTTON_HOME, BUTTON_NONE },
100 { ACTION_KBD_BACKSPACE, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE },
101 { ACTION_KBD_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
102 { ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
103 { ACTION_KBD_ABORT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
104
105 LAST_ITEM_IN_LIST
106}; /* button_context_keyboard */
107
108/** Pitchscreen **/
109static const struct button_mapping button_context_pitchscreen[] = {
110 { ACTION_PS_INC_SMALL, BUTTON_VOL_UP, BUTTON_NONE },
111 { ACTION_PS_INC_BIG, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
112 { ACTION_PS_DEC_SMALL, BUTTON_VOL_DOWN, BUTTON_NONE },
113 { ACTION_PS_DEC_BIG, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
114 { ACTION_PS_NUDGE_LEFT, BUTTON_PREV, BUTTON_NONE },
115 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_PREV|BUTTON_REL, BUTTON_NONE },
116 { ACTION_PS_NUDGE_RIGHT, BUTTON_NEXT, BUTTON_NONE },
117 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_NEXT|BUTTON_REL, BUTTON_NONE },
118 { ACTION_PS_TOGGLE_MODE, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
119 { ACTION_PS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
120 { ACTION_PS_EXIT, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
121 { ACTION_PS_SLOWER, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
122 { ACTION_PS_FASTER, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
123
124 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
125}; /* button_context_pitchscreen */
126
127/** Quickscreen **/
128static const struct button_mapping button_context_quickscreen[] = {
129 { ACTION_QS_TOP, BUTTON_VOL_UP, BUTTON_NONE },
130 { ACTION_QS_TOP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
131 { ACTION_QS_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
132 { ACTION_QS_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
133 { ACTION_QS_LEFT, BUTTON_PREV, BUTTON_NONE },
134 { ACTION_QS_LEFT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
135 { ACTION_QS_RIGHT, BUTTON_NEXT, BUTTON_NONE },
136 { ACTION_QS_RIGHT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
137 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
138
139 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
140}; /* button_context_quickscreen */
141
142/** Settings - General Mappings **/
143static const struct button_mapping button_context_settings[] = {
144 { ACTION_SETTINGS_RESET, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
145 { ACTION_STD_PREV, BUTTON_PREV, BUTTON_NONE },
146 { ACTION_STD_PREVREPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
147 { ACTION_STD_NEXT, BUTTON_NEXT, BUTTON_NONE },
148 { ACTION_STD_NEXTREPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
149 { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
150 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
151
152 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
153}; /* button_context_settings */
154
155static const struct button_mapping button_context_settings_vol_is_inc[] = {
156 { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE },
157 { ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
158 { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
159 { ACTION_SETTINGS_DECREPEAT,BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
160
161 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
162}; /* button_context_settings_right_is_inc */
163
164/** Tree **/
165static const struct button_mapping button_context_tree[] = {
166 { ACTION_TREE_WPS, BUTTON_OPTION|BUTTON_REL, BUTTON_OPTION },
167 { ACTION_TREE_HOTKEY, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME },
168 { ACTION_STD_MENU, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_OPTION },
169
170 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
171}; /* button_context_tree */
172
173/** Yes/No Screen **/
174static const struct button_mapping button_context_yesnoscreen[] = {
175 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
176
177 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
178}; /* button_context_settings_yesnoscreen */
179
180/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
181const struct button_mapping* get_context_mapping(int context)
182{
183 switch (context)
184 {
185 case CONTEXT_LIST:
186 return button_context_list;
187 case CONTEXT_STD:
188 return button_context_standard;
189 case CONTEXT_BOOKMARKSCREEN:
190 return button_context_bmark;
191 case CONTEXT_KEYBOARD:
192 return button_context_keyboard;
193 case CONTEXT_PITCHSCREEN:
194 return button_context_pitchscreen;
195 case CONTEXT_QUICKSCREEN:
196 return button_context_quickscreen;
197 case CONTEXT_SETTINGS:
198 return button_context_settings;
199 case CONTEXT_SETTINGS_TIME:
200 case CONTEXT_SETTINGS_COLOURCHOOSER:
201 case CONTEXT_SETTINGS_EQ:
202 case CONTEXT_SETTINGS_RECTRIGGER:
203 return button_context_settings_vol_is_inc;
204 case CONTEXT_TREE:
205 case CONTEXT_MAINMENU:
206 return button_context_tree;
207 case CONTEXT_WPS:
208 return button_context_wps;
209 case CONTEXT_YESNOSCREEN:
210 return button_context_yesnoscreen;
211 }
212 return button_context_standard;
213}
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index 21b2ce4963..f24ad579e8 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -298,6 +298,18 @@
298#define BATTERY_ON_TXT "PLAY - start" 298#define BATTERY_ON_TXT "PLAY - start"
299#define BATTERY_OFF_TXT "POWER" 299#define BATTERY_OFF_TXT "POWER"
300 300
301#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
302#define BATTERY_ON BUTTON_PLAY
303#define BATTERY_OFF BUTTON_POWER
304#define BATTERY_ON_TXT "Play - start"
305#define BATTERY_OFF_TXT "POWER"
306
307#elif CONFIG_KEYPAD == XDUOO_X20_PAD
308#define BATTERY_ON BUTTON_PLAY
309#define BATTERY_OFF BUTTON_POWER
310#define BATTERY_ON_TXT "Play - start"
311#define BATTERY_OFF_TXT "POWER"
312
301#else 313#else
302#error No keymap defined! 314#error No keymap defined!
303#endif 315#endif
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index 52881f0af2..4511d3fad5 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -589,6 +589,38 @@ enum {
589#define BJACK_RIGHT BUTTON_NEXT 589#define BJACK_RIGHT BUTTON_NEXT
590#define BJACK_LEFT BUTTON_PREV 590#define BJACK_LEFT BUTTON_PREV
591 591
592#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
593#define BJACK_SELECT_NAME "PLAY"
594#define BJACK_STAY_NAME "NEXT"
595#define BJACK_QUIT_NAME "POWER"
596#define BJACK_DOUBLE_NAME "PREV"
597#define BJACK_SELECT BUTTON_PLAY
598#define BJACK_QUIT BUTTON_POWER
599#define BJACK_MAX BUTTON_VOL_UP
600#define BJACK_MIN BUTTON_VOL_DOWN
601#define BJACK_STAY BUTTON_NEXT
602#define BJACK_DOUBLEDOWN BUTTON_PREV
603#define BJACK_UP BUTTON_HOME
604#define BJACK_DOWN BUTTON_OPTION
605#define BJACK_RIGHT BUTTON_NEXT
606#define BJACK_LEFT BUTTON_PREV
607
608#elif CONFIG_KEYPAD == XDUOO_X20_PAD
609#define BJACK_SELECT_NAME "PLAY"
610#define BJACK_STAY_NAME "NEXT"
611#define BJACK_QUIT_NAME "POWER"
612#define BJACK_DOUBLE_NAME "PREV"
613#define BJACK_SELECT BUTTON_PLAY
614#define BJACK_QUIT BUTTON_POWER
615#define BJACK_MAX BUTTON_VOL_UP
616#define BJACK_MIN BUTTON_VOL_DOWN
617#define BJACK_STAY BUTTON_NEXT
618#define BJACK_DOUBLEDOWN BUTTON_PREV
619#define BJACK_UP BUTTON_HOME
620#define BJACK_DOWN BUTTON_OPTION
621#define BJACK_RIGHT BUTTON_NEXT
622#define BJACK_LEFT BUTTON_PREV
623
592#elif CONFIG_KEYPAD == IHIFI_770_PAD 624#elif CONFIG_KEYPAD == IHIFI_770_PAD
593#define BJACK_SELECT_NAME "PLAY" 625#define BJACK_SELECT_NAME "PLAY"
594#define BJACK_STAY_NAME "NEXT" 626#define BJACK_STAY_NAME "NEXT"
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index f7c9f9adf2..c5d74bcf37 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -342,6 +342,26 @@ CONFIG_KEYPAD == SANSA_CONNECT_PAD
342#define UP BUTTON_HOME 342#define UP BUTTON_HOME
343#define DOWN BUTTON_OPTION 343#define DOWN BUTTON_OPTION
344 344
345#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
346#define QUIT BUTTON_POWER
347#define LEFT BUTTON_PREV
348#define RIGHT BUTTON_NEXT
349#define ALTLEFT BUTTON_VOL_DOWN
350#define ALTRIGHT BUTTON_VOL_UP
351#define SELECT BUTTON_PLAY
352#define UP BUTTON_HOME
353#define DOWN BUTTON_OPTION
354
355#elif CONFIG_KEYPAD == XDUOO_X20_PAD
356#define QUIT BUTTON_POWER
357#define LEFT BUTTON_PREV
358#define RIGHT BUTTON_NEXT
359#define ALTLEFT BUTTON_VOL_DOWN
360#define ALTRIGHT BUTTON_VOL_UP
361#define SELECT BUTTON_PLAY
362#define UP BUTTON_HOME
363#define DOWN BUTTON_OPTION
364
345#elif CONFIG_KEYPAD == IHIFI_770_PAD 365#elif CONFIG_KEYPAD == IHIFI_770_PAD
346#define QUIT BUTTON_POWER 366#define QUIT BUTTON_POWER
347#define LEFT BUTTON_HOME 367#define LEFT BUTTON_HOME
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index a4a29ff6ac..be5087967c 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -536,6 +536,28 @@ F3: equal to "="
536#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT) 536#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
537#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT) 537#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
538 538
539#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
540#define CALCULATOR_LEFT BUTTON_PREV
541#define CALCULATOR_RIGHT BUTTON_NEXT
542#define CALCULATOR_UP BUTTON_HOME
543#define CALCULATOR_DOWN BUTTON_OPTION
544#define CALCULATOR_QUIT BUTTON_POWER
545#define CALCULATOR_INPUT_CALC_PRE (BUTTON_OPTION|BUTTON_REPEAT)
546#define CALCULATOR_INPUT (BUTTON_PLAY|BUTTON_REL)
547#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
548#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
549
550#elif CONFIG_KEYPAD == XDUOO_X20_PAD
551#define CALCULATOR_LEFT BUTTON_PREV
552#define CALCULATOR_RIGHT BUTTON_NEXT
553#define CALCULATOR_UP BUTTON_HOME
554#define CALCULATOR_DOWN BUTTON_OPTION
555#define CALCULATOR_QUIT BUTTON_POWER
556#define CALCULATOR_INPUT_CALC_PRE (BUTTON_OPTION|BUTTON_REPEAT)
557#define CALCULATOR_INPUT (BUTTON_PLAY|BUTTON_REL)
558#define CALCULATOR_CALC (BUTTON_PLAY|BUTTON_REPEAT)
559#define CALCULATOR_CLEAR (BUTTON_POWER|BUTTON_REPEAT)
560
539#elif CONFIG_KEYPAD == IHIFI_770_PAD 561#elif CONFIG_KEYPAD == IHIFI_770_PAD
540#define CALCULATOR_LEFT BUTTON_HOME 562#define CALCULATOR_LEFT BUTTON_HOME
541#define CALCULATOR_RIGHT BUTTON_VOL_DOWN 563#define CALCULATOR_RIGHT BUTTON_VOL_DOWN
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c
index 56f9bde193..af550685cc 100644
--- a/apps/plugins/calendar.c
+++ b/apps/plugins/calendar.c
@@ -423,6 +423,26 @@
423#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP 423#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
424#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN 424#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
425 425
426#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
427#define CALENDAR_QUIT BUTTON_POWER
428#define CALENDAR_SELECT BUTTON_PLAY
429#define CALENDAR_NEXT_WEEK BUTTON_OPTION
430#define CALENDAR_PREV_WEEK BUTTON_HOME
431#define CALENDAR_NEXT_DAY BUTTON_NEXT
432#define CALENDAR_PREV_DAY BUTTON_PREV
433#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
434#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
435
436#elif CONFIG_KEYPAD == XDUOO_X20_PAD
437#define CALENDAR_QUIT BUTTON_POWER
438#define CALENDAR_SELECT BUTTON_PLAY
439#define CALENDAR_NEXT_WEEK BUTTON_OPTION
440#define CALENDAR_PREV_WEEK BUTTON_HOME
441#define CALENDAR_NEXT_DAY BUTTON_NEXT
442#define CALENDAR_PREV_DAY BUTTON_PREV
443#define CALENDAR_NEXT_MONTH BUTTON_VOL_UP
444#define CALENDAR_PREV_MONTH BUTTON_VOL_DOWN
445
426#elif CONFIG_KEYPAD == IHIFI_770_PAD 446#elif CONFIG_KEYPAD == IHIFI_770_PAD
427#define CALENDAR_QUIT BUTTON_POWER 447#define CALENDAR_QUIT BUTTON_POWER
428#define CALENDAR_SELECT BUTTON_PLAY 448#define CALENDAR_SELECT BUTTON_PLAY
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h
index 3c4d5357a5..9d37953c6f 100644
--- a/apps/plugins/chessbox/chessbox_pgn.h
+++ b/apps/plugins/chessbox/chessbox_pgn.h
@@ -572,6 +572,34 @@
572#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT) 572#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT)
573#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT) 573#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT)
574 574
575#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
576#define CB_SELECT BUTTON_PLAY
577#define CB_UP BUTTON_HOME
578#define CB_DOWN BUTTON_OPTION
579#define CB_LEFT BUTTON_PREV
580#define CB_RIGHT BUTTON_NEXT
581#define CB_PLAY BUTTON_VOL_UP
582#define CB_LEVEL BUTTON_VOL_DOWN
583#define CB_MENU BUTTON_POWER
584#define CB_SCROLL_UP (BUTTON_HOME|BUTTON_REPEAT)
585#define CB_SCROLL_DOWN (BUTTON_OPTION|BUTTON_REPEAT)
586#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT)
587#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT)
588
589#elif CONFIG_KEYPAD == XDUOO_X20_PAD
590#define CB_SELECT BUTTON_PLAY
591#define CB_UP BUTTON_HOME
592#define CB_DOWN BUTTON_OPTION
593#define CB_LEFT BUTTON_PREV
594#define CB_RIGHT BUTTON_NEXT
595#define CB_PLAY BUTTON_VOL_UP
596#define CB_LEVEL BUTTON_VOL_DOWN
597#define CB_MENU BUTTON_POWER
598#define CB_SCROLL_UP (BUTTON_HOME|BUTTON_REPEAT)
599#define CB_SCROLL_DOWN (BUTTON_OPTION|BUTTON_REPEAT)
600#define CB_SCROLL_LEFT (BUTTON_PREV|BUTTON_REPEAT)
601#define CB_SCROLL_RIGHT (BUTTON_NEXT|BUTTON_REPEAT)
602
575#elif CONFIG_KEYPAD == IHIFI_770_PAD 603#elif CONFIG_KEYPAD == IHIFI_770_PAD
576#define CB_SELECT BUTTON_PLAY 604#define CB_SELECT BUTTON_PLAY
577#define CB_UP BUTTON_PREV 605#define CB_UP BUTTON_PREV
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index 6b07e1bab5..d93777860b 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -422,6 +422,26 @@
422#define CHC_SETTINGS_OK BUTTON_PLAY 422#define CHC_SETTINGS_OK BUTTON_PLAY
423#define CHC_SETTINGS_CANCEL BUTTON_POWER 423#define CHC_SETTINGS_CANCEL BUTTON_POWER
424 424
425#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
426#define CHC_QUIT BUTTON_POWER
427#define CHC_STARTSTOP BUTTON_PLAY
428#define CHC_RESET BUTTON_OPTION
429#define CHC_MENU BUTTON_HOME
430#define CHC_SETTINGS_INC BUTTON_NEXT
431#define CHC_SETTINGS_DEC BUTTON_PREV
432#define CHC_SETTINGS_OK BUTTON_PLAY
433#define CHC_SETTINGS_CANCEL BUTTON_POWER
434
435#elif CONFIG_KEYPAD == XDUOO_X20_PAD
436#define CHC_QUIT BUTTON_POWER
437#define CHC_STARTSTOP BUTTON_PLAY
438#define CHC_RESET BUTTON_OPTION
439#define CHC_MENU BUTTON_HOME
440#define CHC_SETTINGS_INC BUTTON_NEXT
441#define CHC_SETTINGS_DEC BUTTON_PREV
442#define CHC_SETTINGS_OK BUTTON_PLAY
443#define CHC_SETTINGS_CANCEL BUTTON_POWER
444
425#elif CONFIG_KEYPAD == IHIFI_770_PAD 445#elif CONFIG_KEYPAD == IHIFI_770_PAD
426#define CHC_QUIT BUTTON_POWER 446#define CHC_QUIT BUTTON_POWER
427#define CHC_STARTSTOP BUTTON_PLAY 447#define CHC_STARTSTOP BUTTON_PLAY
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index 58d80a2ccf..7c2be3f7e7 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1291,6 +1291,22 @@ CONFIG_KEYPAD == MROBE500_PAD
1291#define CHIP8_KEY6 BUTTON_NEXT 1291#define CHIP8_KEY6 BUTTON_NEXT
1292#define CHIP8_KEY8 BUTTON_OPTION 1292#define CHIP8_KEY8 BUTTON_OPTION
1293 1293
1294#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
1295#define CHIP8_OFF BUTTON_POWER
1296#define CHIP8_KEY2 BUTTON_HOME
1297#define CHIP8_KEY4 BUTTON_PREV
1298#define CHIP8_KEY5 BUTTON_PLAY
1299#define CHIP8_KEY6 BUTTON_NEXT
1300#define CHIP8_KEY8 BUTTON_OPTION
1301
1302#elif CONFIG_KEYPAD == XDUOO_X20_PAD
1303#define CHIP8_OFF BUTTON_POWER
1304#define CHIP8_KEY2 BUTTON_HOME
1305#define CHIP8_KEY4 BUTTON_PREV
1306#define CHIP8_KEY5 BUTTON_PLAY
1307#define CHIP8_KEY6 BUTTON_NEXT
1308#define CHIP8_KEY8 BUTTON_OPTION
1309
1294#elif CONFIG_KEYPAD == IHIFI_770_PAD 1310#elif CONFIG_KEYPAD == IHIFI_770_PAD
1295#define CHIP8_OFF BUTTON_POWER 1311#define CHIP8_OFF BUTTON_POWER
1296#define CHIP8_KEY2 BUTTON_NEXT 1312#define CHIP8_KEY2 BUTTON_NEXT
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index 249cfe9715..71e24deb8f 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -214,6 +214,16 @@ CONFIG_KEYPAD == MROBE500_PAD
214#define ACTION BUTTON_PLAY 214#define ACTION BUTTON_PLAY
215#define ACTIONTEXT "PLAY" 215#define ACTIONTEXT "PLAY"
216 216
217#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
218#define QUIT BUTTON_POWER
219#define ACTION BUTTON_PLAY
220#define ACTIONTEXT "PLAY"
221
222#elif CONFIG_KEYPAD == XDUOO_X20_PAD
223#define QUIT BUTTON_POWER
224#define ACTION BUTTON_PLAY
225#define ACTIONTEXT "PLAY"
226
217#elif CONFIG_KEYPAD == IHIFI_770_PAD 227#elif CONFIG_KEYPAD == IHIFI_770_PAD
218#define QUIT BUTTON_POWER 228#define QUIT BUTTON_POWER
219#define ACTION BUTTON_PLAY 229#define ACTION BUTTON_PLAY
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c
index c6364b14b4..e80fdeab8b 100644
--- a/apps/plugins/clix.c
+++ b/apps/plugins/clix.c
@@ -284,6 +284,22 @@
284#define CLIX_BUTTON_RIGHT BUTTON_NEXT 284#define CLIX_BUTTON_RIGHT BUTTON_NEXT
285#define CLIX_BUTTON_CLICK BUTTON_PLAY 285#define CLIX_BUTTON_CLICK BUTTON_PLAY
286 286
287#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
288#define CLIX_BUTTON_QUIT BUTTON_POWER
289#define CLIX_BUTTON_UP BUTTON_HOME
290#define CLIX_BUTTON_DOWN BUTTON_OPTION
291#define CLIX_BUTTON_LEFT BUTTON_PREV
292#define CLIX_BUTTON_RIGHT BUTTON_NEXT
293#define CLIX_BUTTON_CLICK BUTTON_PLAY
294
295#elif CONFIG_KEYPAD == XDUOO_X20_PAD
296#define CLIX_BUTTON_QUIT BUTTON_POWER
297#define CLIX_BUTTON_UP BUTTON_HOME
298#define CLIX_BUTTON_DOWN BUTTON_OPTION
299#define CLIX_BUTTON_LEFT BUTTON_PREV
300#define CLIX_BUTTON_RIGHT BUTTON_NEXT
301#define CLIX_BUTTON_CLICK BUTTON_PLAY
302
287#elif CONFIG_KEYPAD == IHIFI_770_PAD 303#elif CONFIG_KEYPAD == IHIFI_770_PAD
288#define CLIX_BUTTON_QUIT BUTTON_POWER 304#define CLIX_BUTTON_QUIT BUTTON_POWER
289#define CLIX_BUTTON_UP BUTTON_PREV 305#define CLIX_BUTTON_UP BUTTON_PREV
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index cad57f9ed6..78fd333773 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -423,6 +423,26 @@
423#define CUBE_PAUSE BUTTON_HOME 423#define CUBE_PAUSE BUTTON_HOME
424#define CUBE_HIGHSPEED BUTTON_PLAY 424#define CUBE_HIGHSPEED BUTTON_PLAY
425 425
426#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
427#define CUBE_QUIT BUTTON_POWER
428#define CUBE_NEXT BUTTON_NEXT
429#define CUBE_PREV BUTTON_PREV
430#define CUBE_INC BUTTON_VOL_UP
431#define CUBE_DEC BUTTON_VOL_DOWN
432#define CUBE_MODE BUTTON_OPTION
433#define CUBE_PAUSE BUTTON_HOME
434#define CUBE_HIGHSPEED BUTTON_PLAY
435
436#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
437#define CUBE_QUIT BUTTON_POWER
438#define CUBE_NEXT BUTTON_NEXT
439#define CUBE_PREV BUTTON_PREV
440#define CUBE_INC BUTTON_VOL_UP
441#define CUBE_DEC BUTTON_VOL_DOWN
442#define CUBE_MODE BUTTON_OPTION
443#define CUBE_PAUSE BUTTON_HOME
444#define CUBE_HIGHSPEED BUTTON_PLAY
445
426#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 446#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
427#define CUBE_QUIT BUTTON_POWER 447#define CUBE_QUIT BUTTON_POWER
428#define CUBE_NEXT BUTTON_NEXT 448#define CUBE_NEXT BUTTON_NEXT
diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index 41194670bf..9f367d7d76 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -566,6 +566,28 @@ void I_ShutdownGraphics(void)
566#define DOOMBUTTON_ENTER BUTTON_PLAY 566#define DOOMBUTTON_ENTER BUTTON_PLAY
567#define DOOMBUTTON_WEAPON BUTTON_VOL_UP 567#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
568 568
569#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
570#define DOOMBUTTON_UP BUTTON_HOME
571#define DOOMBUTTON_DOWN BUTTON_OPTION
572#define DOOMBUTTON_LEFT BUTTON_PREV
573#define DOOMBUTTON_RIGHT BUTTON_NEXT
574#define DOOMBUTTON_SHOOT BUTTON_PLAY
575#define DOOMBUTTON_OPEN (BUTTON_HOME | BUTTON_POWER)
576#define DOOMBUTTON_ESC BUTTON_POWER
577#define DOOMBUTTON_ENTER BUTTON_PLAY
578#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
579
580#elif CONFIG_KEYPAD == XDUOO_X20_PAD
581#define DOOMBUTTON_UP BUTTON_HOME
582#define DOOMBUTTON_DOWN BUTTON_OPTION
583#define DOOMBUTTON_LEFT BUTTON_PREV
584#define DOOMBUTTON_RIGHT BUTTON_NEXT
585#define DOOMBUTTON_SHOOT BUTTON_PLAY
586#define DOOMBUTTON_OPEN (BUTTON_HOME | BUTTON_POWER)
587#define DOOMBUTTON_ESC BUTTON_POWER
588#define DOOMBUTTON_ENTER BUTTON_PLAY
589#define DOOMBUTTON_WEAPON BUTTON_VOL_UP
590
569#elif CONFIG_KEYPAD == IHIFI_770_PAD 591#elif CONFIG_KEYPAD == IHIFI_770_PAD
570#define DOOMBUTTON_UP BUTTON_PREV 592#define DOOMBUTTON_UP BUTTON_PREV
571#define DOOMBUTTON_DOWN BUTTON_NEXT 593#define DOOMBUTTON_DOWN BUTTON_NEXT
diff --git a/apps/plugins/fft/fft.c b/apps/plugins/fft/fft.c
index d56e37f9e2..0f4e33759d 100644
--- a/apps/plugins/fft/fft.c
+++ b/apps/plugins/fft/fft.c
@@ -343,6 +343,24 @@ GREY_INFO_STRUCT
343# define FFT_AMP_SCALE BUTTON_PLAY 343# define FFT_AMP_SCALE BUTTON_PLAY
344# define FFT_QUIT BUTTON_POWER 344# define FFT_QUIT BUTTON_POWER
345 345
346#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
347# define FFT_PREV_GRAPH BUTTON_PREV
348# define FFT_NEXT_GRAPH BUTTON_NEXT
349# define FFT_ORIENTATION BUTTON_HOME
350# define FFT_FREQ_SCALE BUTTON_OPTION
351# define FFT_WINDOW (BUTTON_HOME|BUTTON_POWER)
352# define FFT_AMP_SCALE BUTTON_PLAY
353# define FFT_QUIT BUTTON_POWER
354
355#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
356# define FFT_PREV_GRAPH BUTTON_PREV
357# define FFT_NEXT_GRAPH BUTTON_NEXT
358# define FFT_ORIENTATION BUTTON_HOME
359# define FFT_FREQ_SCALE BUTTON_OPTION
360# define FFT_WINDOW (BUTTON_HOME|BUTTON_POWER)
361# define FFT_AMP_SCALE BUTTON_PLAY
362# define FFT_QUIT BUTTON_POWER
363
346#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 364#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
347# define FFT_PREV_GRAPH BUTTON_PREV 365# define FFT_PREV_GRAPH BUTTON_PREV
348# define FFT_NEXT_GRAPH BUTTON_NEXT 366# define FFT_NEXT_GRAPH BUTTON_NEXT
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index c108939a95..7d1257ef94 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -494,6 +494,30 @@
494#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY) 494#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY)
495#define FLIPIT_TOGGLE BUTTON_PLAY 495#define FLIPIT_TOGGLE BUTTON_PLAY
496 496
497#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
498
499#define FLIPIT_LEFT BUTTON_PREV
500#define FLIPIT_RIGHT BUTTON_NEXT
501#define FLIPIT_UP BUTTON_HOME
502#define FLIPIT_DOWN BUTTON_OPTION
503#define FLIPIT_QUIT BUTTON_POWER
504#define FLIPIT_SHUFFLE (BUTTON_HOME | BUTTON_PREV)
505#define FLIPIT_SOLVE (BUTTON_HOME | BUTTON_NEXT)
506#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY)
507#define FLIPIT_TOGGLE BUTTON_PLAY
508
509#elif CONFIG_KEYPAD == XDUOO_X20_PAD
510
511#define FLIPIT_LEFT BUTTON_PREV
512#define FLIPIT_RIGHT BUTTON_NEXT
513#define FLIPIT_UP BUTTON_HOME
514#define FLIPIT_DOWN BUTTON_OPTION
515#define FLIPIT_QUIT BUTTON_POWER
516#define FLIPIT_SHUFFLE (BUTTON_HOME | BUTTON_PREV)
517#define FLIPIT_SOLVE (BUTTON_HOME | BUTTON_NEXT)
518#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_PLAY)
519#define FLIPIT_TOGGLE BUTTON_PLAY
520
497#elif CONFIG_KEYPAD == IHIFI_770_PAD 521#elif CONFIG_KEYPAD == IHIFI_770_PAD
498 522
499#define FLIPIT_LEFT BUTTON_HOME 523#define FLIPIT_LEFT BUTTON_HOME
diff --git a/apps/plugins/fractals/fractal.h b/apps/plugins/fractals/fractal.h
index 5a56a39b13..679782d37a 100644
--- a/apps/plugins/fractals/fractal.h
+++ b/apps/plugins/fractals/fractal.h
@@ -496,6 +496,30 @@
496#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV) 496#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV)
497#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER) 497#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER)
498 498
499#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
500#define FRACTAL_QUIT BUTTON_POWER
501#define FRACTAL_UP BUTTON_HOME
502#define FRACTAL_DOWN BUTTON_OPTION
503#define FRACTAL_LEFT BUTTON_PREV
504#define FRACTAL_RIGHT BUTTON_NEXT
505#define FRACTAL_ZOOM_IN BUTTON_VOL_UP
506#define FRACTAL_ZOOM_OUT BUTTON_VOL_DOWN
507#define FRACTAL_PRECISION_INC (BUTTON_PLAY | BUTTON_NEXT)
508#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV)
509#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER)
510
511#elif CONFIG_KEYPAD == XDUOO_X20_PAD
512#define FRACTAL_QUIT BUTTON_POWER
513#define FRACTAL_UP BUTTON_HOME
514#define FRACTAL_DOWN BUTTON_OPTION
515#define FRACTAL_LEFT BUTTON_PREV
516#define FRACTAL_RIGHT BUTTON_NEXT
517#define FRACTAL_ZOOM_IN BUTTON_VOL_UP
518#define FRACTAL_ZOOM_OUT BUTTON_VOL_DOWN
519#define FRACTAL_PRECISION_INC (BUTTON_PLAY | BUTTON_NEXT)
520#define FRACTAL_PRECISION_DEC (BUTTON_PLAY | BUTTON_PREV)
521#define FRACTAL_RESET (BUTTON_HOME | BUTTON_POWER)
522
499#elif CONFIG_KEYPAD == IHIFI_770_PAD 523#elif CONFIG_KEYPAD == IHIFI_770_PAD
500#define FRACTAL_QUIT BUTTON_POWER 524#define FRACTAL_QUIT BUTTON_POWER
501#define FRACTAL_UP BUTTON_PREV 525#define FRACTAL_UP BUTTON_PREV
diff --git a/apps/plugins/goban/goban.h b/apps/plugins/goban/goban.h
index 9f03937078..e04b4c2447 100644
--- a/apps/plugins/goban/goban.h
+++ b/apps/plugins/goban/goban.h
@@ -464,6 +464,30 @@
464#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT 464#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
465#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER 465#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER
466 466
467#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
468#define GBN_BUTTON_UP BUTTON_HOME
469#define GBN_BUTTON_DOWN BUTTON_OPTION
470#define GBN_BUTTON_LEFT BUTTON_PREV
471#define GBN_BUTTON_RIGHT BUTTON_NEXT
472#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN
473#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP
474#define GBN_BUTTON_MENU BUTTON_POWER
475#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
476#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
477#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER
478
479#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
480#define GBN_BUTTON_UP BUTTON_HOME
481#define GBN_BUTTON_DOWN BUTTON_OPTION
482#define GBN_BUTTON_LEFT BUTTON_PREV
483#define GBN_BUTTON_RIGHT BUTTON_NEXT
484#define GBN_BUTTON_RETREAT BUTTON_VOL_DOWN
485#define GBN_BUTTON_ADVANCE BUTTON_VOL_UP
486#define GBN_BUTTON_MENU BUTTON_POWER
487#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
488#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
489#define GBN_BUTTON_NEXT_VAR BUTTON_HOME | BUTTON_POWER
490
467#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 491#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
468 492
469#define GBN_BUTTON_UP BUTTON_PREV 493#define GBN_BUTTON_UP BUTTON_PREV
diff --git a/apps/plugins/imageviewer/imageviewer_button.h b/apps/plugins/imageviewer/imageviewer_button.h
index 5ffef12a62..e37febc76a 100644
--- a/apps/plugins/imageviewer/imageviewer_button.h
+++ b/apps/plugins/imageviewer/imageviewer_button.h
@@ -510,6 +510,36 @@
510#define IMGVIEW_MENU BUTTON_POWER 510#define IMGVIEW_MENU BUTTON_POWER
511#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER) 511#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
512 512
513#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
514#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
515#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
516#define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT)
517#define IMGVIEW_UP BUTTON_HOME
518#define IMGVIEW_DOWN BUTTON_OPTION
519#define IMGVIEW_LEFT BUTTON_PREV
520#define IMGVIEW_RIGHT BUTTON_NEXT
521#define IMGVIEW_NEXT BUTTON_VOL_UP
522#define IMGVIEW_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT)
523#define IMGVIEW_PREVIOUS BUTTON_VOL_DOWN
524#define IMGVIEW_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT)
525#define IMGVIEW_MENU BUTTON_POWER
526#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
527
528#elif CONFIG_KEYPAD == XDUOO_X20_PAD
529#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
530#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
531#define IMGVIEW_ZOOM_OUT (BUTTON_PLAY | BUTTON_REPEAT)
532#define IMGVIEW_UP BUTTON_HOME
533#define IMGVIEW_DOWN BUTTON_OPTION
534#define IMGVIEW_LEFT BUTTON_PREV
535#define IMGVIEW_RIGHT BUTTON_NEXT
536#define IMGVIEW_NEXT BUTTON_VOL_UP
537#define IMGVIEW_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT)
538#define IMGVIEW_PREVIOUS BUTTON_VOL_DOWN
539#define IMGVIEW_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT)
540#define IMGVIEW_MENU BUTTON_POWER
541#define IMGVIEW_SLIDE_SHOW (BUTTON_HOME|BUTTON_POWER)
542
513#elif CONFIG_KEYPAD == IHIFI_770_PAD 543#elif CONFIG_KEYPAD == IHIFI_770_PAD
514#define IMGVIEW_ZOOM_PRE BUTTON_PLAY 544#define IMGVIEW_ZOOM_PRE BUTTON_PLAY
515#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL) 545#define IMGVIEW_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c
index d3feb236cc..8cf4d67f3e 100644
--- a/apps/plugins/invadrox.c
+++ b/apps/plugins/invadrox.c
@@ -272,6 +272,20 @@ CONFIG_KEYPAD == MROBE500_PAD
272#define QUIT BUTTON_POWER 272#define QUIT BUTTON_POWER
273#define FIRE BUTTON_MENU 273#define FIRE BUTTON_MENU
274 274
275#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
276
277#define QUIT BUTTON_POWER
278#define LEFT BUTTON_HOME
279#define RIGHT BUTTON_VOL_DOWN
280#define FIRE BUTTON_VOL_UP
281
282#elif CONFIG_KEYPAD == XDUOO_X20_PAD
283
284#define QUIT BUTTON_POWER
285#define LEFT BUTTON_HOME
286#define RIGHT BUTTON_VOL_DOWN
287#define FIRE BUTTON_VOL_UP
288
275#elif CONFIG_KEYPAD == IHIFI_770_PAD 289#elif CONFIG_KEYPAD == IHIFI_770_PAD
276 290
277#define QUIT BUTTON_POWER 291#define QUIT BUTTON_POWER
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index bc0bc73183..38121a480c 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -387,6 +387,26 @@ CONFIG_KEYPAD == MROBE500_PAD
387#define HK_SELECT "PLAY" 387#define HK_SELECT "PLAY"
388#define HK_CANCEL "POWER" 388#define HK_CANCEL "POWER"
389 389
390#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
391#define JEWELS_UP BUTTON_HOME
392#define JEWELS_DOWN BUTTON_OPTION
393#define JEWELS_LEFT BUTTON_PREV
394#define JEWELS_RIGHT BUTTON_NEXT
395#define JEWELS_SELECT BUTTON_PLAY
396#define JEWELS_CANCEL BUTTON_POWER
397#define HK_SELECT "PLAY"
398#define HK_CANCEL "POWER"
399
400#elif CONFIG_KEYPAD == XDUOO_X20_PAD
401#define JEWELS_UP BUTTON_HOME
402#define JEWELS_DOWN BUTTON_OPTION
403#define JEWELS_LEFT BUTTON_PREV
404#define JEWELS_RIGHT BUTTON_NEXT
405#define JEWELS_SELECT BUTTON_PLAY
406#define JEWELS_CANCEL BUTTON_POWER
407#define HK_SELECT "PLAY"
408#define HK_CANCEL "POWER"
409
390#elif CONFIG_KEYPAD == IHIFI_770_PAD 410#elif CONFIG_KEYPAD == IHIFI_770_PAD
391#define JEWELS_UP BUTTON_PREV 411#define JEWELS_UP BUTTON_PREV
392#define JEWELS_DOWN BUTTON_NEXT 412#define JEWELS_DOWN BUTTON_NEXT
diff --git a/apps/plugins/lib/keymaps.h b/apps/plugins/lib/keymaps.h
index e240a0989e..e3de03f222 100644
--- a/apps/plugins/lib/keymaps.h
+++ b/apps/plugins/lib/keymaps.h
@@ -223,6 +223,22 @@
223#define BTN_FIRE BUTTON_PLAY 223#define BTN_FIRE BUTTON_PLAY
224#define BTN_PAUSE BUTTON_POWER 224#define BTN_PAUSE BUTTON_POWER
225 225
226#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
227#define BTN_UP BUTTON_VOL_UP
228#define BTN_DOWN BUTTON_VOL_DOWN
229#define BTN_LEFT BUTTON_PREV
230#define BTN_RIGHT BUTTON_NEXT
231#define BTN_FIRE BUTTON_PLAY
232#define BTN_PAUSE BUTTON_POWER
233
234#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
235#define BTN_UP BUTTON_VOL_UP
236#define BTN_DOWN BUTTON_VOL_DOWN
237#define BTN_LEFT BUTTON_PREV
238#define BTN_RIGHT BUTTON_NEXT
239#define BTN_FIRE BUTTON_PLAY
240#define BTN_PAUSE BUTTON_POWER
241
226#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 242#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
227#define BTN_UP BUTTON_PREV 243#define BTN_UP BUTTON_PREV
228#define BTN_DOWN BUTTON_NEXT 244#define BTN_DOWN BUTTON_NEXT
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index 97b5a1e1bf..0834e020f4 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -237,6 +237,24 @@ const struct button_mapping pla_main_ctx[] =
237 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE }, 237 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE },
238 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, 238 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
239 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, 239 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
240#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
241 { PLA_UP, BUTTON_HOME, BUTTON_NONE },
242 { PLA_DOWN, BUTTON_OPTION, BUTTON_NONE },
243 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE },
244 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE },
245 { PLA_UP_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE },
246 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE },
247 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
248 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
249#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
250 { PLA_UP, BUTTON_HOME, BUTTON_NONE },
251 { PLA_DOWN, BUTTON_OPTION, BUTTON_NONE },
252 { PLA_LEFT, BUTTON_PREV, BUTTON_NONE },
253 { PLA_RIGHT, BUTTON_NEXT, BUTTON_NONE },
254 { PLA_UP_REPEAT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE },
255 { PLA_DOWN_REPEAT, BUTTON_OPTION|BUTTON_REPEAT, BUTTON_NONE },
256 { PLA_LEFT_REPEAT, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
257 { PLA_RIGHT_REPEAT, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
240#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 258#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
241 { PLA_UP, BUTTON_PREV, BUTTON_NONE }, 259 { PLA_UP, BUTTON_PREV, BUTTON_NONE },
242 { PLA_DOWN, BUTTON_NEXT, BUTTON_NONE }, 260 { PLA_DOWN, BUTTON_NEXT, BUTTON_NONE },
@@ -480,6 +498,18 @@ const struct button_mapping pla_main_ctx[] =
480 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, 498 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
481 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, 499 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
482 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, 500 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
501#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
502 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
503 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
504 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
505 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
506 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
507#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
508 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
509 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
510 {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
511 {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
512 {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
483#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 513#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
484 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, 514 {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
485 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, 515 {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index 8e867e5173..e6e2b4bf51 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -301,6 +301,22 @@
301#define MIDI_VOL_DOWN BUTTON_VOL_DOWN 301#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
302#define MIDI_PLAYPAUSE BUTTON_PLAY 302#define MIDI_PLAYPAUSE BUTTON_PLAY
303 303
304#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
305#define MIDI_QUIT BUTTON_POWER
306#define MIDI_FFWD BUTTON_NEXT
307#define MIDI_REWIND BUTTON_PREV
308#define MIDI_VOL_UP BUTTON_VOL_UP
309#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
310#define MIDI_PLAYPAUSE BUTTON_PLAY
311
312#elif CONFIG_KEYPAD == XDUOO_X20_PAD
313#define MIDI_QUIT BUTTON_POWER
314#define MIDI_FFWD BUTTON_NEXT
315#define MIDI_REWIND BUTTON_PREV
316#define MIDI_VOL_UP BUTTON_VOL_UP
317#define MIDI_VOL_DOWN BUTTON_VOL_DOWN
318#define MIDI_PLAYPAUSE BUTTON_PLAY
319
304#elif CONFIG_KEYPAD == IHIFI_770_PAD 320#elif CONFIG_KEYPAD == IHIFI_770_PAD
305#define MIDI_QUIT BUTTON_POWER 321#define MIDI_QUIT BUTTON_POWER
306#define MIDI_FFWD BUTTON_VOL_DOWN 322#define MIDI_FFWD BUTTON_VOL_DOWN
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 956ba128d5..917f90dcd0 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -417,6 +417,32 @@ CONFIG_KEYPAD == MROBE500_PAD
417# define MINESWP_DISCOVER2 BUTTON_VOL_UP 417# define MINESWP_DISCOVER2 BUTTON_VOL_UP
418# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION) 418# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION)
419 419
420#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
421# define MINESWP_LEFT BUTTON_PREV
422# define MINESWP_RIGHT BUTTON_NEXT
423# define MINESWP_UP BUTTON_HOME
424# define MINESWP_DOWN BUTTON_OPTION
425# define MINESWP_QUIT BUTTON_POWER
426# define MINESWP_TOGGLE_PRE BUTTON_PLAY
427# define MINESWP_TOGGLE (BUTTON_PLAY | BUTTON_REL)
428# define MINESWP_TOGGLE2 BUTTON_VOL_DOWN
429# define MINESWP_DISCOVER (BUTTON_PLAY | BUTTON_REPEAT)
430# define MINESWP_DISCOVER2 BUTTON_VOL_UP
431# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION)
432
433#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
434# define MINESWP_LEFT BUTTON_PREV
435# define MINESWP_RIGHT BUTTON_NEXT
436# define MINESWP_UP BUTTON_HOME
437# define MINESWP_DOWN BUTTON_OPTION
438# define MINESWP_QUIT BUTTON_POWER
439# define MINESWP_TOGGLE_PRE BUTTON_PLAY
440# define MINESWP_TOGGLE (BUTTON_PLAY | BUTTON_REL)
441# define MINESWP_TOGGLE2 BUTTON_VOL_DOWN
442# define MINESWP_DISCOVER (BUTTON_PLAY | BUTTON_REPEAT)
443# define MINESWP_DISCOVER2 BUTTON_VOL_UP
444# define MINESWP_INFO (BUTTON_PLAY | BUTTON_OPTION)
445
420#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 446#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
421# define MINESWP_LEFT BUTTON_HOME 447# define MINESWP_LEFT BUTTON_HOME
422# define MINESWP_RIGHT BUTTON_VOL_DOWN 448# define MINESWP_RIGHT BUTTON_VOL_DOWN
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index d147120cd4..3b912ba606 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2562,6 +2562,19 @@ CONFIG_KEYPAD == MROBE500_PAD
2562#define MP3ENC_DONE BUTTON_POWER 2562#define MP3ENC_DONE BUTTON_POWER
2563#define MP3ENC_SELECT BUTTON_PLAY 2563#define MP3ENC_SELECT BUTTON_PLAY
2564 2564
2565#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
2566#define MP3ENC_PREV BUTTON_HOME
2567#define MP3ENC_NEXT BUTTON_OPTION
2568#define MP3ENC_DONE BUTTON_POWER
2569#define MP3ENC_SELECT BUTTON_PLAY
2570
2571#elif CONFIG_KEYPAD == XDUOO_X20_PAD
2572#define MP3ENC_PREV BUTTON_HOME
2573#define MP3ENC_NEXT BUTTON_OPTION
2574#define MP3ENC_DONE BUTTON_POWER
2575#define MP3ENC_SELECT BUTTON_PLAY
2576
2577
2565#elif CONFIG_KEYPAD == IHIFI_770_PAD 2578#elif CONFIG_KEYPAD == IHIFI_770_PAD
2566#define MP3ENC_PREV BUTTON_PREV 2579#define MP3ENC_PREV BUTTON_PREV
2567#define MP3ENC_NEXT BUTTON_NEXT 2580#define MP3ENC_NEXT BUTTON_NEXT
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 8427db12b4..d5d7c7c019 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -316,6 +316,26 @@ struct mpeg_settings settings;
316#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN 316#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
317#define MPEG_START_TIME_EXIT BUTTON_POWER 317#define MPEG_START_TIME_EXIT BUTTON_POWER
318 318
319#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
320#define MPEG_START_TIME_SELECT BUTTON_PLAY
321#define MPEG_START_TIME_LEFT BUTTON_PREV
322#define MPEG_START_TIME_RIGHT BUTTON_NEXT
323#define MPEG_START_TIME_UP BUTTON_HOME
324#define MPEG_START_TIME_DOWN BUTTON_OPTION
325#define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP
326#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
327#define MPEG_START_TIME_EXIT BUTTON_POWER
328
329#elif CONFIG_KEYPAD == XDUOO_X20_PAD
330#define MPEG_START_TIME_SELECT BUTTON_PLAY
331#define MPEG_START_TIME_LEFT BUTTON_PREV
332#define MPEG_START_TIME_RIGHT BUTTON_NEXT
333#define MPEG_START_TIME_UP BUTTON_HOME
334#define MPEG_START_TIME_DOWN BUTTON_OPTION
335#define MPEG_START_TIME_LEFT2 BUTTON_VOL_UP
336#define MPEG_START_TIME_RIGHT2 BUTTON_VOL_DOWN
337#define MPEG_START_TIME_EXIT BUTTON_POWER
338
319#elif CONFIG_KEYPAD == IHIFI_770_PAD 339#elif CONFIG_KEYPAD == IHIFI_770_PAD
320#define MPEG_START_TIME_SELECT BUTTON_PLAY 340#define MPEG_START_TIME_SELECT BUTTON_PLAY
321#define MPEG_START_TIME_LEFT BUTTON_HOME 341#define MPEG_START_TIME_LEFT BUTTON_HOME
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index 39ea484ff2..eed1fab6d7 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -450,6 +450,24 @@ CONFIG_KEYPAD == SANSA_M200_PAD
450#define MPEG_RW BUTTON_PREV 450#define MPEG_RW BUTTON_PREV
451#define MPEG_FF BUTTON_NEXT 451#define MPEG_FF BUTTON_NEXT
452 452
453#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
454#define MPEG_MENU BUTTON_PLAY
455#define MPEG_STOP BUTTON_POWER
456#define MPEG_PAUSE BUTTON_HOME
457#define MPEG_VOLDOWN BUTTON_VOL_DOWN
458#define MPEG_VOLUP BUTTON_VOL_UP
459#define MPEG_RW BUTTON_PREV
460#define MPEG_FF BUTTON_NEXT
461
462#elif CONFIG_KEYPAD == XDUOO_X20_PAD
463#define MPEG_MENU BUTTON_PLAY
464#define MPEG_STOP BUTTON_POWER
465#define MPEG_PAUSE BUTTON_HOME
466#define MPEG_VOLDOWN BUTTON_VOL_DOWN
467#define MPEG_VOLUP BUTTON_VOL_UP
468#define MPEG_RW BUTTON_PREV
469#define MPEG_FF BUTTON_NEXT
470
453#elif CONFIG_KEYPAD == IHIFI_770_PAD 471#elif CONFIG_KEYPAD == IHIFI_770_PAD
454#define MPEG_MENU BUTTON_PLAY 472#define MPEG_MENU BUTTON_PLAY
455#define MPEG_STOP BUTTON_POWER 473#define MPEG_STOP BUTTON_POWER
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index f4711d4e0e..6702add139 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -518,6 +518,35 @@
518#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN 518#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
519#define NEED_LASTBUTTON 519#define NEED_LASTBUTTON
520 520
521#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
522#define OSCILLOSCOPE_QUIT BUTTON_POWER
523#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY
524#define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL)
525#define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_PLAY
526#define OSCILLOSCOPE_ORIENTATION (BUTTON_PLAY | BUTTON_REPEAT)
527#define OSCILLOSCOPE_ADVMODE BUTTON_HOME
528#define OSCILLOSCOPE_PAUSE BUTTON_OPTION
529#define OSCILLOSCOPE_SPEED_UP BUTTON_NEXT
530#define OSCILLOSCOPE_SPEED_DOWN BUTTON_PREV
531#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
532#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
533#define NEED_LASTBUTTON
534
535#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
536#define OSCILLOSCOPE_QUIT BUTTON_POWER
537#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY
538#define OSCILLOSCOPE_DRAWMODE (BUTTON_PLAY | BUTTON_REL)
539#define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_PLAY
540#define OSCILLOSCOPE_ORIENTATION (BUTTON_PLAY | BUTTON_REPEAT)
541#define OSCILLOSCOPE_ADVMODE BUTTON_HOME
542#define OSCILLOSCOPE_PAUSE BUTTON_OPTION
543#define OSCILLOSCOPE_SPEED_UP BUTTON_NEXT
544#define OSCILLOSCOPE_SPEED_DOWN BUTTON_PREV
545#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
546#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
547#define NEED_LASTBUTTON
548
549
521#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 550#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
522#define OSCILLOSCOPE_QUIT BUTTON_POWER 551#define OSCILLOSCOPE_QUIT BUTTON_POWER
523#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY 552#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_PLAY
diff --git a/apps/plugins/pacbox/pacbox.h b/apps/plugins/pacbox/pacbox.h
index 0e3de62dfa..78a171467a 100644
--- a/apps/plugins/pacbox/pacbox.h
+++ b/apps/plugins/pacbox/pacbox.h
@@ -364,6 +364,25 @@
364#define PACMAN_1UP BUTTON_VOLUP 364#define PACMAN_1UP BUTTON_VOLUP
365#define PACMAN_COIN BUTTON_VOLDOWN 365#define PACMAN_COIN BUTTON_VOLDOWN
366 366
367#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
368#define PACMAN_UP BUTTON_PREV
369#define PACMAN_DOWN BUTTON_NEXT
370#define PACMAN_LEFT BUTTON_HOME
371#define PACMAN_RIGHT BUTTON_VOL_DOWN
372#define PACMAN_MENU BUTTON_POWER
373#define PACMAN_1UP BUTTON_VOL_UP
374#define PACMAN_COIN BUTTON_PLAY
375
376#elif CONFIG_KEYPAD == XDUOO_X20_PAD
377#define PACMAN_UP BUTTON_PREV
378#define PACMAN_DOWN BUTTON_NEXT
379#define PACMAN_LEFT BUTTON_HOME
380#define PACMAN_RIGHT BUTTON_VOL_DOWN
381#define PACMAN_MENU BUTTON_POWER
382#define PACMAN_1UP BUTTON_VOL_UP
383#define PACMAN_COIN BUTTON_PLAY
384
385
367#elif CONFIG_KEYPAD == IHIFI_770_PAD 386#elif CONFIG_KEYPAD == IHIFI_770_PAD
368#define PACMAN_UP BUTTON_PREV 387#define PACMAN_UP BUTTON_PREV
369#define PACMAN_DOWN BUTTON_NEXT 388#define PACMAN_DOWN BUTTON_NEXT
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c
index cc2e8e3f23..b638f2feeb 100644
--- a/apps/plugins/pegbox.c
+++ b/apps/plugins/pegbox.c
@@ -660,6 +660,40 @@ CONFIG_KEYPAD == MROBE500_PAD
660#define LVL_UP_TEXT "VOL+" 660#define LVL_UP_TEXT "VOL+"
661#define LVL_DOWN_TEXT "VOL-" 661#define LVL_DOWN_TEXT "VOL-"
662 662
663#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
664#define PEGBOX_SELECT BUTTON_PLAY
665#define PEGBOX_QUIT BUTTON_POWER
666#define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME)
667#define PEGBOX_LVL_UP BUTTON_VOL_UP
668#define PEGBOX_LVL_DOWN BUTTON_VOL_DOWN
669#define PEGBOX_UP BUTTON_HOME
670#define PEGBOX_DOWN BUTTON_OPTION
671#define PEGBOX_RIGHT BUTTON_NEXT
672#define PEGBOX_LEFT BUTTON_PREV
673
674#define SELECT_TEXT "PLAY"
675#define QUIT_TEXT "POWER"
676#define RESTART_TEXT "HOME"
677#define LVL_UP_TEXT "VOL+"
678#define LVL_DOWN_TEXT "VOL-"
679
680#elif CONFIG_KEYPAD == XDUOO_X20_PAD
681#define PEGBOX_SELECT BUTTON_PLAY
682#define PEGBOX_QUIT BUTTON_POWER
683#define PEGBOX_RESTART (BUTTON_POWER | BUTTON_HOME)
684#define PEGBOX_LVL_UP BUTTON_VOL_UP
685#define PEGBOX_LVL_DOWN BUTTON_VOL_DOWN
686#define PEGBOX_UP BUTTON_HOME
687#define PEGBOX_DOWN BUTTON_OPTION
688#define PEGBOX_RIGHT BUTTON_NEXT
689#define PEGBOX_LEFT BUTTON_PREV
690
691#define SELECT_TEXT "PLAY"
692#define QUIT_TEXT "POWER"
693#define RESTART_TEXT "HOME"
694#define LVL_UP_TEXT "VOL+"
695#define LVL_DOWN_TEXT "VOL-"
696
663#elif CONFIG_KEYPAD == IHIFI_770_PAD 697#elif CONFIG_KEYPAD == IHIFI_770_PAD
664#define PEGBOX_SELECT BUTTON_PLAY 698#define PEGBOX_SELECT BUTTON_PLAY
665#define PEGBOX_QUIT BUTTON_POWER 699#define PEGBOX_QUIT BUTTON_POWER
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index cb3006d7c4..3656a35fd2 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -317,6 +317,22 @@ CONFIG_KEYPAD == MROBE500_PAD
317#define PONG_RIGHT_UP BUTTON_HOME 317#define PONG_RIGHT_UP BUTTON_HOME
318#define PONG_RIGHT_DOWN BUTTON_NEXT 318#define PONG_RIGHT_DOWN BUTTON_NEXT
319 319
320#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
321#define PONG_QUIT BUTTON_POWER
322#define PONG_PAUSE BUTTON_PLAY
323#define PONG_LEFT_UP BUTTON_PREV
324#define PONG_LEFT_DOWN BUTTON_OPTION
325#define PONG_RIGHT_UP BUTTON_HOME
326#define PONG_RIGHT_DOWN BUTTON_NEXT
327
328#elif CONFIG_KEYPAD == XDUOO_X20_PAD
329#define PONG_QUIT BUTTON_POWER
330#define PONG_PAUSE BUTTON_PLAY
331#define PONG_LEFT_UP BUTTON_PREV
332#define PONG_LEFT_DOWN BUTTON_OPTION
333#define PONG_RIGHT_UP BUTTON_HOME
334#define PONG_RIGHT_DOWN BUTTON_NEXT
335
320#elif CONFIG_KEYPAD == IHIFI_770_PAD 336#elif CONFIG_KEYPAD == IHIFI_770_PAD
321#define PONG_QUIT BUTTON_POWER 337#define PONG_QUIT BUTTON_POWER
322#define PONG_PAUSE BUTTON_PREV 338#define PONG_PAUSE BUTTON_PREV
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h
index cba34d2814..4ec6bcb67b 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -339,6 +339,28 @@
339#define REVERSI_BUTTON_MENU BUTTON_PLAY 339#define REVERSI_BUTTON_MENU BUTTON_PLAY
340#define REVERSI_BUTTON_MENU_LONGPRESS 340#define REVERSI_BUTTON_MENU_LONGPRESS
341 341
342#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
343#define REVERSI_BUTTON_QUIT BUTTON_POWER
344#define REVERSI_BUTTON_UP BUTTON_HOME
345#define REVERSI_BUTTON_DOWN BUTTON_OPTION
346#define REVERSI_BUTTON_LEFT BUTTON_PREV
347#define REVERSI_BUTTON_RIGHT BUTTON_NEXT
348#define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY
349#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
350#define REVERSI_BUTTON_MENU BUTTON_PLAY
351#define REVERSI_BUTTON_MENU_LONGPRESS
352
353#elif CONFIG_KEYPAD == XDUOO_X20_PAD
354#define REVERSI_BUTTON_QUIT BUTTON_POWER
355#define REVERSI_BUTTON_UP BUTTON_HOME
356#define REVERSI_BUTTON_DOWN BUTTON_OPTION
357#define REVERSI_BUTTON_LEFT BUTTON_PREV
358#define REVERSI_BUTTON_RIGHT BUTTON_NEXT
359#define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY
360#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
361#define REVERSI_BUTTON_MENU BUTTON_PLAY
362#define REVERSI_BUTTON_MENU_LONGPRESS
363
342#elif CONFIG_KEYPAD == IHIFI_770_PAD 364#elif CONFIG_KEYPAD == IHIFI_770_PAD
343#define REVERSI_BUTTON_QUIT BUTTON_POWER 365#define REVERSI_BUTTON_QUIT BUTTON_POWER
344#define REVERSI_BUTTON_UP BUTTON_PREV 366#define REVERSI_BUTTON_UP BUTTON_PREV
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index 13eb593775..e2fedab200 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -492,6 +492,30 @@
492#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL) 492#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL)
493#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT) 493#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT)
494 494
495#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
496
497#define ROCKBLOX_OFF BUTTON_POWER
498#define ROCKBLOX_ROTATE_CCW BUTTON_HOME
499#define ROCKBLOX_ROTATE_CCW2 BUTTON_VOL_DOWN
500#define ROCKBLOX_ROTATE_CW BUTTON_VOL_UP
501#define ROCKBLOX_DOWN BUTTON_OPTION
502#define ROCKBLOX_LEFT BUTTON_PREV
503#define ROCKBLOX_RIGHT BUTTON_NEXT
504#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL)
505#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT)
506
507#elif CONFIG_KEYPAD == XDUOO_X20_PAD
508
509#define ROCKBLOX_OFF BUTTON_POWER
510#define ROCKBLOX_ROTATE_CCW BUTTON_HOME
511#define ROCKBLOX_ROTATE_CCW2 BUTTON_VOL_DOWN
512#define ROCKBLOX_ROTATE_CW BUTTON_VOL_UP
513#define ROCKBLOX_DOWN BUTTON_OPTION
514#define ROCKBLOX_LEFT BUTTON_PREV
515#define ROCKBLOX_RIGHT BUTTON_NEXT
516#define ROCKBLOX_DROP (BUTTON_PLAY|BUTTON_REL)
517#define ROCKBLOX_RESTART (BUTTON_PLAY|BUTTON_REPEAT)
518
495#elif CONFIG_KEYPAD == IHIFI_770_PAD 519#elif CONFIG_KEYPAD == IHIFI_770_PAD
496 520
497#define ROCKBLOX_OFF BUTTON_POWER 521#define ROCKBLOX_OFF BUTTON_POWER
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c
index 8886793ab7..f188dc1e24 100644
--- a/apps/plugins/rockboy/rockboy.c
+++ b/apps/plugins/rockboy/rockboy.c
@@ -433,6 +433,26 @@ static void setoptions (void)
433 options.SELECT = BUTTON_VOL_UP; 433 options.SELECT = BUTTON_VOL_UP;
434 options.MENU = BUTTON_POWER; 434 options.MENU = BUTTON_POWER;
435 435
436#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
437 options.UP = BUTTON_PREV;
438 options.DOWN = BUTTON_NEXT;
439
440 options.A = BUTTON_HOME;
441 options.B = BUTTON_OPTION;
442 options.START = BUTTON_VOL_DOWN;
443 options.SELECT = BUTTON_VOL_UP;
444 options.MENU = BUTTON_POWER;
445
446#elif CONFIG_KEYPAD == XDUOO_X20_PAD
447 options.UP = BUTTON_PREV;
448 options.DOWN = BUTTON_NEXT;
449
450 options.A = BUTTON_HOME;
451 options.B = BUTTON_OPTION;
452 options.START = BUTTON_VOL_DOWN;
453 options.SELECT = BUTTON_VOL_UP;
454 options.MENU = BUTTON_POWER;
455
436#elif CONFIG_KEYPAD == IHIFI_770_PAD 456#elif CONFIG_KEYPAD == IHIFI_770_PAD
437 options.UP = BUTTON_PREV; 457 options.UP = BUTTON_PREV;
438 options.DOWN = BUTTON_NEXT; 458 options.DOWN = BUTTON_NEXT;
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index 0ea36c84b8..9b863906ce 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -340,6 +340,25 @@ CONFIG_KEYPAD == MROBE500_PAD
340#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER) 340#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
341#define PUZZLE_PICTURE BUTTON_PLAY 341#define PUZZLE_PICTURE BUTTON_PLAY
342 342
343#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
344#define PUZZLE_QUIT BUTTON_POWER
345#define PUZZLE_LEFT BUTTON_PREV
346#define PUZZLE_RIGHT BUTTON_NEXT
347#define PUZZLE_UP BUTTON_HOME
348#define PUZZLE_DOWN BUTTON_OPTION
349#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
350#define PUZZLE_PICTURE BUTTON_PLAY
351
352#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
353#define PUZZLE_QUIT BUTTON_POWER
354#define PUZZLE_LEFT BUTTON_PREV
355#define PUZZLE_RIGHT BUTTON_NEXT
356#define PUZZLE_UP BUTTON_HOME
357#define PUZZLE_DOWN BUTTON_OPTION
358#define PUZZLE_SHUFFLE (BUTTON_HOME | BUTTON_POWER)
359#define PUZZLE_PICTURE BUTTON_PLAY
360
361
343#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 362#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
344#define PUZZLE_QUIT BUTTON_POWER 363#define PUZZLE_QUIT BUTTON_POWER
345#define PUZZLE_LEFT BUTTON_HOME 364#define PUZZLE_LEFT BUTTON_HOME
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index 2518316bdd..ae1e4350ad 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -297,6 +297,22 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left;
297#define SNAKE_DOWN BUTTON_OPTION 297#define SNAKE_DOWN BUTTON_OPTION
298#define SNAKE_PLAYPAUSE BUTTON_PLAY 298#define SNAKE_PLAYPAUSE BUTTON_PLAY
299 299
300#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
301#define SNAKE_QUIT BUTTON_POWER
302#define SNAKE_LEFT BUTTON_PREV
303#define SNAKE_RIGHT BUTTON_NEXT
304#define SNAKE_UP BUTTON_HOME
305#define SNAKE_DOWN BUTTON_OPTION
306#define SNAKE_PLAYPAUSE BUTTON_PLAY
307
308#elif CONFIG_KEYPAD == XDUOO_X20_PAD
309#define SNAKE_QUIT BUTTON_POWER
310#define SNAKE_LEFT BUTTON_PREV
311#define SNAKE_RIGHT BUTTON_NEXT
312#define SNAKE_UP BUTTON_HOME
313#define SNAKE_DOWN BUTTON_OPTION
314#define SNAKE_PLAYPAUSE BUTTON_PLAY
315
300#elif CONFIG_KEYPAD == IHIFI_770_PAD 316#elif CONFIG_KEYPAD == IHIFI_770_PAD
301#define SNAKE_QUIT BUTTON_POWER 317#define SNAKE_QUIT BUTTON_POWER
302#define SNAKE_LEFT BUTTON_HOME 318#define SNAKE_LEFT BUTTON_HOME
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index 9ea79504e4..a9f0942806 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -428,6 +428,24 @@ CONFIG_KEYPAD == MROBE500_PAD
428#define SNAKE2_PLAYPAUSE BUTTON_PLAY 428#define SNAKE2_PLAYPAUSE BUTTON_PLAY
429#define SNAKE2_PLAYPAUSE_TEXT "PLAY" 429#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
430 430
431#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
432#define SNAKE2_LEFT BUTTON_PREV
433#define SNAKE2_RIGHT BUTTON_NEXT
434#define SNAKE2_UP BUTTON_HOME
435#define SNAKE2_DOWN BUTTON_OPTION
436#define SNAKE2_QUIT BUTTON_POWER
437#define SNAKE2_PLAYPAUSE BUTTON_PLAY
438#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
439
440#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
441#define SNAKE2_LEFT BUTTON_PREV
442#define SNAKE2_RIGHT BUTTON_NEXT
443#define SNAKE2_UP BUTTON_HOME
444#define SNAKE2_DOWN BUTTON_OPTION
445#define SNAKE2_QUIT BUTTON_POWER
446#define SNAKE2_PLAYPAUSE BUTTON_PLAY
447#define SNAKE2_PLAYPAUSE_TEXT "PLAY"
448
431#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 449#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
432#define SNAKE2_LEFT BUTTON_HOME 450#define SNAKE2_LEFT BUTTON_HOME
433#define SNAKE2_RIGHT BUTTON_VOL_DOWN 451#define SNAKE2_RIGHT BUTTON_VOL_DOWN
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index 17971ec4db..450c881d1e 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -667,6 +667,38 @@
667#define BUTTON_SAVE BUTTON_PLAY 667#define BUTTON_SAVE BUTTON_PLAY
668#define BUTTON_SAVE_NAME "PLAY" 668#define BUTTON_SAVE_NAME "PLAY"
669 669
670#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
671#define SOKOBAN_LEFT BUTTON_PREV
672#define SOKOBAN_RIGHT BUTTON_NEXT
673#define SOKOBAN_UP BUTTON_HOME
674#define SOKOBAN_DOWN BUTTON_OPTION
675#define SOKOBAN_MENU BUTTON_POWER
676#define SOKOBAN_UNDO_PRE BUTTON_PLAY
677#define SOKOBAN_UNDO (BUTTON_PLAY | BUTTON_REL)
678#define SOKOBAN_REDO (BUTTON_POWER | BUTTON_PLAY)
679#define SOKOBAN_LEVEL_DOWN BUTTON_VOL_DOWN
680#define SOKOBAN_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_NEXT)
681#define SOKOBAN_LEVEL_UP BUTTON_VOL_UP
682#define SOKOBAN_PAUSE BUTTON_PLAY
683#define BUTTON_SAVE BUTTON_PLAY
684#define BUTTON_SAVE_NAME "PLAY"
685
686#elif CONFIG_KEYPAD == XDUOO_X20_PAD
687#define SOKOBAN_LEFT BUTTON_PREV
688#define SOKOBAN_RIGHT BUTTON_NEXT
689#define SOKOBAN_UP BUTTON_HOME
690#define SOKOBAN_DOWN BUTTON_OPTION
691#define SOKOBAN_MENU BUTTON_POWER
692#define SOKOBAN_UNDO_PRE BUTTON_PLAY
693#define SOKOBAN_UNDO (BUTTON_PLAY | BUTTON_REL)
694#define SOKOBAN_REDO (BUTTON_POWER | BUTTON_PLAY)
695#define SOKOBAN_LEVEL_DOWN BUTTON_VOL_DOWN
696#define SOKOBAN_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_NEXT)
697#define SOKOBAN_LEVEL_UP BUTTON_VOL_UP
698#define SOKOBAN_PAUSE BUTTON_PLAY
699#define BUTTON_SAVE BUTTON_PLAY
700#define BUTTON_SAVE_NAME "PLAY"
701
670#elif CONFIG_KEYPAD == IHIFI_770_PAD 702#elif CONFIG_KEYPAD == IHIFI_770_PAD
671#define SOKOBAN_LEFT BUTTON_HOME 703#define SOKOBAN_LEFT BUTTON_HOME
672#define SOKOBAN_RIGHT BUTTON_VOL_DOWN 704#define SOKOBAN_RIGHT BUTTON_VOL_DOWN
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index 1ee79bb86a..dd4c8d3447 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -706,6 +706,44 @@ CONFIG_KEYPAD == MROBE500_PAD
706# define HK_CUR2STACK "DBL PLAY" 706# define HK_CUR2STACK "DBL PLAY"
707# define HK_REM2STACK "NEXT" 707# define HK_REM2STACK "NEXT"
708 708
709#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
710# define SOL_QUIT BUTTON_POWER
711# define SOL_UP BUTTON_HOME
712# define SOL_DOWN BUTTON_OPTION
713# define SOL_LEFT BUTTON_PREV
714# define SOL_RIGHT BUTTON_NEXT
715# define SOL_MOVE_PRE BUTTON_PLAY
716# define SOL_MOVE (BUTTON_PLAY | BUTTON_REL)
717# define SOL_DRAW (BUTTON_POWER | BUTTON_REPEAT)
718# define SOL_REM2CUR BUTTON_VOL_DOWN
719# define SOL_CUR2STACK_PRE BUTTON_PLAY
720# define SOL_CUR2STACK (BUTTON_PLAY | BUTTON_REPEAT)
721# define SOL_REM2STACK BUTTON_VOL_UP
722# define HK_MOVE "PLAY"
723# define HK_DRAW "DBL HOME"
724# define HK_REM2CUR "PREV"
725# define HK_CUR2STACK "DBL PLAY"
726# define HK_REM2STACK "NEXT"
727
728#elif CONFIG_KEYPAD == XDUOO_X20_PAD
729# define SOL_QUIT BUTTON_POWER
730# define SOL_UP BUTTON_HOME
731# define SOL_DOWN BUTTON_OPTION
732# define SOL_LEFT BUTTON_PREV
733# define SOL_RIGHT BUTTON_NEXT
734# define SOL_MOVE_PRE BUTTON_PLAY
735# define SOL_MOVE (BUTTON_PLAY | BUTTON_REL)
736# define SOL_DRAW (BUTTON_POWER | BUTTON_REPEAT)
737# define SOL_REM2CUR BUTTON_VOL_DOWN
738# define SOL_CUR2STACK_PRE BUTTON_PLAY
739# define SOL_CUR2STACK (BUTTON_PLAY | BUTTON_REPEAT)
740# define SOL_REM2STACK BUTTON_VOL_UP
741# define HK_MOVE "PLAY"
742# define HK_DRAW "DBL HOME"
743# define HK_REM2CUR "PREV"
744# define HK_CUR2STACK "DBL PLAY"
745# define HK_REM2STACK "NEXT"
746
709#elif CONFIG_KEYPAD == IHIFI_770_PAD 747#elif CONFIG_KEYPAD == IHIFI_770_PAD
710# define SOL_QUIT BUTTON_POWER 748# define SOL_QUIT BUTTON_POWER
711# define SOL_UP BUTTON_PREV 749# define SOL_UP BUTTON_PREV
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 15d4039b4d..98c6d1a032 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -363,6 +363,24 @@
363#define AST_RIGHT BUTTON_NEXT 363#define AST_RIGHT BUTTON_NEXT
364#define AST_FIRE BUTTON_PLAY 364#define AST_FIRE BUTTON_PLAY
365 365
366#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
367#define AST_PAUSE BUTTON_VOL_UP
368#define AST_QUIT BUTTON_POWER
369#define AST_THRUST BUTTON_HOME
370#define AST_HYPERSPACE BUTTON_OPTION
371#define AST_LEFT BUTTON_PREV
372#define AST_RIGHT BUTTON_NEXT
373#define AST_FIRE BUTTON_PLAY
374
375#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
376#define AST_PAUSE BUTTON_VOL_UP
377#define AST_QUIT BUTTON_POWER
378#define AST_THRUST BUTTON_HOME
379#define AST_HYPERSPACE BUTTON_OPTION
380#define AST_LEFT BUTTON_PREV
381#define AST_RIGHT BUTTON_NEXT
382#define AST_FIRE BUTTON_PLAY
383
366#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 384#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
367#define AST_PAUSE BUTTON_PLAY 385#define AST_PAUSE BUTTON_PLAY
368#define AST_QUIT BUTTON_POWER 386#define AST_QUIT BUTTON_POWER
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index fdf67bec4c..43036e2808 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -639,6 +639,38 @@
639#define STAR_LEVEL_DOWN_NAME "PLAY + PREV" 639#define STAR_LEVEL_DOWN_NAME "PLAY + PREV"
640#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION" 640#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION"
641 641
642#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
643#define STAR_QUIT BUTTON_POWER
644#define STAR_LEFT BUTTON_PREV
645#define STAR_RIGHT BUTTON_NEXT
646#define STAR_UP BUTTON_HOME
647#define STAR_DOWN BUTTON_OPTION
648#define STAR_TOGGLE_CONTROL BUTTON_PLAY
649#define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_NEXT)
650#define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_PREV)
651#define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_OPTION)
652#define STAR_TOGGLE_CONTROL_NAME "PLAY"
653#define STAR_QUIT_NAME "POWER"
654#define STAR_LEVEL_UP_NAME "PLAY + NEXT"
655#define STAR_LEVEL_DOWN_NAME "PLAY + PREV"
656#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION"
657
658#elif CONFIG_KEYPAD == XDUOO_X20_PAD
659#define STAR_QUIT BUTTON_POWER
660#define STAR_LEFT BUTTON_PREV
661#define STAR_RIGHT BUTTON_NEXT
662#define STAR_UP BUTTON_HOME
663#define STAR_DOWN BUTTON_OPTION
664#define STAR_TOGGLE_CONTROL BUTTON_PLAY
665#define STAR_LEVEL_UP (BUTTON_PLAY | BUTTON_NEXT)
666#define STAR_LEVEL_DOWN (BUTTON_PLAY | BUTTON_PREV)
667#define STAR_LEVEL_REPEAT (BUTTON_PLAY | BUTTON_OPTION)
668#define STAR_TOGGLE_CONTROL_NAME "PLAY"
669#define STAR_QUIT_NAME "POWER"
670#define STAR_LEVEL_UP_NAME "PLAY + NEXT"
671#define STAR_LEVEL_DOWN_NAME "PLAY + PREV"
672#define STAR_LEVEL_REPEAT_NAME "PLAY + OPTION"
673
642#elif CONFIG_KEYPAD == IHIFI_770_PAD 674#elif CONFIG_KEYPAD == IHIFI_770_PAD
643#define STAR_QUIT BUTTON_POWER 675#define STAR_QUIT BUTTON_POWER
644#define STAR_LEFT BUTTON_HOME 676#define STAR_LEFT BUTTON_HOME
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index 5e83859d89..a806e4e830 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -321,6 +321,22 @@
321#define STOPWATCH_SCROLL_UP BUTTON_HOME 321#define STOPWATCH_SCROLL_UP BUTTON_HOME
322#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION 322#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION
323 323
324#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
325#define STOPWATCH_QUIT BUTTON_POWER
326#define STOPWATCH_START_STOP BUTTON_NEXT
327#define STOPWATCH_RESET_TIMER BUTTON_PREV
328#define STOPWATCH_LAP_TIMER BUTTON_PLAY
329#define STOPWATCH_SCROLL_UP BUTTON_HOME
330#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION
331
332#elif CONFIG_KEYPAD == XDUOO_X20_PAD
333#define STOPWATCH_QUIT BUTTON_POWER
334#define STOPWATCH_START_STOP BUTTON_NEXT
335#define STOPWATCH_RESET_TIMER BUTTON_PREV
336#define STOPWATCH_LAP_TIMER BUTTON_PLAY
337#define STOPWATCH_SCROLL_UP BUTTON_HOME
338#define STOPWATCH_SCROLL_DOWN BUTTON_OPTION
339
324#elif CONFIG_KEYPAD == IHIFI_770_PAD 340#elif CONFIG_KEYPAD == IHIFI_770_PAD
325#define STOPWATCH_QUIT BUTTON_POWER 341#define STOPWATCH_QUIT BUTTON_POWER
326#define STOPWATCH_START_STOP BUTTON_NEXT 342#define STOPWATCH_START_STOP BUTTON_NEXT
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index 62ec80dba8..2bee868de9 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -437,6 +437,34 @@
437#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL) 437#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
438#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER) 438#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER)
439 439
440#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
441#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
442#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
443#define SUDOKU_BUTTON_UP BUTTON_HOME
444#define SUDOKU_BUTTON_DOWN BUTTON_OPTION
445#define SUDOKU_BUTTON_LEFT BUTTON_PREV
446#define SUDOKU_BUTTON_RIGHT BUTTON_NEXT
447#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_VOL_DOWN
448#define SUDOKU_BUTTON_TOGGLE BUTTON_VOL_UP
449#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_PLAY
450#define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER
451#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
452#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER)
453
454#elif CONFIG_KEYPAD == XDUOO_X20_PAD
455#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
456#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
457#define SUDOKU_BUTTON_UP BUTTON_HOME
458#define SUDOKU_BUTTON_DOWN BUTTON_OPTION
459#define SUDOKU_BUTTON_LEFT BUTTON_PREV
460#define SUDOKU_BUTTON_RIGHT BUTTON_NEXT
461#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_VOL_DOWN
462#define SUDOKU_BUTTON_TOGGLE BUTTON_VOL_UP
463#define SUDOKU_BUTTON_ALTTOGGLE BUTTON_PLAY
464#define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER
465#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
466#define SUDOKU_BUTTON_POSSIBLE (BUTTON_HOME | BUTTON_POWER)
467
440#elif CONFIG_KEYPAD == IHIFI_770_PAD 468#elif CONFIG_KEYPAD == IHIFI_770_PAD
441#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER 469#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
442#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT) 470#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
diff --git a/apps/plugins/text_viewer/tv_button.h b/apps/plugins/text_viewer/tv_button.h
index da6453ff8d..6ee8f9bbf1 100644
--- a/apps/plugins/text_viewer/tv_button.h
+++ b/apps/plugins/text_viewer/tv_button.h
@@ -562,6 +562,30 @@
562#define TV_LINE_DOWN BUTTON_OPTION 562#define TV_LINE_DOWN BUTTON_OPTION
563#define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY) 563#define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY)
564 564
565#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
566#define TV_QUIT BUTTON_POWER
567#define TV_SCROLL_UP BUTTON_VOL_UP
568#define TV_SCROLL_DOWN BUTTON_VOL_DOWN
569#define TV_SCREEN_LEFT BUTTON_PREV
570#define TV_SCREEN_RIGHT BUTTON_NEXT
571#define TV_MENU BUTTON_PLAY
572#define TV_AUTOSCROLL (BUTTON_POWER | BUTTON_HOME)
573#define TV_LINE_UP BUTTON_HOME
574#define TV_LINE_DOWN BUTTON_OPTION
575#define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY)
576
577#elif CONFIG_KEYPAD == XDUOO_X20_PAD
578#define TV_QUIT BUTTON_POWER
579#define TV_SCROLL_UP BUTTON_VOL_UP
580#define TV_SCROLL_DOWN BUTTON_VOL_DOWN
581#define TV_SCREEN_LEFT BUTTON_PREV
582#define TV_SCREEN_RIGHT BUTTON_NEXT
583#define TV_MENU BUTTON_PLAY
584#define TV_AUTOSCROLL (BUTTON_POWER | BUTTON_HOME)
585#define TV_LINE_UP BUTTON_HOME
586#define TV_LINE_DOWN BUTTON_OPTION
587#define TV_BOOKMARK (BUTTON_OPTION | BUTTON_PLAY)
588
565/* Xuelin 770/770c keys */ 589/* Xuelin 770/770c keys */
566#elif CONFIG_KEYPAD == IHIFI_770_PAD 590#elif CONFIG_KEYPAD == IHIFI_770_PAD
567#define TV_QUIT BUTTON_POWER 591#define TV_QUIT BUTTON_POWER
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index eaa92d4b48..33ad38d72c 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -432,6 +432,28 @@
432#define LABEL_MENU "PLAY" 432#define LABEL_MENU "PLAY"
433#define LABEL_VOLUME "VOL UP/DN" 433#define LABEL_VOLUME "VOL UP/DN"
434 434
435#elif (CONFIG_KEYPAD == XDUOO_X3II_PAD)
436#define VUMETER_QUIT BUTTON_POWER
437#define VUMETER_HELP BUTTON_HOME
438#define VUMETER_MENU BUTTON_PLAY
439#define VUMETER_UP BUTTON_VOL_UP
440#define VUMETER_DOWN BUTTON_VOL_DOWN
441#define LABEL_HELP "HOME"
442#define LABEL_QUIT "POWER"
443#define LABEL_MENU "PLAY"
444#define LABEL_VOLUME "VOL UP/DN"
445
446#elif (CONFIG_KEYPAD == XDUOO_X20_PAD)
447#define VUMETER_QUIT BUTTON_POWER
448#define VUMETER_HELP BUTTON_HOME
449#define VUMETER_MENU BUTTON_PLAY
450#define VUMETER_UP BUTTON_VOL_UP
451#define VUMETER_DOWN BUTTON_VOL_DOWN
452#define LABEL_HELP "HOME"
453#define LABEL_QUIT "POWER"
454#define LABEL_MENU "PLAY"
455#define LABEL_VOLUME "VOL UP/DN"
456
435#elif (CONFIG_KEYPAD == IHIFI_770_PAD) 457#elif (CONFIG_KEYPAD == IHIFI_770_PAD)
436#define VUMETER_QUIT BUTTON_POWER 458#define VUMETER_QUIT BUTTON_POWER
437#define VUMETER_HELP BUTTON_HOME 459#define VUMETER_HELP BUTTON_HOME
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 9adfc97b81..d342511419 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -402,6 +402,24 @@ CONFIG_KEYPAD == MROBE500_PAD
402#define BTN_QUIT BUTTON_POWER 402#define BTN_QUIT BUTTON_POWER
403#define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER) 403#define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER)
404 404
405#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
406#define BTN_DIR_UP BUTTON_HOME
407#define BTN_DIR_DOWN BUTTON_OPTION
408#define BTN_DIR_LEFT BUTTON_PREV
409#define BTN_DIR_RIGHT BUTTON_NEXT
410#define BTN_STARTPAUSE BUTTON_PLAY
411#define BTN_QUIT BUTTON_POWER
412#define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER)
413
414#elif CONFIG_KEYPAD == XDUOO_X20_PAD
415#define BTN_DIR_UP BUTTON_HOME
416#define BTN_DIR_DOWN BUTTON_OPTION
417#define BTN_DIR_LEFT BUTTON_PREV
418#define BTN_DIR_RIGHT BUTTON_NEXT
419#define BTN_STARTPAUSE BUTTON_PLAY
420#define BTN_QUIT BUTTON_POWER
421#define BTN_STOPRESET (BUTTON_HOME | BUTTON_POWER)
422
405#elif CONFIG_KEYPAD == IHIFI_770_PAD 423#elif CONFIG_KEYPAD == IHIFI_770_PAD
406#define BTN_DIR_UP BUTTON_PREV 424#define BTN_DIR_UP BUTTON_PREV
407#define BTN_DIR_DOWN BUTTON_NEXT 425#define BTN_DIR_DOWN BUTTON_NEXT
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index 8acdf85015..9643641569 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -351,6 +351,24 @@ CONFIG_KEYPAD == MROBE500_PAD
351#define DOWN BUTTON_OPTION 351#define DOWN BUTTON_OPTION
352#define PAUSE BUTTON_PLAY 352#define PAUSE BUTTON_PLAY
353 353
354#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
355
356#define QUIT BUTTON_POWER
357#define LEFT BUTTON_PREV
358#define RIGHT BUTTON_NEXT
359#define UP BUTTON_HOME
360#define DOWN BUTTON_OPTION
361#define PAUSE BUTTON_PLAY
362
363#elif CONFIG_KEYPAD == XDUOO_X20_PAD
364
365#define QUIT BUTTON_POWER
366#define LEFT BUTTON_PREV
367#define RIGHT BUTTON_NEXT
368#define UP BUTTON_HOME
369#define DOWN BUTTON_OPTION
370#define PAUSE BUTTON_PLAY
371
354#elif CONFIG_KEYPAD == IHIFI_770_PAD 372#elif CONFIG_KEYPAD == IHIFI_770_PAD
355 373
356#define QUIT BUTTON_POWER 374#define QUIT BUTTON_POWER
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index ce527c561e..53dd9e8d88 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -290,6 +290,22 @@
290#define ZX_UP BUTTON_HOME 290#define ZX_UP BUTTON_HOME
291#define ZX_DOWN BUTTON_OPTION 291#define ZX_DOWN BUTTON_OPTION
292 292
293#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
294#define ZX_SELECT BUTTON_PLAY
295#define ZX_MENU BUTTON_POWER
296#define ZX_LEFT BUTTON_PREV
297#define ZX_RIGHT BUTTON_NEXT
298#define ZX_UP BUTTON_HOME
299#define ZX_DOWN BUTTON_OPTION
300
301#elif CONFIG_KEYPAD == XDUOO_X20_PAD
302#define ZX_SELECT BUTTON_PLAY
303#define ZX_MENU BUTTON_POWER
304#define ZX_LEFT BUTTON_PREV
305#define ZX_RIGHT BUTTON_NEXT
306#define ZX_UP BUTTON_HOME
307#define ZX_DOWN BUTTON_OPTION
308
293#elif CONFIG_KEYPAD == IHIFI_770_PAD 309#elif CONFIG_KEYPAD == IHIFI_770_PAD
294#define ZX_SELECT BUTTON_PLAY 310#define ZX_SELECT BUTTON_PLAY
295#define ZX_MENU BUTTON_POWER 311#define ZX_MENU BUTTON_POWER
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c
index b3f1ca70e8..4a26accc8a 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -287,6 +287,24 @@
287#define KBD_UP BUTTON_HOME 287#define KBD_UP BUTTON_HOME
288#define KBD_DOWN BUTTON_OPTION 288#define KBD_DOWN BUTTON_OPTION
289 289
290#elif CONFIG_KEYPAD == XDUOO_X3II_PAD
291
292#define KBD_SELECT BUTTON_PLAY
293#define KBD_ABORT BUTTON_POWER
294#define KBD_LEFT BUTTON_PREV
295#define KBD_RIGHT BUTTON_NEXT
296#define KBD_UP BUTTON_HOME
297#define KBD_DOWN BUTTON_OPTION
298
299#elif CONFIG_KEYPAD == XDUOO_X20_PAD
300
301#define KBD_SELECT BUTTON_PLAY
302#define KBD_ABORT BUTTON_POWER
303#define KBD_LEFT BUTTON_PREV
304#define KBD_RIGHT BUTTON_NEXT
305#define KBD_UP BUTTON_HOME
306#define KBD_DOWN BUTTON_OPTION
307
290#elif CONFIG_KEYPAD == IHIFI_770_PAD 308#elif CONFIG_KEYPAD == IHIFI_770_PAD
291 309
292#define KBD_SELECT BUTTON_PLAY 310#define KBD_SELECT BUTTON_PLAY