summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2008-12-12 19:50:49 +0000
committerDominik Wenger <domonoky@googlemail.com>2008-12-12 19:50:49 +0000
commit90bcf9be5ec65894fa75bfc546c6d2a8365ec899 (patch)
treeaf8b2db20169a29de52056354e13034ea3d8839c
parent790f5ae1e0f90bcbb85950a60b8597e4e40ed0ba (diff)
downloadrockbox-90bcf9be5ec65894fa75bfc546c6d2a8365ec899.tar.gz
rockbox-90bcf9be5ec65894fa75bfc546c6d2a8365ec899.zip
m200v4: rename Keys, so they match better other targets with similar key-layout. Enable plugins, add keymaps for plugins. More keymap improvements needed.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19405 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/keymaps/keymap-m200.c113
-rw-r--r--apps/plugins/SOURCES2
-rw-r--r--apps/plugins/battery_bench.c3
-rw-r--r--apps/plugins/blackjack.c15
-rw-r--r--apps/plugins/bounce.c4
-rw-r--r--apps/plugins/brickmania.c4
-rw-r--r--apps/plugins/calculator.c11
-rw-r--r--apps/plugins/calendar.c4
-rw-r--r--apps/plugins/chessbox/chessbox_pgn.h15
-rw-r--r--apps/plugins/chessclock.c3
-rw-r--r--apps/plugins/chip8.c4
-rw-r--r--apps/plugins/chopper.c4
-rw-r--r--apps/plugins/cube.c4
-rw-r--r--apps/plugins/dict.c3
-rw-r--r--apps/plugins/flipit.c12
-rw-r--r--apps/plugins/jewels.c8
-rw-r--r--apps/plugins/jpeg/jpeg.h15
-rw-r--r--apps/plugins/lib/pluginlib_actions.c13
-rw-r--r--apps/plugins/logo.c4
-rw-r--r--apps/plugins/mandelbrot.c12
-rw-r--r--apps/plugins/midi/midiplay.c4
-rw-r--r--apps/plugins/minesweeper.c4
-rw-r--r--apps/plugins/mosaique.c4
-rw-r--r--apps/plugins/mp3_encoder.c4
-rw-r--r--apps/plugins/mpegplayer/mpeg_settings.c4
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c4
-rw-r--r--apps/plugins/oscilloscope.c11
-rw-r--r--apps/plugins/pegbox.c18
-rw-r--r--apps/plugins/plasma.c4
-rw-r--r--apps/plugins/pong.c4
-rw-r--r--apps/plugins/reversi/reversi-gui.h4
-rw-r--r--apps/plugins/rockblox.c12
-rw-r--r--apps/plugins/rockblox1d.c3
-rw-r--r--apps/plugins/sliding_puzzle.c11
-rw-r--r--apps/plugins/snake.c3
-rw-r--r--apps/plugins/snake2.c3
-rw-r--r--apps/plugins/snow.c4
-rw-r--r--apps/plugins/sokoban.c16
-rw-r--r--apps/plugins/solitaire.c19
-rw-r--r--apps/plugins/spacerocks.c13
-rw-r--r--apps/plugins/star.c4
-rw-r--r--apps/plugins/starfield.c3
-rw-r--r--apps/plugins/stats.c4
-rw-r--r--apps/plugins/stopwatch.c6
-rw-r--r--apps/plugins/sudoku/sudoku.h14
-rw-r--r--apps/plugins/viewer.c12
-rw-r--r--apps/plugins/vu_meter.c13
-rw-r--r--apps/plugins/wormlet.c12
-rw-r--r--apps/plugins/xobox.c8
-rw-r--r--apps/plugins/zxbox/keymaps.h4
-rw-r--r--apps/plugins/zxbox/zxbox_keyb.c1
-rw-r--r--firmware/target/arm/as3525/sansa-m200v4/button-m200v4.c10
-rw-r--r--firmware/target/arm/as3525/sansa-m200v4/button-target.h16
-rwxr-xr-xtools/configure2
54 files changed, 408 insertions, 103 deletions
diff --git a/apps/keymaps/keymap-m200.c b/apps/keymaps/keymap-m200.c
index 20c2fb931f..86144c0b0c 100644
--- a/apps/keymaps/keymap-m200.c
+++ b/apps/keymaps/keymap-m200.c
@@ -34,18 +34,19 @@
34 * Insert LAST_ITEM_IN_LIST at the end of each mapping 34 * Insert LAST_ITEM_IN_LIST at the end of each mapping
35 */ 35 */
36static const struct button_mapping button_context_standard[] = { 36static const struct button_mapping button_context_standard[] = {
37 { ACTION_STD_PREV, BUTTON_PLAYPAUSE, BUTTON_NONE }, 37 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
38 { ACTION_STD_PREVREPEAT, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, 38 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
39 39
40 { ACTION_STD_NEXT, BUTTON_REPEATAB, BUTTON_NONE }, 40 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
41 { ACTION_STD_NEXTREPEAT, BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_NONE }, 41 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
42 42
43 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 43 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
44 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, 44 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
45 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, 45 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
46 46
47 { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 47 { ACTION_STD_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
48 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, 48 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
49// { ACTION_STD_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE },
49// { ACTION_STD_QUICKSCREEN, BUTTON_REC|BUTTON_SELECT, BUTTON_NONE }, 50// { ACTION_STD_QUICKSCREEN, BUTTON_REC|BUTTON_SELECT, BUTTON_NONE },
50 51
51 LAST_ITEM_IN_LIST 52 LAST_ITEM_IN_LIST
@@ -53,8 +54,8 @@ static const struct button_mapping button_context_standard[] = {
53 54
54 55
55static const struct button_mapping button_context_wps[] = { 56static const struct button_mapping button_context_wps[] = {
56 { ACTION_WPS_PLAY, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE }, 57 { ACTION_WPS_PLAY, BUTTON_UP|BUTTON_REL, BUTTON_UP },
57 { ACTION_WPS_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_PLAYPAUSE }, 58 { ACTION_WPS_STOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
58 59
59 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 60 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
60 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 61 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
@@ -64,35 +65,36 @@ static const struct button_mapping button_context_wps[] = {
64 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 65 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
65 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 66 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
66 67
67 { ACTION_WPS_ABSETB_NEXTDIR,BUTTON_MENU|BUTTON_RIGHT, BUTTON_MENU }, 68 { ACTION_WPS_ABSETB_NEXTDIR,BUTTON_POWER|BUTTON_RIGHT, BUTTON_POWER },
68 { ACTION_WPS_ABSETA_PREVDIR,BUTTON_MENU|BUTTON_LEFT, BUTTON_MENU }, 69 { ACTION_WPS_ABSETA_PREVDIR,BUTTON_POWER|BUTTON_LEFT, BUTTON_POWER },
69 { ACTION_WPS_ABRESET, BUTTON_MENU|BUTTON_PLAYPAUSE, BUTTON_MENU }, 70 { ACTION_WPS_ABRESET, BUTTON_POWER|BUTTON_UP, BUTTON_POWER },
70 71
71 { ACTION_WPS_VOLUP, BUTTON_VOLUP, BUTTON_NONE }, 72 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
72 { ACTION_WPS_VOLUP, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE }, 73 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
73 74
74 { ACTION_WPS_VOLDOWN, BUTTON_VOLDOWN, BUTTON_NONE }, 75 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
75 { ACTION_WPS_VOLDOWN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE }, 76 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
76 77
77 { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 78 { ACTION_WPS_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
78 { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 79 { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
79 { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_PLAYPAUSE, BUTTON_SELECT }, 80 { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT },
80 { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_REPEATAB, BUTTON_SELECT }, 81 { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_SELECT },
81 { ACTION_WPS_CONTEXT, BUTTON_REPEATAB|BUTTON_REL, BUTTON_REPEATAB }, 82 { ACTION_WPS_CONTEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
82 { ACTION_WPS_QUICKSCREEN, BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_REPEATAB }, 83 { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
84// { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE },
83 85
84 LAST_ITEM_IN_LIST 86 LAST_ITEM_IN_LIST
85}; /* button_context_wps */ 87}; /* button_context_wps */
86 88
87static const struct button_mapping button_context_settings[] = { 89static const struct button_mapping button_context_settings[] = {
88 { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE }, 90 { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
89 { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, 91 { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE },
90 92
91 { ACTION_SETTINGS_INC, BUTTON_PLAYPAUSE, BUTTON_NONE }, 93 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
92 { ACTION_SETTINGS_INCREPEAT,BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, 94 { ACTION_SETTINGS_INCREPEAT,BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
93 95
94 { ACTION_SETTINGS_DEC, BUTTON_REPEATAB, BUTTON_NONE }, 96 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
95 { ACTION_SETTINGS_DECREPEAT,BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_NONE }, 97 { ACTION_SETTINGS_DECREPEAT,BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
96 98
97 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, 99 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
98 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 100 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
@@ -104,6 +106,9 @@ static const struct button_mapping button_context_settings[] = {
104}; /* button_context_settings */ 106}; /* button_context_settings */
105 107
106static const struct button_mapping button_context_list[] = { 108static const struct button_mapping button_context_list[] = {
109// { ACTION_LISTTREE_PGUP, BUTTON_REC|BUTTON_UP, BUTTON_REC },
110// { ACTION_LISTTREE_PGDOWN, BUTTON_REC|BUTTON_DOWN, BUTTON_REC },
111
107#ifdef HAVE_VOLUME_IN_LIST 112#ifdef HAVE_VOLUME_IN_LIST
108 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 113 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
109 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, 114 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
@@ -138,7 +143,7 @@ static const struct button_mapping button_context_listtree_scroll_without_combo[
138}; /* button_context_listtree_scroll_without_combo */ 143}; /* button_context_listtree_scroll_without_combo */
139 144
140static const struct button_mapping button_context_listtree_scroll_with_combo[] = { 145static const struct button_mapping button_context_listtree_scroll_with_combo[] = {
141 // { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 146 { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
142 147
143// { ACTION_TREE_PGLEFT, BUTTON_REC|BUTTON_LEFT, BUTTON_REC }, 148// { ACTION_TREE_PGLEFT, BUTTON_REC|BUTTON_LEFT, BUTTON_REC },
144// { ACTION_TREE_PGLEFT, BUTTON_REC|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 149// { ACTION_TREE_PGLEFT, BUTTON_REC|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
@@ -157,13 +162,13 @@ static const struct button_mapping button_context_yesno[] = {
157 162
158static const struct button_mapping button_context_quickscreen[] = { 163static const struct button_mapping button_context_quickscreen[] = {
159 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 164 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
160 { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_NONE }, 165 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE },
161 166
162 { ACTION_QS_DOWNINV, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_NONE }, 167 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
163 { ACTION_QS_DOWNINV, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, 168 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
164 169
165 { ACTION_QS_DOWN, BUTTON_REPEATAB|BUTTON_REL, BUTTON_NONE }, 170 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
166 { ACTION_QS_DOWN, BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_NONE }, 171 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
167 172
168 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, 173 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
169 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 174 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
@@ -181,17 +186,17 @@ static const struct button_mapping button_context_settings_right_is_inc[] = {
181 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE }, 186 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
182 { ACTION_SETTINGS_DECREPEAT,BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 187 { ACTION_SETTINGS_DECREPEAT,BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
183 188
184 { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE }, 189 { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
185 190
186 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), 191 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
187}; /* button_context_settings_right_is_inc */ 192}; /* button_context_settings_right_is_inc */
188 193
189static const struct button_mapping button_context_pitchscreen[] = { 194static const struct button_mapping button_context_pitchscreen[] = {
190 { ACTION_PS_INC_SMALL, BUTTON_PLAYPAUSE, BUTTON_NONE }, 195 { ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
191 { ACTION_PS_INC_BIG, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, 196 { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
192 197
193 { ACTION_PS_DEC_SMALL, BUTTON_REPEATAB, BUTTON_NONE }, 198 { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
194 { ACTION_PS_DEC_BIG, BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_NONE }, 199 { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
195 200
196 { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE }, 201 { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
197 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, 202 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
@@ -200,7 +205,7 @@ static const struct button_mapping button_context_pitchscreen[] = {
200 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, 205 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
201 206
202 { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE }, 207 { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE },
203 { ACTION_PS_EXIT, BUTTON_MENU, BUTTON_NONE }, 208 { ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE },
204 209
205 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), 210 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
206}; /* button_context_pitchscreen */ 211}; /* button_context_pitchscreen */
@@ -208,10 +213,10 @@ static const struct button_mapping button_context_pitchscreen[] = {
208/** Recording Screen **/ 213/** Recording Screen **/
209#ifdef HAVE_RECORDING 214#ifdef HAVE_RECORDING
210static const struct button_mapping button_context_recscreen[] = { 215static const struct button_mapping button_context_recscreen[] = {
211 { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 216 { ACTION_STD_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
212 { ACTION_REC_PAUSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 217 { ACTION_REC_PAUSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
213 { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE }, 218 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE },
214 { ACTION_REC_NEWFILE, BUTTON_REC|BUTTON_REL, BUTTON_REC }, 219// { ACTION_REC_NEWFILE, BUTTON_REC|BUTTON_REL, BUTTON_REC },
215 220
216 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE }, 221 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
217 { ACTION_SETTINGS_INCREPEAT,BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 222 { ACTION_SETTINGS_INCREPEAT,BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
@@ -225,13 +230,13 @@ static const struct button_mapping button_context_recscreen[] = {
225/** FM Radio Screen **/ 230/** FM Radio Screen **/
226#if CONFIG_TUNER 231#if CONFIG_TUNER
227static const struct button_mapping button_context_radio[] = { 232static const struct button_mapping button_context_radio[] = {
228 { ACTION_NONE, BUTTON_PLAYPAUSE, BUTTON_NONE }, 233 { ACTION_NONE, BUTTON_UP, BUTTON_NONE },
229 { ACTION_FM_MENU, BUTTON_REPEATAB, BUTTON_NONE }, 234 { ACTION_FM_MENU, BUTTON_DOWN, BUTTON_NONE },
230 { ACTION_FM_PRESET, BUTTON_SELECT, BUTTON_NONE }, 235 { ACTION_FM_PRESET, BUTTON_SELECT, BUTTON_NONE },
231 { ACTION_FM_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_PLAYPAUSE }, 236 { ACTION_FM_STOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
232 { ACTION_FM_MODE, BUTTON_REC, BUTTON_NONE }, 237// { ACTION_FM_MODE, BUTTON_REC, BUTTON_NONE },
233 { ACTION_FM_EXIT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 238 { ACTION_FM_EXIT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
234 { ACTION_FM_PLAY, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE }, 239 { ACTION_FM_PLAY, BUTTON_UP|BUTTON_REL, BUTTON_UP },
235 { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE }, 240 { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE },
236 { ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 241 { ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
237 { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE }, 242 { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
@@ -247,15 +252,15 @@ static const struct button_mapping button_context_keyboard[] = {
247 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 252 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
248 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 253 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
249 254
250// { ACTION_KBD_CURSOR_LEFT, BUTTON_REC|BUTTON_LEFT, BUTTON_NONE }, 255 // { ACTION_KBD_CURSOR_LEFT, BUTTON_REC|BUTTON_LEFT, BUTTON_NONE },
251// { ACTION_KBD_CURSOR_LEFT, BUTTON_REC|BUTTON_LEFT|BUTTON_REPEAT,BUTTON_NONE }, 256// { ACTION_KBD_CURSOR_LEFT, BUTTON_REC|BUTTON_LEFT|BUTTON_REPEAT,BUTTON_NONE },
252// { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT, BUTTON_NONE }, 257// { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT, BUTTON_NONE },
253// { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT|BUTTON_REPEAT,BUTTON_NONE }, 258// { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT|BUTTON_REPEAT,BUTTON_NONE },
254 259
255 { ACTION_KBD_UP, BUTTON_PLAYPAUSE, BUTTON_NONE }, 260 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
256 { ACTION_KBD_UP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, 261 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
257 { ACTION_KBD_DOWN, BUTTON_REPEATAB, BUTTON_NONE }, 262 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
258 { ACTION_KBD_DOWN, BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_NONE }, 263 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
259 264
260// { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_VOLDOWN, BUTTON_NONE }, 265// { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_VOLDOWN, BUTTON_NONE },
261// { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_VOLDOWN|BUTTON_REPEAT,BUTTON_NONE }, 266// { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_VOLDOWN|BUTTON_REPEAT,BUTTON_NONE },
@@ -263,8 +268,9 @@ static const struct button_mapping button_context_keyboard[] = {
263// { ACTION_KBD_PAGE_FLIP, BUTTON_REC|BUTTON_SELECT, BUTTON_REC }, 268// { ACTION_KBD_PAGE_FLIP, BUTTON_REC|BUTTON_SELECT, BUTTON_REC },
264 269
265 { ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE }, 270 { ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
266 { ACTION_KBD_DONE, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, 271 { ACTION_KBD_DONE, BUTTON_VOL_UP, BUTTON_NONE },
267 { ACTION_KBD_ABORT, BUTTON_MENU, BUTTON_NONE }, 272 { ACTION_KBD_DONE, BUTTON_VOL_DOWN, BUTTON_NONE },
273 { ACTION_KBD_ABORT, BUTTON_POWER, BUTTON_NONE },
268 274
269 LAST_ITEM_IN_LIST 275 LAST_ITEM_IN_LIST
270}; /* button_context_keyboard */ 276}; /* button_context_keyboard */
@@ -303,6 +309,7 @@ const struct button_mapping* get_context_mapping(int context)
303 case CONTEXT_CUSTOM|CONTEXT_SETTINGS: 309 case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
304 case CONTEXT_SETTINGS_COLOURCHOOSER: 310 case CONTEXT_SETTINGS_COLOURCHOOSER:
305 case CONTEXT_SETTINGS_EQ: 311 case CONTEXT_SETTINGS_EQ:
312 case CONTEXT_SETTINGS_RECTRIGGER:
306 return button_context_settings_right_is_inc; 313 return button_context_settings_right_is_inc;
307 314
308 case CONTEXT_YESNOSCREEN: 315 case CONTEXT_YESNOSCREEN:
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES
index a4ddbacfd0..5577d632ea 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -80,7 +80,7 @@ solitaire.c
80sokoban.c 80sokoban.c
81star.c 81star.c
82starfield.c 82starfield.c
83#if CONFIG_LCD == LCD_SSD1815 83#if (CONFIG_LCD == LCD_SSD1815) && (CONFIG_CODEC != SWCODEC)
84video.c 84video.c
85#endif 85#endif
86vu_meter.c 86vu_meter.c
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c
index 0c30ebabc3..7c67cca937 100644
--- a/apps/plugins/battery_bench.c
+++ b/apps/plugins/battery_bench.c
@@ -99,7 +99,8 @@ PLUGIN_HEADER
99 99
100#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 100#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
101(CONFIG_KEYPAD == SANSA_C200_PAD) || \ 101(CONFIG_KEYPAD == SANSA_C200_PAD) || \
102(CONFIG_KEYPAD == SANSA_CLIP_PAD) 102(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
103(CONFIG_KEYPAD == SANSA_M200_PAD)
103#define BATTERY_ON BUTTON_SELECT 104#define BATTERY_ON BUTTON_SELECT
104#define BATTERY_OFF BUTTON_POWER 105#define BATTERY_OFF BUTTON_POWER
105#define BATTERY_ON_TXT "SELECT - start" 106#define BATTERY_ON_TXT "SELECT - start"
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c
index bf5a9b0b27..237bd31abd 100644
--- a/apps/plugins/blackjack.c
+++ b/apps/plugins/blackjack.c
@@ -205,6 +205,21 @@ PLUGIN_HEADER
205#define BJACK_RIGHT BUTTON_RIGHT 205#define BJACK_RIGHT BUTTON_RIGHT
206#define BJACK_LEFT BUTTON_LEFT 206#define BJACK_LEFT BUTTON_LEFT
207 207
208#elif CONFIG_KEYPAD == SANSA_M200_PAD
209#define BJACK_START (BUTTON_SELECT | BUTTON_REL)
210#define BJACK_QUIT BUTTON_POWER
211#define BJACK_MAX BUTTON_VOL_UP
212#define BJACK_MIN BUTTON_VOL_DOWN
213#define BJACK_HIT (BUTTON_SELECT | BUTTON_REL)
214#define BJACK_STAY BUTTON_RIGHT
215#define BJACK_DOUBLEDOWN BUTTON_LEFT
216#define BJACK_SCORES (BUTTON_SELECT | BUTTON_UP)
217#define BJACK_RESUME BUTTON_DOWN
218#define BJACK_UP BUTTON_UP
219#define BJACK_DOWN BUTTON_DOWN
220#define BJACK_RIGHT BUTTON_RIGHT
221#define BJACK_LEFT BUTTON_LEFT
222
208#elif CONFIG_KEYPAD == ELIO_TPJ1022_PAD 223#elif CONFIG_KEYPAD == ELIO_TPJ1022_PAD
209#define BJACK_START BUTTON_MAIN 224#define BJACK_START BUTTON_MAIN
210#define BJACK_QUIT BUTTON_POWER 225#define BJACK_QUIT BUTTON_POWER
diff --git a/apps/plugins/bounce.c b/apps/plugins/bounce.c
index 2164636b7d..54b6714990 100644
--- a/apps/plugins/bounce.c
+++ b/apps/plugins/bounce.c
@@ -100,7 +100,9 @@ PLUGIN_HEADER
100#define BOUNCE_QUIT BUTTON_POWER 100#define BOUNCE_QUIT BUTTON_POWER
101#define BOUNCE_MODE BUTTON_SELECT 101#define BOUNCE_MODE BUTTON_SELECT
102 102
103#elif CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD 103#elif CONFIG_KEYPAD == SANSA_C200_PAD || \
104CONFIG_KEYPAD == SANSA_CLIP_PAD || \
105CONFIG_KEYPAD == SANSA_M200_PAD
104#define BOUNCE_LEFT BUTTON_LEFT 106#define BOUNCE_LEFT BUTTON_LEFT
105#define BOUNCE_RIGHT BUTTON_RIGHT 107#define BOUNCE_RIGHT BUTTON_RIGHT
106#define BOUNCE_UP BUTTON_UP 108#define BOUNCE_UP BUTTON_UP
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c
index 1a9db8acbb..5a198d47eb 100644
--- a/apps/plugins/brickmania.c
+++ b/apps/plugins/brickmania.c
@@ -116,7 +116,9 @@ PLUGIN_HEADER
116#define SCROLL_BACK(x) ((x) & BUTTON_SCROLL_BACK) 116#define SCROLL_BACK(x) ((x) & BUTTON_SCROLL_BACK)
117 117
118 118
119#elif CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD 119#elif CONFIG_KEYPAD == SANSA_C200_PAD || \
120CONFIG_KEYPAD == SANSA_CLIP_PAD || \
121CONFIG_KEYPAD == SANSA_M200_PAD
120 122
121#define QUIT BUTTON_POWER 123#define QUIT BUTTON_POWER
122#define LEFT BUTTON_LEFT 124#define LEFT BUTTON_LEFT
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c
index c7722e3777..214932e0a9 100644
--- a/apps/plugins/calculator.c
+++ b/apps/plugins/calculator.c
@@ -220,6 +220,17 @@ PLUGIN_HEADER
220#define CALCULATOR_CALC (BUTTON_SELECT|BUTTON_REPEAT) 220#define CALCULATOR_CALC (BUTTON_SELECT|BUTTON_REPEAT)
221#define CALCULATOR_CLEAR BUTTON_HOME 221#define CALCULATOR_CLEAR BUTTON_HOME
222 222
223#elif (CONFIG_KEYPAD == SANSA_M200_PAD)
224#define CALCULATOR_LEFT BUTTON_LEFT
225#define CALCULATOR_RIGHT BUTTON_RIGHT
226#define CALCULATOR_UP BUTTON_UP
227#define CALCULATOR_DOWN BUTTON_DOWN
228#define CALCULATOR_QUIT BUTTON_POWER
229#define CALCULATOR_INPUT_CALC_PRE BUTTON_SELECT
230#define CALCULATOR_INPUT (BUTTON_SELECT|BUTTON_REL)
231#define CALCULATOR_CALC (BUTTON_SELECT|BUTTON_REPEAT)
232#define CALCULATOR_CLEAR (BUTTON_SELECT|BUTTON_UP)
233
223#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 234#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
224 235
225#define CALCULATOR_LEFT BUTTON_LEFT 236#define CALCULATOR_LEFT BUTTON_LEFT
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c
index 794e9f86da..17b98c7f56 100644
--- a/apps/plugins/calendar.c
+++ b/apps/plugins/calendar.c
@@ -100,7 +100,9 @@ PLUGIN_HEADER
100#define CALENDAR_NEXT_MONTH BUTTON_DOWN 100#define CALENDAR_NEXT_MONTH BUTTON_DOWN
101#define CALENDAR_PREV_MONTH BUTTON_UP 101#define CALENDAR_PREV_MONTH BUTTON_UP
102 102
103#elif CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD 103#elif CONFIG_KEYPAD == SANSA_C200_PAD || \
104CONFIG_KEYPAD == SANSA_CLIP_PAD || \
105CONFIG_KEYPAD == SANSA_M200_PAD
104#define CALENDAR_QUIT BUTTON_POWER 106#define CALENDAR_QUIT BUTTON_POWER
105#define CALENDAR_SELECT BUTTON_SELECT 107#define CALENDAR_SELECT BUTTON_SELECT
106#define CALENDAR_NEXT_WEEK BUTTON_DOWN 108#define CALENDAR_NEXT_WEEK BUTTON_DOWN
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h
index c454058fe2..970bcc466a 100644
--- a/apps/plugins/chessbox/chessbox_pgn.h
+++ b/apps/plugins/chessbox/chessbox_pgn.h
@@ -216,6 +216,21 @@
216#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT) 216#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
217#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT) 217#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
218 218
219#elif CONFIG_KEYPAD == SANSA_M200_PAD
220#define CB_SELECT (BUTTON_SELECT | BUTTON_REPEAT)
221#define CB_UP BUTTON_UP
222#define CB_DOWN BUTTON_DOWN
223#define CB_LEFT BUTTON_LEFT
224#define CB_RIGHT BUTTON_RIGHT
225#define CB_PLAY BUTTON_VOL_UP
226#define CB_LEVEL (BUTTON_SELECT | BUTTON_UP)
227#define CB_MENU BUTTON_POWER
228
229#define CB_SCROLL_UP (BUTTON_UP|BUTTON_REPEAT)
230#define CB_SCROLL_DOWN (BUTTON_DOWN|BUTTON_REPEAT)
231#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
232#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
233
219#elif CONFIG_KEYPAD == SANSA_C200_PAD 234#elif CONFIG_KEYPAD == SANSA_C200_PAD
220#define CB_SELECT BUTTON_SELECT 235#define CB_SELECT BUTTON_SELECT
221#define CB_UP BUTTON_UP 236#define CB_UP BUTTON_UP
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c
index a839954d8a..725a5cd037 100644
--- a/apps/plugins/chessclock.c
+++ b/apps/plugins/chessclock.c
@@ -123,7 +123,8 @@ PLUGIN_HEADER
123 123
124#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 124#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
125(CONFIG_KEYPAD == SANSA_C200_PAD) || \ 125(CONFIG_KEYPAD == SANSA_C200_PAD) || \
126(CONFIG_KEYPAD == SANSA_CLIP_PAD) 126(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
127(CONFIG_KEYPAD == SANSA_M200_PAD)
127#define CHC_QUIT BUTTON_POWER 128#define CHC_QUIT BUTTON_POWER
128#define CHC_STARTSTOP BUTTON_SELECT 129#define CHC_STARTSTOP BUTTON_SELECT
129#define CHC_RESET BUTTON_DOWN 130#define CHC_RESET BUTTON_DOWN
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c
index 83bd7262c8..29262e481a 100644
--- a/apps/plugins/chip8.c
+++ b/apps/plugins/chip8.c
@@ -1030,7 +1030,9 @@ STATIC void chip8 (void)
1030#define CHIP8_KEY6 BUTTON_RIGHT 1030#define CHIP8_KEY6 BUTTON_RIGHT
1031#define CHIP8_KEY8 BUTTON_SCROLL_FWD 1031#define CHIP8_KEY8 BUTTON_SCROLL_FWD
1032 1032
1033#elif CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD 1033#elif CONFIG_KEYPAD == SANSA_C200_PAD || \
1034CONFIG_KEYPAD == SANSA_CLIP_PAD || \
1035CONFIG_KEYPAD == SANSA_M200_PAD
1034#define CHIP8_OFF BUTTON_POWER 1036#define CHIP8_OFF BUTTON_POWER
1035#define CHIP8_KEY2 BUTTON_VOL_UP 1037#define CHIP8_KEY2 BUTTON_VOL_UP
1036#define CHIP8_KEY4 BUTTON_LEFT 1038#define CHIP8_KEY4 BUTTON_LEFT
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c
index b827c7125a..f30aed4aa5 100644
--- a/apps/plugins/chopper.c
+++ b/apps/plugins/chopper.c
@@ -67,7 +67,9 @@ Still To do:
67#define ACTIONTEXT "RIGHT" 67#define ACTIONTEXT "RIGHT"
68 68
69#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 69#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
70(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 70(CONFIG_KEYPAD == SANSA_C200_PAD) || \
71(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
72(CONFIG_KEYPAD == SANSA_M200_PAD)
71#define QUIT BUTTON_POWER 73#define QUIT BUTTON_POWER
72#define ACTION BUTTON_SELECT 74#define ACTION BUTTON_SELECT
73#define ACTIONTEXT "SELECT" 75#define ACTIONTEXT "SELECT"
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c
index 3e27cbb053..7c651fca8c 100644
--- a/apps/plugins/cube.c
+++ b/apps/plugins/cube.c
@@ -140,7 +140,9 @@ PLUGIN_HEADER
140#define CUBE_PAUSE BUTTON_UP 140#define CUBE_PAUSE BUTTON_UP
141#define CUBE_HIGHSPEED BUTTON_SELECT 141#define CUBE_HIGHSPEED BUTTON_SELECT
142 142
143#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 143#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || \
144(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
145(CONFIG_KEYPAD == SANSA_M200_PAD)
144#define CUBE_QUIT BUTTON_POWER 146#define CUBE_QUIT BUTTON_POWER
145#define CUBE_NEXT BUTTON_RIGHT 147#define CUBE_NEXT BUTTON_RIGHT
146#define CUBE_PREV BUTTON_LEFT 148#define CUBE_PREV BUTTON_LEFT
diff --git a/apps/plugins/dict.c b/apps/plugins/dict.c
index 3004218f23..e263afebb2 100644
--- a/apps/plugins/dict.c
+++ b/apps/plugins/dict.c
@@ -119,7 +119,8 @@ long reverse (long N) {
119#define LP_QUIT BUTTON_POWER 119#define LP_QUIT BUTTON_POWER
120#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 120#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
121(CONFIG_KEYPAD == SANSA_C200_PAD) || \ 121(CONFIG_KEYPAD == SANSA_C200_PAD) || \
122(CONFIG_KEYPAD == SANSA_CLIP_PAD) 122(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
123(CONFIG_KEYPAD == SANSA_M200_PAD)
123#define LP_QUIT BUTTON_POWER 124#define LP_QUIT BUTTON_POWER
124#elif CONFIG_KEYPAD == IRIVER_H10_PAD 125#elif CONFIG_KEYPAD == IRIVER_H10_PAD
125#define LP_QUIT BUTTON_POWER 126#define LP_QUIT BUTTON_POWER
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c
index 9bc5659710..e5863bd4b1 100644
--- a/apps/plugins/flipit.c
+++ b/apps/plugins/flipit.c
@@ -167,6 +167,18 @@ PLUGIN_HEADER
167#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_SELECT) 167#define FLIPIT_STEP_BY_STEP (BUTTON_HOME | BUTTON_SELECT)
168#define FLIPIT_TOGGLE BUTTON_SELECT 168#define FLIPIT_TOGGLE BUTTON_SELECT
169 169
170#elif CONFIG_KEYPAD == SANSA_M200_PAD
171
172#define FLIPIT_LEFT BUTTON_LEFT
173#define FLIPIT_RIGHT BUTTON_RIGHT
174#define FLIPIT_UP BUTTON_UP
175#define FLIPIT_DOWN BUTTON_DOWN
176#define FLIPIT_QUIT BUTTON_POWER
177#define FLIPIT_SHUFFLE (BUTTON_SELECT | BUTTON_LEFT)
178#define FLIPIT_SOLVE (BUTTON_SELECT | BUTTON_RIGHT)
179#define FLIPIT_STEP_BY_STEP (BUTTON_SELECT | BUTTON_UP)
180#define FLIPIT_TOGGLE (BUTTON_SELECT | BUTTON_REL)
181
170#elif CONFIG_KEYPAD == IRIVER_H10_PAD 182#elif CONFIG_KEYPAD == IRIVER_H10_PAD
171 183
172#define FLIPIT_LEFT BUTTON_LEFT 184#define FLIPIT_LEFT BUTTON_LEFT
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c
index e453750fa5..1c3fc84d96 100644
--- a/apps/plugins/jewels.c
+++ b/apps/plugins/jewels.c
@@ -108,7 +108,9 @@ PLUGIN_HEADER
108#define JEWELS_SELECT BUTTON_SELECT 108#define JEWELS_SELECT BUTTON_SELECT
109#define JEWELS_CANCEL BUTTON_POWER 109#define JEWELS_CANCEL BUTTON_POWER
110 110
111#elif CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD 111#elif CONFIG_KEYPAD == SANSA_C200_PAD || \
112CONFIG_KEYPAD == SANSA_CLIP_PAD || \
113CONFIG_KEYPAD == SANSA_M200_PAD
112#define JEWELS_UP BUTTON_UP 114#define JEWELS_UP BUTTON_UP
113#define JEWELS_DOWN BUTTON_DOWN 115#define JEWELS_DOWN BUTTON_DOWN
114#define JEWELS_LEFT BUTTON_LEFT 116#define JEWELS_LEFT BUTTON_LEFT
@@ -1578,7 +1580,9 @@ static int jewels_main(struct game_context* bj) {
1578 rb->lcd_puts(0, 10, "Long SELECT to show menu"); 1580 rb->lcd_puts(0, 10, "Long SELECT to show menu");
1579 rb->lcd_puts(0, 11, "POWER to cancel"); 1581 rb->lcd_puts(0, 11, "POWER to cancel");
1580#elif CONFIG_KEYPAD == SANSA_E200_PAD \ 1582#elif CONFIG_KEYPAD == SANSA_E200_PAD \
1581 || CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD 1583 || CONFIG_KEYPAD == SANSA_C200_PAD \
1584 || CONFIG_KEYPAD == SANSA_CLIP_PAD \
1585 || CONFIG_KEYPAD == SANSA_M200_PAD
1582 rb->lcd_puts(0, 2, "Swap pairs of jewels to"); 1586 rb->lcd_puts(0, 2, "Swap pairs of jewels to");
1583 rb->lcd_puts(0, 3, "form connected segments"); 1587 rb->lcd_puts(0, 3, "form connected segments");
1584 rb->lcd_puts(0, 4, "of three or more of the"); 1588 rb->lcd_puts(0, 4, "of three or more of the");
diff --git a/apps/plugins/jpeg/jpeg.h b/apps/plugins/jpeg/jpeg.h
index 178ff2dae5..23347b9e2a 100644
--- a/apps/plugins/jpeg/jpeg.h
+++ b/apps/plugins/jpeg/jpeg.h
@@ -163,6 +163,21 @@
163#define JPEG_PREVIOUS BUTTON_VOL_DOWN 163#define JPEG_PREVIOUS BUTTON_VOL_DOWN
164#define JPEG_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT) 164#define JPEG_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT)
165 165
166#elif CONFIG_KEYPAD == SANSA_M200_PAD
167#define JPEG_ZOOM_PRE BUTTON_SELECT
168#define JPEG_ZOOM_IN (BUTTON_SELECT | BUTTON_REL)
169#define JPEG_ZOOM_OUT (BUTTON_SELECT | BUTTON_REPEAT)
170#define JPEG_UP BUTTON_UP
171#define JPEG_DOWN BUTTON_DOWN
172#define JPEG_LEFT BUTTON_LEFT
173#define JPEG_RIGHT BUTTON_RIGHT
174#define JPEG_MENU BUTTON_POWER
175#define JPEG_SLIDE_SHOW (BUTTON_SELECT | BUTTON_UP)
176#define JPEG_NEXT BUTTON_VOL_UP
177#define JPEG_NEXT_REPEAT (BUTTON_VOL_UP|BUTTON_REPEAT)
178#define JPEG_PREVIOUS BUTTON_VOL_DOWN
179#define JPEG_PREVIOUS_REPEAT (BUTTON_VOL_DOWN|BUTTON_REPEAT)
180
166#elif CONFIG_KEYPAD == IRIVER_H10_PAD 181#elif CONFIG_KEYPAD == IRIVER_H10_PAD
167#define JPEG_ZOOM_PRE BUTTON_PLAY 182#define JPEG_ZOOM_PRE BUTTON_PLAY
168#define JPEG_ZOOM_IN (BUTTON_PLAY | BUTTON_REL) 183#define JPEG_ZOOM_IN (BUTTON_PLAY | BUTTON_REL)
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c
index dd111d67d5..af6dc55f80 100644
--- a/apps/plugins/lib/pluginlib_actions.c
+++ b/apps/plugins/lib/pluginlib_actions.c
@@ -89,7 +89,8 @@ const struct button_mapping generic_directions[] =
89 || (CONFIG_KEYPAD == MROBE100_PAD) \ 89 || (CONFIG_KEYPAD == MROBE100_PAD) \
90 || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \ 90 || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \
91 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \ 91 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
92 || (CONFIG_KEYPAD == CREATIVEZVM_PAD) 92 || (CONFIG_KEYPAD == CREATIVEZVM_PAD) \
93 || (CONFIG_KEYPAD == SANSA_M200_PAD)
93 { PLA_UP, BUTTON_UP, BUTTON_NONE}, 94 { PLA_UP, BUTTON_UP, BUTTON_NONE},
94 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE}, 95 { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE},
95 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, 96 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
@@ -189,7 +190,8 @@ const struct button_mapping generic_left_right_fire[] =
189 || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ 190 || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \
190 || (CONFIG_KEYPAD == MROBE100_PAD) \ 191 || (CONFIG_KEYPAD == MROBE100_PAD) \
191 || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \ 192 || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \
192 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 193 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
194 || (CONFIG_KEYPAD == SANSA_M200_PAD)
193 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, 195 { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE},
194 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, 196 { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE},
195 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, 197 { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
@@ -369,7 +371,9 @@ const struct button_mapping generic_actions[] =
369 {PLA_MENU, BUTTON_DOWN, BUTTON_NONE}, 371 {PLA_MENU, BUTTON_DOWN, BUTTON_NONE},
370 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, 372 {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE},
371 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, 373 {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
372#elif CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD 374#elif CONFIG_KEYPAD == SANSA_C200_PAD || \
375CONFIG_KEYPAD == SANSA_CLIP_PAD || \
376CONFIG_KEYPAD == SANSA_M200_PAD
373 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, 377 {PLA_QUIT, BUTTON_POWER, BUTTON_NONE},
374 {PLA_START, BUTTON_UP, BUTTON_NONE}, 378 {PLA_START, BUTTON_UP, BUTTON_NONE},
375 {PLA_MENU, BUTTON_DOWN, BUTTON_NONE}, 379 {PLA_MENU, BUTTON_DOWN, BUTTON_NONE},
@@ -455,7 +459,8 @@ const struct button_mapping generic_increase_decrease[] =
455 || (CONFIG_KEYPAD == MROBE100_PAD) \ 459 || (CONFIG_KEYPAD == MROBE100_PAD) \
456 || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \ 460 || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \
457 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \ 461 || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
458 || (CONFIG_KEYPAD == CREATIVEZVM_PAD) 462 || (CONFIG_KEYPAD == CREATIVEZVM_PAD) \
463 || (CONFIG_KEYPAD == SANSA_M200_PAD)
459 {PLA_INC, BUTTON_UP, BUTTON_NONE}, 464 {PLA_INC, BUTTON_UP, BUTTON_NONE},
460 {PLA_DEC, BUTTON_DOWN, BUTTON_NONE}, 465 {PLA_DEC, BUTTON_DOWN, BUTTON_NONE},
461 {PLA_INC_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, 466 {PLA_INC_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE},
diff --git a/apps/plugins/logo.c b/apps/plugins/logo.c
index 846d3214df..5fd87a6bb7 100644
--- a/apps/plugins/logo.c
+++ b/apps/plugins/logo.c
@@ -96,7 +96,9 @@ const unsigned char rockbox16x7[] = {
96#define LP_INC_Y BUTTON_UP 96#define LP_INC_Y BUTTON_UP
97 97
98#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 98#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
99(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 99(CONFIG_KEYPAD == SANSA_C200_PAD) || \
100(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
101(CONFIG_KEYPAD == SANSA_M200_PAD)
100#define LP_QUIT BUTTON_POWER 102#define LP_QUIT BUTTON_POWER
101#define LP_DEC_X BUTTON_LEFT 103#define LP_DEC_X BUTTON_LEFT
102#define LP_INC_X BUTTON_RIGHT 104#define LP_INC_X BUTTON_RIGHT
diff --git a/apps/plugins/mandelbrot.c b/apps/plugins/mandelbrot.c
index 39ecd5b7d1..536ef09e60 100644
--- a/apps/plugins/mandelbrot.c
+++ b/apps/plugins/mandelbrot.c
@@ -162,6 +162,18 @@ PLUGIN_HEADER
162#define MANDELBROT_MAXITER_DEC (BUTTON_SELECT | BUTTON_LEFT) 162#define MANDELBROT_MAXITER_DEC (BUTTON_SELECT | BUTTON_LEFT)
163#define MANDELBROT_RESET BUTTON_HOME 163#define MANDELBROT_RESET BUTTON_HOME
164 164
165#elif CONFIG_KEYPAD == SANSA_M200_PAD
166#define MANDELBROT_QUIT BUTTON_POWER
167#define MANDELBROT_UP BUTTON_UP
168#define MANDELBROT_DOWN BUTTON_DOWN
169#define MANDELBROT_LEFT BUTTON_LEFT
170#define MANDELBROT_RIGHT BUTTON_RIGHT
171#define MANDELBROT_ZOOM_IN BUTTON_VOL_UP
172#define MANDELBROT_ZOOM_OUT BUTTON_VOL_DOWN
173#define MANDELBROT_MAXITER_INC (BUTTON_SELECT | BUTTON_RIGHT)
174#define MANDELBROT_MAXITER_DEC (BUTTON_SELECT | BUTTON_LEFT)
175#define MANDELBROT_RESET (BUTTON_SELECT | BUTTON_UP)
176
165#elif CONFIG_KEYPAD == IRIVER_H10_PAD 177#elif CONFIG_KEYPAD == IRIVER_H10_PAD
166#define MANDELBROT_QUIT BUTTON_POWER 178#define MANDELBROT_QUIT BUTTON_POWER
167#define MANDELBROT_UP BUTTON_SCROLL_UP 179#define MANDELBROT_UP BUTTON_SCROLL_UP
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c
index 9380e14c80..40141f496e 100644
--- a/apps/plugins/midi/midiplay.c
+++ b/apps/plugins/midi/midiplay.c
@@ -92,7 +92,9 @@ PLUGIN_IRAM_DECLARE
92#define BTN_PLAY BUTTON_UP 92#define BTN_PLAY BUTTON_UP
93 93
94 94
95#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 95#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || \
96(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
97(CONFIG_KEYPAD == SANSA_M200_PAD)
96#define BTN_QUIT BUTTON_POWER 98#define BTN_QUIT BUTTON_POWER
97#define BTN_RIGHT BUTTON_RIGHT 99#define BTN_RIGHT BUTTON_RIGHT
98#define BTN_LEFT BUTTON_LEFT 100#define BTN_LEFT BUTTON_LEFT
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c
index 7d361a2db2..071c5d786c 100644
--- a/apps/plugins/minesweeper.c
+++ b/apps/plugins/minesweeper.c
@@ -132,7 +132,9 @@ enum minesweeper_status {
132# define MINESWP_DISCOVER BUTTON_SELECT 132# define MINESWP_DISCOVER BUTTON_SELECT
133# define MINESWP_INFO (BUTTON_REC|BUTTON_REPEAT) 133# define MINESWP_INFO (BUTTON_REC|BUTTON_REPEAT)
134 134
135#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 135#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || \
136(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
137(CONFIG_KEYPAD == SANSA_M200_PAD)
136# define MINESWP_LEFT BUTTON_LEFT 138# define MINESWP_LEFT BUTTON_LEFT
137# define MINESWP_RIGHT BUTTON_RIGHT 139# define MINESWP_RIGHT BUTTON_RIGHT
138# define MINESWP_UP BUTTON_UP 140# define MINESWP_UP BUTTON_UP
diff --git a/apps/plugins/mosaique.c b/apps/plugins/mosaique.c
index 5560ef35d1..4d543e1d36 100644
--- a/apps/plugins/mosaique.c
+++ b/apps/plugins/mosaique.c
@@ -94,7 +94,9 @@ PLUGIN_HEADER
94#define MOSAIQUE_RESTART BUTTON_SELECT 94#define MOSAIQUE_RESTART BUTTON_SELECT
95 95
96#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 96#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
97(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 97(CONFIG_KEYPAD == SANSA_C200_PAD) || \
98(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
99(CONFIG_KEYPAD == SANSA_M200_PAD)
98#define MOSAIQUE_QUIT BUTTON_POWER 100#define MOSAIQUE_QUIT BUTTON_POWER
99#define MOSAIQUE_SPEED BUTTON_DOWN 101#define MOSAIQUE_SPEED BUTTON_DOWN
100#define MOSAIQUE_RESTART BUTTON_SELECT 102#define MOSAIQUE_RESTART BUTTON_SELECT
diff --git a/apps/plugins/mp3_encoder.c b/apps/plugins/mp3_encoder.c
index 3141c8d95e..8c060799d7 100644
--- a/apps/plugins/mp3_encoder.c
+++ b/apps/plugins/mp3_encoder.c
@@ -2430,7 +2430,9 @@ void get_mp3_filename(const char *wav_name)
2430#define MP3ENC_DONE BUTTON_POWER 2430#define MP3ENC_DONE BUTTON_POWER
2431#define MP3ENC_SELECT BUTTON_SELECT 2431#define MP3ENC_SELECT BUTTON_SELECT
2432#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 2432#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
2433(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 2433(CONFIG_KEYPAD == SANSA_C200_PAD) || \
2434(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
2435(CONFIG_KEYPAD == SANSA_M200_PAD)
2434#define MP3ENC_PREV BUTTON_UP 2436#define MP3ENC_PREV BUTTON_UP
2435#define MP3ENC_NEXT BUTTON_DOWN 2437#define MP3ENC_NEXT BUTTON_DOWN
2436#define MP3ENC_DONE BUTTON_POWER 2438#define MP3ENC_DONE BUTTON_POWER
diff --git a/apps/plugins/mpegplayer/mpeg_settings.c b/apps/plugins/mpegplayer/mpeg_settings.c
index 3672abbfb3..2b423d28e9 100644
--- a/apps/plugins/mpegplayer/mpeg_settings.c
+++ b/apps/plugins/mpegplayer/mpeg_settings.c
@@ -83,7 +83,9 @@ struct mpeg_settings settings;
83#define MPEG_START_TIME_DOWN BUTTON_DOWN 83#define MPEG_START_TIME_DOWN BUTTON_DOWN
84#define MPEG_START_TIME_EXIT BUTTON_POWER 84#define MPEG_START_TIME_EXIT BUTTON_POWER
85 85
86#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 86#elif (CONFIG_KEYPAD == SANSA_C200_PAD) || \
87(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
88(CONFIG_KEYPAD == SANSA_M200_PAD)
87#define MPEG_START_TIME_SELECT BUTTON_SELECT 89#define MPEG_START_TIME_SELECT BUTTON_SELECT
88#define MPEG_START_TIME_SCROLL_UP BUTTON_VOL_UP 90#define MPEG_START_TIME_SCROLL_UP BUTTON_VOL_UP
89#define MPEG_START_TIME_SCROLL_DOWN BUTTON_VOL_DOWN 91#define MPEG_START_TIME_SCROLL_DOWN BUTTON_VOL_DOWN
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index 42c1426468..02eb0863ff 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -189,7 +189,9 @@ PLUGIN_IRAM_DECLARE
189#define MPEG_RW BUTTON_LEFT 189#define MPEG_RW BUTTON_LEFT
190#define MPEG_FF BUTTON_RIGHT 190#define MPEG_FF BUTTON_RIGHT
191 191
192#elif CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD 192#elif CONFIG_KEYPAD == SANSA_C200_PAD || \
193CONFIG_KEYPAD == SANSA_CLIP_PAD || \
194CONFIG_KEYPAD == SANSA_M200_PAD
193#define MPEG_MENU BUTTON_SELECT 195#define MPEG_MENU BUTTON_SELECT
194#define MPEG_STOP BUTTON_POWER 196#define MPEG_STOP BUTTON_POWER
195#define MPEG_PAUSE BUTTON_UP 197#define MPEG_PAUSE BUTTON_UP
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c
index dd148216a1..d197272e9a 100644
--- a/apps/plugins/oscilloscope.c
+++ b/apps/plugins/oscilloscope.c
@@ -133,6 +133,17 @@ PLUGIN_HEADER
133#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP 133#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
134#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN 134#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
135 135
136#elif (CONFIG_KEYPAD == SANSA_M200_PAD)
137#define OSCILLOSCOPE_QUIT BUTTON_POWER
138#define OSCILLOSCOPE_DRAWMODE (BUTTON_SELECT | BUTTON_REL)
139#define OSCILLOSCOPE_ADVMODE BUTTON_DOWN
140#define OSCILLOSCOPE_ORIENTATION BUTTON_UP
141#define OSCILLOSCOPE_PAUSE (BUTTON_SELECT | BUTTON_UP)
142#define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT
143#define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT
144#define OSCILLOSCOPE_VOL_UP BUTTON_VOL_UP
145#define OSCILLOSCOPE_VOL_DOWN BUTTON_VOL_DOWN
146
136#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD 147#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
137#define OSCILLOSCOPE_QUIT BUTTON_POWER 148#define OSCILLOSCOPE_QUIT BUTTON_POWER
138#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_SELECT 149#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_SELECT
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c
index c2b54eba70..bf40032cf8 100644
--- a/apps/plugins/pegbox.c
+++ b/apps/plugins/pegbox.c
@@ -279,6 +279,24 @@ PLUGIN_HEADER
279#define LVL_UP_TEXT "VOL+" 279#define LVL_UP_TEXT "VOL+"
280#define LVL_DOWN_TEXT "VOL-" 280#define LVL_DOWN_TEXT "VOL-"
281 281
282#elif CONFIG_KEYPAD == SANSA_M200_PAD
283#define PEGBOX_SAVE (BUTTON_SELECT | BUTTON_REL)
284#define PEGBOX_QUIT BUTTON_POWER
285#define PEGBOX_RESTART (BUTTON_SELECT | BUTTON_UP)
286#define PEGBOX_LVL_UP BUTTON_VOL_UP
287#define PEGBOX_LVL_DOWN BUTTON_VOL_DOWN
288#define PEGBOX_UP BUTTON_UP
289#define PEGBOX_DOWN BUTTON_DOWN
290#define PEGBOX_RIGHT BUTTON_RIGHT
291#define PEGBOX_LEFT BUTTON_LEFT
292
293#define SAVE_TEXT "SELECT"
294#define QUIT_TEXT "POWER"
295#define RESTART_TEXT "SELECT+UP"
296#define LVL_UP_TEXT "VOL+"
297#define LVL_DOWN_TEXT "VOL-"
298
299
282#elif CONFIG_KEYPAD == IAUDIO_M3_PAD 300#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
283#define PEGBOX_SAVE BUTTON_RC_PLAY 301#define PEGBOX_SAVE BUTTON_RC_PLAY
284#define PEGBOX_QUIT BUTTON_RC_REC 302#define PEGBOX_QUIT BUTTON_RC_REC
diff --git a/apps/plugins/plasma.c b/apps/plugins/plasma.c
index a821718f46..7c74a86917 100644
--- a/apps/plugins/plasma.c
+++ b/apps/plugins/plasma.c
@@ -68,7 +68,9 @@ static int plasma_frequency;
68#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN 68#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN
69 69
70#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 70#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
71(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 71(CONFIG_KEYPAD == SANSA_C200_PAD) || \
72(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
73(CONFIG_KEYPAD == SANSA_M200_PAD)
72#define PLASMA_QUIT BUTTON_POWER 74#define PLASMA_QUIT BUTTON_POWER
73#define PLASMA_INCREASE_FREQUENCY BUTTON_UP 75#define PLASMA_INCREASE_FREQUENCY BUTTON_UP
74#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN 76#define PLASMA_DECREASE_FREQUENCY BUTTON_DOWN
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c
index fc672c9851..eeda405ae4 100644
--- a/apps/plugins/pong.c
+++ b/apps/plugins/pong.c
@@ -102,7 +102,9 @@ PLUGIN_HEADER
102#define PONG_RIGHT_UP BUTTON_VOL_UP 102#define PONG_RIGHT_UP BUTTON_VOL_UP
103#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN 103#define PONG_RIGHT_DOWN BUTTON_VOL_DOWN
104 104
105#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 105#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
106(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
107(CONFIG_KEYPAD == SANSA_M200_PAD)
106#define PONG_QUIT BUTTON_POWER 108#define PONG_QUIT BUTTON_POWER
107#define PONG_PAUSE BUTTON_SELECT 109#define PONG_PAUSE BUTTON_SELECT
108#define PONG_LEFT_UP BUTTON_LEFT 110#define PONG_LEFT_UP BUTTON_LEFT
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h
index 826e9b12bb..2db10fed6a 100644
--- a/apps/plugins/reversi/reversi-gui.h
+++ b/apps/plugins/reversi/reversi-gui.h
@@ -107,7 +107,9 @@
107#define REVERSI_BUTTON_MENU BUTTON_PLAY 107#define REVERSI_BUTTON_MENU BUTTON_PLAY
108 108
109#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 109#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
110(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 110(CONFIG_KEYPAD == SANSA_C200_PAD) || \
111(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
112(CONFIG_KEYPAD == SANSA_M200_PAD)
111#define REVERSI_BUTTON_QUIT BUTTON_POWER 113#define REVERSI_BUTTON_QUIT BUTTON_POWER
112#define REVERSI_BUTTON_UP BUTTON_UP 114#define REVERSI_BUTTON_UP BUTTON_UP
113#define REVERSI_BUTTON_DOWN BUTTON_DOWN 115#define REVERSI_BUTTON_DOWN BUTTON_DOWN
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index 38d919a258..6c403e76ed 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -147,6 +147,18 @@ PLUGIN_HEADER
147#define ROCKBLOX_DROP BUTTON_SELECT 147#define ROCKBLOX_DROP BUTTON_SELECT
148#define ROCKBLOX_RESTART BUTTON_HOME 148#define ROCKBLOX_RESTART BUTTON_HOME
149 149
150#elif CONFIG_KEYPAD == SANSA_M200_PAD
151
152#define ROCKBLOX_OFF BUTTON_POWER
153#define ROCKBLOX_ROTATE_RIGHT BUTTON_UP
154#define ROCKBLOX_ROTATE_RIGHT2 BUTTON_VOL_DOWN
155#define ROCKBLOX_ROTATE_LEFT BUTTON_VOL_UP
156#define ROCKBLOX_DOWN BUTTON_DOWN
157#define ROCKBLOX_LEFT BUTTON_LEFT
158#define ROCKBLOX_RIGHT BUTTON_RIGHT
159#define ROCKBLOX_RESTART (BUTTON_SELECT | BUTTON_UP)
160#define ROCKBLOX_DROP (BUTTON_SELECT | BUTTON_REL)
161
150#elif CONFIG_KEYPAD == IRIVER_H10_PAD 162#elif CONFIG_KEYPAD == IRIVER_H10_PAD
151 163
152#define ROCKBLOX_OFF BUTTON_POWER 164#define ROCKBLOX_OFF BUTTON_POWER
diff --git a/apps/plugins/rockblox1d.c b/apps/plugins/rockblox1d.c
index 295bd225b9..12f939a319 100644
--- a/apps/plugins/rockblox1d.c
+++ b/apps/plugins/rockblox1d.c
@@ -58,7 +58,8 @@ PLUGIN_HEADER
58#define ONEDROCKBLOX_QUIT BUTTON_POWER 58#define ONEDROCKBLOX_QUIT BUTTON_POWER
59 59
60#elif CONFIG_KEYPAD == SANSA_E200_PAD || CONFIG_KEYPAD == SANSA_C200_PAD || \ 60#elif CONFIG_KEYPAD == SANSA_E200_PAD || CONFIG_KEYPAD == SANSA_C200_PAD || \
61CONFIG_KEYPAD == SANSA_CLIP_PAD 61CONFIG_KEYPAD == SANSA_CLIP_PAD || \
62CONFIG_KEYPAD == SANSA_M200_PAD
62#define ONEDROCKBLOX_DOWN BUTTON_SELECT 63#define ONEDROCKBLOX_DOWN BUTTON_SELECT
63#define ONEDROCKBLOX_QUIT BUTTON_POWER 64#define ONEDROCKBLOX_QUIT BUTTON_POWER
64 65
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index fddb6bebc2..85f4d32f68 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -95,7 +95,7 @@ PLUGIN_HEADER
95#define PUZZLE_PICTURE BUTTON_A 95#define PUZZLE_PICTURE BUTTON_A
96 96
97#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 97#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
98(CONFIG_KEYPAD == SANSA_C200_PAD) 98(CONFIG_KEYPAD == SANSA_C200_PAD)
99#define PUZZLE_QUIT BUTTON_POWER 99#define PUZZLE_QUIT BUTTON_POWER
100#define PUZZLE_LEFT BUTTON_LEFT 100#define PUZZLE_LEFT BUTTON_LEFT
101#define PUZZLE_RIGHT BUTTON_RIGHT 101#define PUZZLE_RIGHT BUTTON_RIGHT
@@ -113,6 +113,15 @@ PLUGIN_HEADER
113#define PUZZLE_SHUFFLE BUTTON_HOME 113#define PUZZLE_SHUFFLE BUTTON_HOME
114#define PUZZLE_PICTURE BUTTON_SELECT 114#define PUZZLE_PICTURE BUTTON_SELECT
115 115
116#elif (CONFIG_KEYPAD == SANSA_M200_PAD)
117#define PUZZLE_QUIT BUTTON_POWER
118#define PUZZLE_LEFT BUTTON_LEFT
119#define PUZZLE_RIGHT BUTTON_RIGHT
120#define PUZZLE_UP BUTTON_UP
121#define PUZZLE_DOWN BUTTON_DOWN
122#define PUZZLE_SHUFFLE (BUTTON_SELECT | BUTTON_UP)
123#define PUZZLE_PICTURE (BUTTON_SELECT | BUTTON_REL)
124
116#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 125#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
117#define PUZZLE_QUIT BUTTON_POWER 126#define PUZZLE_QUIT BUTTON_POWER
118#define PUZZLE_LEFT BUTTON_LEFT 127#define PUZZLE_LEFT BUTTON_LEFT
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c
index e6cbcc84dc..b2a592883c 100644
--- a/apps/plugins/snake.c
+++ b/apps/plugins/snake.c
@@ -101,7 +101,8 @@ PLUGIN_HEADER
101 101
102#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 102#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
103(CONFIG_KEYPAD == SANSA_C200_PAD) || \ 103(CONFIG_KEYPAD == SANSA_C200_PAD) || \
104(CONFIG_KEYPAD == SANSA_CLIP_PAD) 104(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
105(CONFIG_KEYPAD == SANSA_M200_PAD)
105#define SNAKE_QUIT BUTTON_POWER 106#define SNAKE_QUIT BUTTON_POWER
106#define SNAKE_LEFT BUTTON_LEFT 107#define SNAKE_LEFT BUTTON_LEFT
107#define SNAKE_RIGHT BUTTON_RIGHT 108#define SNAKE_RIGHT BUTTON_RIGHT
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c
index b17a47b44c..061fdb2a5d 100644
--- a/apps/plugins/snake2.c
+++ b/apps/plugins/snake2.c
@@ -234,7 +234,8 @@ PLUGIN_HEADER
234#define SNAKE2_PLAYPAUSE BUTTON_SELECT 234#define SNAKE2_PLAYPAUSE BUTTON_SELECT
235#define SNAKE2_PLAYPAUSE_TEXT "Select" 235#define SNAKE2_PLAYPAUSE_TEXT "Select"
236 236
237#elif (CONFIG_KEYPAD == SANSA_CLIP_PAD) 237#elif (CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
238(CONFIG_KEYPAD == SANSA_M200_PAD)
238#define SNAKE2_LEFT BUTTON_LEFT 239#define SNAKE2_LEFT BUTTON_LEFT
239#define SNAKE2_RIGHT BUTTON_RIGHT 240#define SNAKE2_RIGHT BUTTON_RIGHT
240#define SNAKE2_UP BUTTON_UP 241#define SNAKE2_UP BUTTON_UP
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c
index 4f8c3dce12..c73fd2e58b 100644
--- a/apps/plugins/snow.c
+++ b/apps/plugins/snow.c
@@ -49,7 +49,9 @@ PLUGIN_HEADER
49#elif CONFIG_KEYPAD == GIGABEAT_PAD 49#elif CONFIG_KEYPAD == GIGABEAT_PAD
50#define SNOW_QUIT BUTTON_POWER 50#define SNOW_QUIT BUTTON_POWER
51#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 51#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
52(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 52(CONFIG_KEYPAD == SANSA_C200_PAD) || \
53(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
54(CONFIG_KEYPAD == SANSA_M200_PAD)
53#define SNOW_QUIT BUTTON_POWER 55#define SNOW_QUIT BUTTON_POWER
54#elif CONFIG_KEYPAD == IRIVER_H10_PAD 56#elif CONFIG_KEYPAD == IRIVER_H10_PAD
55#define SNOW_QUIT BUTTON_POWER 57#define SNOW_QUIT BUTTON_POWER
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c
index 4940ac24ab..4d2de8aedb 100644
--- a/apps/plugins/sokoban.c
+++ b/apps/plugins/sokoban.c
@@ -252,6 +252,22 @@ PLUGIN_HEADER
252#define BUTTON_SAVE BUTTON_SELECT 252#define BUTTON_SAVE BUTTON_SELECT
253#define BUTTON_SAVE_NAME "SELECT" 253#define BUTTON_SAVE_NAME "SELECT"
254 254
255#elif CONFIG_KEYPAD == SANSA_M200_PAD
256#define SOKOBAN_LEFT BUTTON_LEFT
257#define SOKOBAN_RIGHT BUTTON_RIGHT
258#define SOKOBAN_UP BUTTON_UP
259#define SOKOBAN_DOWN BUTTON_DOWN
260#define SOKOBAN_MENU BUTTON_POWER
261#define SOKOBAN_UNDO_PRE BUTTON_SELECT
262#define SOKOBAN_UNDO (BUTTON_SELECT | BUTTON_REL)
263#define SOKOBAN_REDO (BUTTON_SELECT | BUTTON_UP)
264#define SOKOBAN_LEVEL_DOWN BUTTON_VOL_DOWN
265#define SOKOBAN_LEVEL_REPEAT (BUTTON_SELECT | BUTTON_RIGHT)
266#define SOKOBAN_LEVEL_UP BUTTON_VOL_UP
267#define SOKOBAN_PAUSE BUTTON_SELECT
268#define BUTTON_SAVE BUTTON_SELECT
269#define BUTTON_SAVE_NAME "SELECT"
270
255#elif CONFIG_KEYPAD == GIGABEAT_S_PAD 271#elif CONFIG_KEYPAD == GIGABEAT_S_PAD
256#define SOKOBAN_LEFT BUTTON_LEFT 272#define SOKOBAN_LEFT BUTTON_LEFT
257#define SOKOBAN_RIGHT BUTTON_RIGHT 273#define SOKOBAN_RIGHT BUTTON_RIGHT
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c
index ea2246c442..e29e0b55cc 100644
--- a/apps/plugins/solitaire.c
+++ b/apps/plugins/solitaire.c
@@ -239,6 +239,25 @@ static const struct plugin_api* rb;
239# define HK_CUR2STACK "DOUBLE SELECT" 239# define HK_CUR2STACK "DOUBLE SELECT"
240# define HK_REM2STACK "RIGHT" 240# define HK_REM2STACK "RIGHT"
241 241
242#elif CONFIG_KEYPAD == SANSA_M200_PAD
243# define SOL_QUIT BUTTON_POWER
244# define SOL_UP BUTTON_UP
245# define SOL_DOWN BUTTON_DOWN
246# define SOL_LEFT BUTTON_LEFT
247# define SOL_RIGHT BUTTON_RIGHT
248# define SOL_MOVE_PRE BUTTON_SELECT
249# define SOL_MOVE (BUTTON_SELECT | BUTTON_REL)
250# define SOL_DRAW (BUTTON_SELECT | BUTTON_UP)
251# define SOL_REM2CUR BUTTON_VOL_DOWN
252# define SOL_CUR2STACK_PRE BUTTON_SELECT
253# define SOL_CUR2STACK (BUTTON_SELECT | BUTTON_REPEAT)
254# define SOL_REM2STACK BUTTON_VOL_UP
255# define HK_MOVE "SELECT"
256# define HK_DRAW "SELECT + UP"
257# define HK_REM2CUR "LEFT"
258# define HK_CUR2STACK "DOUBLE SELECT"
259# define HK_REM2STACK "RIGHT"
260
242#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 261#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
243# define SOL_QUIT BUTTON_POWER 262# define SOL_QUIT BUTTON_POWER
244# define SOL_UP BUTTON_SCROLL_UP 263# define SOL_UP BUTTON_SCROLL_UP
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c
index 1926c9bf04..2b22bb491e 100644
--- a/apps/plugins/spacerocks.c
+++ b/apps/plugins/spacerocks.c
@@ -161,6 +161,19 @@ static const struct plugin_api* rb; /* global api struct pointer */
161#define AST_FIRE BUTTON_SELECT 161#define AST_FIRE BUTTON_SELECT
162#define AST_FIRE_REP (BUTTON_SELECT | BUTTON_REPEAT) 162#define AST_FIRE_REP (BUTTON_SELECT | BUTTON_REPEAT)
163 163
164#elif (CONFIG_KEYPAD == SANSA_M200_PAD)
165#define AST_PAUSE (BUTTON_SELECT | BUTTON_UP)
166#define AST_QUIT BUTTON_POWER
167#define AST_THRUST_REP (BUTTON_UP | BUTTON_REPEAT)
168#define AST_THRUST BUTTON_UP
169#define AST_HYPERSPACE BUTTON_DOWN
170#define AST_LEFT BUTTON_LEFT
171#define AST_LEFT_REP (BUTTON_LEFT | BUTTON_REPEAT)
172#define AST_RIGHT BUTTON_RIGHT
173#define AST_RIGHT_REP (BUTTON_RIGHT | BUTTON_REPEAT)
174#define AST_FIRE (BUTTON_SELECT | BUTTON_REL)
175#define AST_FIRE_REP (BUTTON_SELECT | BUTTON_REPEAT)
176
164#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 177#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
165#define AST_PAUSE BUTTON_PLAY 178#define AST_PAUSE BUTTON_PLAY
166#define AST_QUIT BUTTON_POWER 179#define AST_QUIT BUTTON_POWER
diff --git a/apps/plugins/star.c b/apps/plugins/star.c
index 0ba6f73f8b..f358755e2a 100644
--- a/apps/plugins/star.c
+++ b/apps/plugins/star.c
@@ -161,7 +161,9 @@ PLUGIN_HEADER
161#define STAR_MENU_RUN BUTTON_SELECT 161#define STAR_MENU_RUN BUTTON_SELECT
162 162
163#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 163#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
164(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 164(CONFIG_KEYPAD == SANSA_C200_PAD) || \
165(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
166(CONFIG_KEYPAD == SANSA_M200_PAD)
165 167
166#define STAR_QUIT BUTTON_POWER 168#define STAR_QUIT BUTTON_POWER
167#define STAR_LEFT BUTTON_LEFT 169#define STAR_LEFT BUTTON_LEFT
diff --git a/apps/plugins/starfield.c b/apps/plugins/starfield.c
index b0555f722f..6fe01d5509 100644
--- a/apps/plugins/starfield.c
+++ b/apps/plugins/starfield.c
@@ -61,7 +61,8 @@ static const struct plugin_api* rb; /* global api struct pointer */
61#define STARFIELD_TOGGLE_COLOR BUTTON_SELECT 61#define STARFIELD_TOGGLE_COLOR BUTTON_SELECT
62#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 62#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
63(CONFIG_KEYPAD == SANSA_C200_PAD) || \ 63(CONFIG_KEYPAD == SANSA_C200_PAD) || \
64(CONFIG_KEYPAD == SANSA_CLIP_PAD) 64(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
65(CONFIG_KEYPAD == SANSA_M200_PAD)
65#define STARFIELD_QUIT BUTTON_POWER 66#define STARFIELD_QUIT BUTTON_POWER
66#define STARFIELD_INCREASE_ZMOVE BUTTON_UP 67#define STARFIELD_INCREASE_ZMOVE BUTTON_UP
67#define STARFIELD_DECREASE_ZMOVE BUTTON_DOWN 68#define STARFIELD_DECREASE_ZMOVE BUTTON_DOWN
diff --git a/apps/plugins/stats.c b/apps/plugins/stats.c
index 9dfd3ec96c..18cd30465e 100644
--- a/apps/plugins/stats.c
+++ b/apps/plugins/stats.c
@@ -56,7 +56,9 @@ static bool abort;
56#define STATS_STOP BUTTON_POWER 56#define STATS_STOP BUTTON_POWER
57 57
58#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 58#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
59(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 59(CONFIG_KEYPAD == SANSA_C200_PAD) || \
60(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
61(CONFIG_KEYPAD == SANSA_M200_PAD)
60#define STATS_STOP BUTTON_POWER 62#define STATS_STOP BUTTON_POWER
61 63
62#elif CONFIG_KEYPAD == IRIVER_H10_PAD 64#elif CONFIG_KEYPAD == IRIVER_H10_PAD
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index 5090305511..debdd5b8b2 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -104,14 +104,18 @@ PLUGIN_HEADER
104#define STOPWATCH_LAP_TIMER BUTTON_MENU 104#define STOPWATCH_LAP_TIMER BUTTON_MENU
105#define STOPWATCH_SCROLL_UP BUTTON_UP 105#define STOPWATCH_SCROLL_UP BUTTON_UP
106#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN 106#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
107
107#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 108#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
108(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 109(CONFIG_KEYPAD == SANSA_C200_PAD) || \
110(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
111(CONFIG_KEYPAD == SANSA_M200_PAD)
109#define STOPWATCH_QUIT BUTTON_POWER 112#define STOPWATCH_QUIT BUTTON_POWER
110#define STOPWATCH_START_STOP BUTTON_RIGHT 113#define STOPWATCH_START_STOP BUTTON_RIGHT
111#define STOPWATCH_RESET_TIMER BUTTON_LEFT 114#define STOPWATCH_RESET_TIMER BUTTON_LEFT
112#define STOPWATCH_LAP_TIMER BUTTON_SELECT 115#define STOPWATCH_LAP_TIMER BUTTON_SELECT
113#define STOPWATCH_SCROLL_UP BUTTON_UP 116#define STOPWATCH_SCROLL_UP BUTTON_UP
114#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN 117#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
118
115#elif CONFIG_KEYPAD == IRIVER_H10_PAD 119#elif CONFIG_KEYPAD == IRIVER_H10_PAD
116#define STOPWATCH_QUIT BUTTON_POWER 120#define STOPWATCH_QUIT BUTTON_POWER
117#define STOPWATCH_START_STOP BUTTON_PLAY 121#define STOPWATCH_START_STOP BUTTON_PLAY
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h
index 83da2e85c7..1cc996d172 100644
--- a/apps/plugins/sudoku/sudoku.h
+++ b/apps/plugins/sudoku/sudoku.h
@@ -162,6 +162,20 @@
162#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL) 162#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
163#define SUDOKU_BUTTON_POSSIBLE BUTTON_HOME 163#define SUDOKU_BUTTON_POSSIBLE BUTTON_HOME
164 164
165#elif (CONFIG_KEYPAD == SANSA_M200_PAD)
166#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
167#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
168#define SUDOKU_BUTTON_UP BUTTON_UP
169#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
170#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
171#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
172#define SUDOKU_BUTTON_TOGGLEBACK BUTTON_VOL_DOWN
173#define SUDOKU_BUTTON_TOGGLE BUTTON_VOL_UP
174#define SUDOKU_BUTTON_ALTTOGGLE (BUTTON_SELECT | BUTTON_REL)
175#define SUDOKU_BUTTON_MENU_PRE BUTTON_POWER
176#define SUDOKU_BUTTON_MENU (BUTTON_POWER | BUTTON_REL)
177#define SUDOKU_BUTTON_POSSIBLE (BUTTON_SELECT | BUTTON_UP)
178
165#elif CONFIG_KEYPAD == MROBE500_PAD 179#elif CONFIG_KEYPAD == MROBE500_PAD
166#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER 180#define SUDOKU_BUTTON_QUIT_PRE BUTTON_POWER
167#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT) 181#define SUDOKU_BUTTON_QUIT (BUTTON_POWER | BUTTON_REPEAT)
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c
index 4cef7c5879..625ab93cc4 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -209,6 +209,18 @@ PLUGIN_HEADER
209#define VIEWER_LINE_UP BUTTON_UP 209#define VIEWER_LINE_UP BUTTON_UP
210#define VIEWER_LINE_DOWN BUTTON_DOWN 210#define VIEWER_LINE_DOWN BUTTON_DOWN
211 211
212/* Sansa M200 keys */
213#elif CONFIG_KEYPAD == SANSA_M200_PAD
214#define VIEWER_QUIT BUTTON_POWER
215#define VIEWER_PAGE_UP BUTTON_VOL_UP
216#define VIEWER_PAGE_DOWN BUTTON_VOL_DOWN
217#define VIEWER_SCREEN_LEFT BUTTON_LEFT
218#define VIEWER_SCREEN_RIGHT BUTTON_RIGHT
219#define VIEWER_MENU (BUTTON_SELECT | BUTTON_UP)
220#define VIEWER_AUTOSCROLL (BUTTON_SELECT | BUTTON_REL)
221#define VIEWER_LINE_UP BUTTON_UP
222#define VIEWER_LINE_DOWN BUTTON_DOWN
223
212/* iriver H10 keys */ 224/* iriver H10 keys */
213#elif CONFIG_KEYPAD == IRIVER_H10_PAD 225#elif CONFIG_KEYPAD == IRIVER_H10_PAD
214#define VIEWER_QUIT BUTTON_POWER 226#define VIEWER_QUIT BUTTON_POWER
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c
index 77f7a707b1..7b29589428 100644
--- a/apps/plugins/vu_meter.c
+++ b/apps/plugins/vu_meter.c
@@ -150,6 +150,19 @@ PLUGIN_HEADER
150#define LABEL_MENU "SELECT" 150#define LABEL_MENU "SELECT"
151#define LABEL_VOLUME "VOL UP/DN" 151#define LABEL_VOLUME "VOL UP/DN"
152 152
153#elif (CONFIG_KEYPAD == SANSA_M200_PAD)
154#define VUMETER_QUIT BUTTON_POWER
155#define VUMETER_HELP (BUTTON_SELECT | BUTTON_UP)
156#define VUMETER_MENU (BUTTON_SELECT | BUTTON_REL)
157#define VUMETER_MENU_EXIT (BUTTON_SELECT | BUTTON_REL)
158#define VUMETER_MENU_EXIT2 BUTTON_POWER
159#define VUMETER_UP BUTTON_VOL_UP
160#define VUMETER_DOWN BUTTON_VOL_DOWN
161#define LABEL_HELP "SELECT + UP"
162#define LABEL_QUIT "POWER"
163#define LABEL_MENU "SELECT"
164#define LABEL_VOLUME "VOL UP/DN"
165
153#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD 166#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
154#define VUMETER_QUIT BUTTON_POWER 167#define VUMETER_QUIT BUTTON_POWER
155#define VUMETER_HELP BUTTON_PLAY 168#define VUMETER_HELP BUTTON_PLAY
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c
index 5e912e90a2..6c44bb486d 100644
--- a/apps/plugins/wormlet.c
+++ b/apps/plugins/wormlet.c
@@ -178,6 +178,18 @@ PLUGIN_HEADER
178#define PLAYERS_TEXT "Up/Down" 178#define PLAYERS_TEXT "Up/Down"
179#define WORMS_TEXT "Left/Right" 179#define WORMS_TEXT "Left/Right"
180 180
181#elif (CONFIG_KEYPAD == SANSA_M200_PAD)
182
183#define BTN_DIR_UP BUTTON_UP
184#define BTN_DIR_DOWN BUTTON_DOWN
185#define BTN_DIR_LEFT BUTTON_LEFT
186#define BTN_DIR_RIGHT BUTTON_RIGHT
187#define BTN_STARTPAUSE (BUTTON_SELECT | BUTTON_REL)
188#define BTN_QUIT BUTTON_POWER
189#define BTN_STOPRESET (BUTTON_SELECT | BUTTON_UP)
190
191#define PLAYERS_TEXT "Up/Down"
192#define WORMS_TEXT "Left/Right"
181 193
182#elif (CONFIG_KEYPAD == IRIVER_H10_PAD) 194#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
183 195
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c
index b6bed51163..dc102b61f5 100644
--- a/apps/plugins/xobox.c
+++ b/apps/plugins/xobox.c
@@ -96,6 +96,14 @@ PLUGIN_HEADER
96#define DOWN BUTTON_DOWN 96#define DOWN BUTTON_DOWN
97#define PAUSE BUTTON_HOME 97#define PAUSE BUTTON_HOME
98 98
99#elif (CONFIG_KEYPAD == SANSA_M200_PAD)
100
101#define QUIT BUTTON_POWER
102#define LEFT BUTTON_LEFT
103#define RIGHT BUTTON_RIGHT
104#define UP BUTTON_UP
105#define DOWN BUTTON_DOWN
106#define PAUSE BUTTON_SELECT
99 107
100#elif CONFIG_KEYPAD == IRIVER_H10_PAD 108#elif CONFIG_KEYPAD == IRIVER_H10_PAD
101 109
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h
index 2145c69565..4d2b4a9384 100644
--- a/apps/plugins/zxbox/keymaps.h
+++ b/apps/plugins/zxbox/keymaps.h
@@ -87,7 +87,9 @@
87#define ZX_DOWN BUTTON_SCROLL_DOWN 87#define ZX_DOWN BUTTON_SCROLL_DOWN
88 88
89#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 89#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
90(CONFIG_KEYPAD == SANSA_C200_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) 90(CONFIG_KEYPAD == SANSA_C200_PAD) || \
91(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
92(CONFIG_KEYPAD == SANSA_M200_PAD)
91#define ZX_SELECT BUTTON_SELECT 93#define ZX_SELECT BUTTON_SELECT
92#define ZX_MENU BUTTON_POWER 94#define ZX_MENU BUTTON_POWER
93#define ZX_LEFT BUTTON_LEFT 95#define ZX_LEFT BUTTON_LEFT
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c
index 6673258bdd..7ae3862fc2 100644
--- a/apps/plugins/zxbox/zxbox_keyb.c
+++ b/apps/plugins/zxbox/zxbox_keyb.c
@@ -113,6 +113,7 @@
113#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ 113#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \
114(CONFIG_KEYPAD == SANSA_C200_PAD) || \ 114(CONFIG_KEYPAD == SANSA_C200_PAD) || \
115(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \ 115(CONFIG_KEYPAD == SANSA_CLIP_PAD) || \
116(CONFIG_KEYPAD == SANSA_M200_PAD) || \
116(CONFIG_KEYPAD == MROBE100_PAD) 117(CONFIG_KEYPAD == MROBE100_PAD)
117 118
118/* TODO: Check keyboard mappings */ 119/* TODO: Check keyboard mappings */
diff --git a/firmware/target/arm/as3525/sansa-m200v4/button-m200v4.c b/firmware/target/arm/as3525/sansa-m200v4/button-m200v4.c
index a10956657f..d6bf0acf9b 100644
--- a/firmware/target/arm/as3525/sansa-m200v4/button-m200v4.c
+++ b/firmware/target/arm/as3525/sansa-m200v4/button-m200v4.c
@@ -41,7 +41,7 @@ int button_read_device(void)
41 41
42 /* direct GPIO connections */ 42 /* direct GPIO connections */
43 if (GPIOA_PIN(3)) 43 if (GPIOA_PIN(3))
44 result |= BUTTON_MENU; 44 result |= BUTTON_POWER;
45 45
46 /* This is a keypad using A4-A6 as columns and A0-A2 as rows */ 46 /* This is a keypad using A4-A6 as columns and A0-A2 as rows */
47 GPIOA_PIN(4) = (1<<4); 47 GPIOA_PIN(4) = (1<<4);
@@ -50,10 +50,10 @@ int button_read_device(void)
50 /* A4A0 is unused */ 50 /* A4A0 is unused */
51 51
52 if (GPIOA_PIN(1)) 52 if (GPIOA_PIN(1))
53 result |= BUTTON_VOLDOWN; 53 result |= BUTTON_VOL_DOWN;
54 54
55 if (GPIOA_PIN(2)) 55 if (GPIOA_PIN(2))
56 result |= BUTTON_PLAYPAUSE; 56 result |= BUTTON_UP;
57 57
58 GPIOA_PIN(4) = 0x00; 58 GPIOA_PIN(4) = 0x00;
59 59
@@ -76,10 +76,10 @@ int button_read_device(void)
76 btn_delay(); 76 btn_delay();
77 77
78 if (GPIOA_PIN(0)) 78 if (GPIOA_PIN(0))
79 result |= BUTTON_REPEATAB; 79 result |= BUTTON_DOWN;
80 80
81 if (GPIOA_PIN(1)) 81 if (GPIOA_PIN(1))
82 result |= BUTTON_VOLUP; 82 result |= BUTTON_VOL_UP;
83 83
84 /* hold button is read in button_hold() */ 84 /* hold button is read in button_hold() */
85 85
diff --git a/firmware/target/arm/as3525/sansa-m200v4/button-target.h b/firmware/target/arm/as3525/sansa-m200v4/button-target.h
index 779f7400bb..49a7409a6b 100644
--- a/firmware/target/arm/as3525/sansa-m200v4/button-target.h
+++ b/firmware/target/arm/as3525/sansa-m200v4/button-target.h
@@ -32,24 +32,24 @@ int button_read_device(void);
32bool button_hold(void); 32bool button_hold(void);
33 33
34/* Main unit's buttons */ 34/* Main unit's buttons */
35#define BUTTON_MENU 0x00000001 35#define BUTTON_POWER 0x00000001
36#define BUTTON_VOLUP 0x00000002 36#define BUTTON_VOL_UP 0x00000002
37#define BUTTON_VOLDOWN 0x00000004 37#define BUTTON_VOL_DOWN 0x00000004
38#define BUTTON_PLAYPAUSE 0x00000008 38#define BUTTON_UP 0x00000008
39#define BUTTON_REPEATAB 0x00000010 39#define BUTTON_DOWN 0x00000010
40#define BUTTON_LEFT 0x00000020 40#define BUTTON_LEFT 0x00000020
41#define BUTTON_RIGHT 0x00000040 41#define BUTTON_RIGHT 0x00000040
42#define BUTTON_SELECT 0x00000080 42#define BUTTON_SELECT 0x00000080
43#define BUTTON_HOLD 0x00000100 43#define BUTTON_HOLD 0x00000100
44 44
45#define BUTTON_MAIN (BUTTON_MENU|BUTTON_VOLUP|BUTTON_VOLDOWN\ 45#define BUTTON_MAIN (BUTTON_POWER|BUTTON_VOL_UP|BUTTON_VOL_DOWN\
46 |BUTTON_PLAYPAUSE|BUTTON_REPEATAB|BUTTON_LEFT\ 46 |BUTTON_UP|BUTTON_DOWN|BUTTON_LEFT\
47 |BUTTON_RIGHT|BUTTON_SELECT|BUTTON_HOLD) 47 |BUTTON_RIGHT|BUTTON_SELECT|BUTTON_HOLD)
48 48
49#define BUTTON_REMOTE 0 49#define BUTTON_REMOTE 0
50 50
51/* Software power-off */ 51/* Software power-off */
52#define POWEROFF_BUTTON BUTTON_MENU 52#define POWEROFF_BUTTON BUTTON_POWER
53#define POWEROFF_COUNT 40 53#define POWEROFF_COUNT 40
54 54
55#endif /* _BUTTON_TARGET_H_ */ 55#endif /* _BUTTON_TARGET_H_ */
diff --git a/tools/configure b/tools/configure
index 10035409b7..1d98ca8a6c 100755
--- a/tools/configure
+++ b/tools/configure
@@ -1727,7 +1727,7 @@ fi
1727 output="rockbox.sansa" 1727 output="rockbox.sansa"
1728 bootoutput="bootloader-m200v4.sansa" 1728 bootoutput="bootloader-m200v4.sansa"
1729 appextra="recorder:gui" 1729 appextra="recorder:gui"
1730 plugins="" 1730 plugins="yes"
1731 swcodec="yes" 1731 swcodec="yes"
1732 toolset=$scramblebitmaptools 1732 toolset=$scramblebitmaptools
1733 t_cpu="arm" 1733 t_cpu="arm"