summaryrefslogtreecommitdiff
path: root/apps/keymaps/keymap-m3.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2008-03-14 00:17:59 +0000
committerJens Arnold <amiconn@rockbox.org>2008-03-14 00:17:59 +0000
commit919c20669bf7570275c2650434409a885c842d6c (patch)
treea77a009d0a44de163ad8107899161b0ef335462c /apps/keymaps/keymap-m3.c
parentab974bc86efbdce30e6ca6688401d9a329e91f15 (diff)
downloadrockbox-919c20669bf7570275c2650434409a885c842d6c.tar.gz
rockbox-919c20669bf7570275c2650434409a885c842d6c.zip
More M3 work: Rockbox logo, keymap, sim definitions, sim bitmap. Simulator builds and works now, but for some reason it tries to build plugins even though they're deactivated through configure... The keymap probably needs further refinement.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16658 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/keymaps/keymap-m3.c')
-rw-r--r--apps/keymaps/keymap-m3.c488
1 files changed, 488 insertions, 0 deletions
diff --git a/apps/keymaps/keymap-m3.c b/apps/keymaps/keymap-m3.c
new file mode 100644
index 0000000000..5f02bfeb69
--- /dev/null
+++ b/apps/keymaps/keymap-m3.c
@@ -0,0 +1,488 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2008 Jens Arnold
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20/* *
21 * Button Code Definitions for iaudio M3 targets
22 */
23
24#include "config.h"
25#include "action.h"
26#include "button.h"
27#include "settings.h"
28
29/* CONTEXT_CUSTOM's used in this file...
30
31CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
32
33
34*/
35
36/** Keep things alphabetized for easy reference but standard contexts can
37 ** be first and sub-alphebetized.
38 **/
39
40/** Standard Button Contexts **/
41static const struct button_mapping button_context_standard[] = {
42 { ACTION_STD_PREV, BUTTON_VOL_UP, BUTTON_NONE },
43 { ACTION_STD_PREVREPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
44 { ACTION_STD_NEXT, BUTTON_VOL_DOWN, BUTTON_NONE },
45 { ACTION_STD_NEXTREPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
46
47 { ACTION_STD_CONTEXT, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE },
48 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
49 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
50 { ACTION_STD_OK, BUTTON_PLAY, BUTTON_NONE },
51 { ACTION_STD_MENU, BUTTON_REC|BUTTON_REL, BUTTON_REC },
52 { ACTION_STD_QUICKSCREEN, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC },
53
54 LAST_ITEM_IN_LIST
55}; /* button_context_standard */
56
57static const struct button_mapping remote_button_context_standard[] = {
58 { ACTION_STD_PREV, BUTTON_VOL_UP, BUTTON_NONE },
59 { ACTION_STD_PREVREPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
60 { ACTION_STD_NEXT, BUTTON_VOL_DOWN, BUTTON_NONE },
61 { ACTION_STD_NEXTREPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
62
63 { ACTION_STD_CONTEXT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE },
64 { ACTION_STD_CANCEL, BUTTON_RC_REW, BUTTON_NONE },
65 { ACTION_STD_OK, BUTTON_RC_FF, BUTTON_NONE },
66 { ACTION_STD_OK, BUTTON_RC_PLAY, BUTTON_NONE },
67 { ACTION_STD_MENU, BUTTON_RC_MENU|BUTTON_REL, BUTTON_RC_MENU },
68 { ACTION_STD_QUICKSCREEN, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_RC_MENU },
69
70 LAST_ITEM_IN_LIST
71}; /* remote_button_context_standard */
72
73/** Bookmark Screen **/
74static const struct button_mapping button_context_bmark[] = {
75 { ACTION_BMS_DELETE, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC },
76
77 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
78}; /* button_context_settings_bmark */
79
80static const struct button_mapping remote_button_context_bmark[] = {
81 { ACTION_BMS_DELETE, BUTTON_RC_REC|BUTTON_REPEAT, BUTTON_RC_REC },
82
83 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
84}; /* button_context_settings_bmark */
85
86/** FM Radio Screen **/
87static const struct button_mapping button_context_radio[] = {
88 { ACTION_FM_MENU, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE },
89 { ACTION_FM_PRESET, BUTTON_MODE|BUTTON_REL, BUTTON_MODE },
90 { ACTION_FM_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
91 { ACTION_FM_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
92 { ACTION_FM_MODE, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC },
93 { ACTION_FM_EXIT, BUTTON_REC|BUTTON_REL, BUTTON_REC },
94 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
95 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
96 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
97
98 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
99}; /* button_context_radio */
100
101static const struct button_mapping remote_button_context_radio[] = {
102 { ACTION_FM_MENU, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE },
103 { ACTION_FM_PRESET, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE },
104 { ACTION_FM_STOP, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
105 { ACTION_FM_PLAY, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
106 { ACTION_FM_MODE, BUTTON_RC_REC|BUTTON_REPEAT, BUTTON_RC_REC },
107 { ACTION_FM_EXIT, BUTTON_RC_MENU, BUTTON_NONE },
108 { ACTION_STD_PREVREPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
109 { ACTION_STD_NEXT, BUTTON_RC_FF, BUTTON_NONE },
110 { ACTION_STD_NEXTREPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
111
112 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
113}; /* remote_button_context_radio */
114
115/** Keyboard **/
116static const struct button_mapping button_context_keyboard[] = {
117 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
118 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
119 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
120 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
121 { ACTION_KBD_UP, BUTTON_VOL_UP, BUTTON_NONE },
122 { ACTION_KBD_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
123 { ACTION_KBD_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
124 { ACTION_KBD_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
125 { ACTION_KBD_PAGE_FLIP, BUTTON_MODE, BUTTON_NONE },
126 { ACTION_KBD_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
127 { ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
128 { ACTION_KBD_ABORT, BUTTON_REC, BUTTON_NONE },
129
130 LAST_ITEM_IN_LIST
131}; /* button_context_keyboard */
132
133static const struct button_mapping remote_button_context_keyboard[] = {
134 { ACTION_KBD_LEFT, BUTTON_RC_REW, BUTTON_NONE },
135 { ACTION_KBD_LEFT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
136 { ACTION_KBD_RIGHT, BUTTON_RC_FF, BUTTON_NONE },
137 { ACTION_KBD_RIGHT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
138 { ACTION_KBD_UP, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
139 { ACTION_KBD_UP, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
140 { ACTION_KBD_DOWN, BUTTON_RC_VOL_UP, BUTTON_NONE },
141 { ACTION_KBD_DOWN, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
142 { ACTION_KBD_PAGE_FLIP, BUTTON_RC_MODE, BUTTON_NONE },
143 { ACTION_KBD_SELECT, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_PLAY },
144 { ACTION_KBD_DONE, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
145 { ACTION_KBD_ABORT, BUTTON_RC_REC, BUTTON_NONE },
146
147 LAST_ITEM_IN_LIST
148}; /* remote_button_context_keyboard */
149
150/** Pitchscreen **/
151static const struct button_mapping button_context_pitchscreen[] = {
152 { ACTION_PS_INC_SMALL, BUTTON_VOL_UP, BUTTON_NONE },
153 { ACTION_PS_INC_BIG, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
154 { ACTION_PS_DEC_SMALL, BUTTON_VOL_DOWN, BUTTON_NONE },
155 { ACTION_PS_DEC_BIG, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
156 { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
157 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
158 { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
159 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
160 { ACTION_PS_TOGGLE_MODE, BUTTON_MODE, BUTTON_NONE },
161 { ACTION_PS_RESET, BUTTON_REC, BUTTON_NONE },
162 { ACTION_PS_EXIT, BUTTON_PLAY, BUTTON_NONE },
163
164 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
165}; /* button_context_pitchscreen */
166
167static const struct button_mapping remote_button_context_pitchscreen[] = {
168 { ACTION_PS_INC_SMALL, BUTTON_RC_VOL_UP, BUTTON_NONE },
169 { ACTION_PS_INC_BIG, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
170 { ACTION_PS_DEC_SMALL, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
171 { ACTION_PS_DEC_BIG, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
172 { ACTION_PS_NUDGE_LEFT, BUTTON_RC_REW, BUTTON_NONE },
173 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_RC_REW|BUTTON_REL, BUTTON_NONE },
174 { ACTION_PS_NUDGE_RIGHT, BUTTON_RC_FF, BUTTON_NONE },
175 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RC_FF|BUTTON_REL, BUTTON_NONE },
176 { ACTION_PS_TOGGLE_MODE, BUTTON_RC_MODE, BUTTON_NONE },
177 { ACTION_PS_RESET, BUTTON_RC_REC, BUTTON_NONE },
178 { ACTION_PS_EXIT, BUTTON_RC_PLAY, BUTTON_NONE },
179
180 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
181}; /* remote_button_context_pitchscreen */
182
183/** Quickscreen **/
184static const struct button_mapping button_context_quickscreen[] = {
185 { ACTION_QS_DOWNINV, BUTTON_VOL_UP, BUTTON_NONE },
186 { ACTION_QS_DOWNINV, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
187 { ACTION_QS_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
188 { ACTION_QS_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
189 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
190 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
191 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
192 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
193 { ACTION_STD_CANCEL, BUTTON_REC, BUTTON_NONE },
194
195 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
196}; /* button_context_quickscreen */
197
198static const struct button_mapping remote_button_context_quickscreen[] = {
199 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP, BUTTON_NONE },
200 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
201 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
202 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
203 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE },
204 { ACTION_QS_LEFT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
205 { ACTION_QS_RIGHT, BUTTON_RC_FF, BUTTON_NONE },
206 { ACTION_QS_RIGHT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
207 { ACTION_STD_CANCEL, BUTTON_RC_REC, BUTTON_NONE },
208
209 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
210}; /* remote_button_context_quickscreen */
211
212/** Recording Screen **/
213static const struct button_mapping button_context_recscreen[] = {
214 { ACTION_REC_PAUSE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
215 { ACTION_STD_CANCEL, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
216 { ACTION_REC_NEWFILE, BUTTON_REC|BUTTON_REL, BUTTON_REC },
217 { ACTION_STD_MENU, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC },
218 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
219 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
220 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
221 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
222
223 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
224}; /* button_context_recscreen */
225
226static const struct button_mapping remote_button_context_recscreen[] = {
227 { ACTION_REC_PAUSE, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
228 { ACTION_STD_CANCEL, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
229 { ACTION_REC_NEWFILE, BUTTON_RC_REC, BUTTON_NONE },
230 { ACTION_STD_MENU, BUTTON_RC_MENU, BUTTON_NONE },
231 { ACTION_SETTINGS_INC, BUTTON_RC_FF, BUTTON_NONE },
232 { ACTION_SETTINGS_INCREPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
233 { ACTION_SETTINGS_DEC, BUTTON_RC_REW, BUTTON_NONE },
234 { ACTION_SETTINGS_DECREPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
235
236 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
237}; /* remote_button_context_recscreen */
238
239/** Settings - General Mappings **/
240static const struct button_mapping button_context_settings[] = {
241 { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE },
242 { ACTION_SETTINGS_INCREPEAT, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
243 { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
244 { ACTION_SETTINGS_DECREPEAT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
245 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
246 { ACTION_STD_CANCEL, BUTTON_REC, BUTTON_NONE },
247
248 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
249}; /* button_context_settings */
250
251static const struct button_mapping remote_button_context_settings[] = {
252 { ACTION_SETTINGS_INC, BUTTON_RC_VOL_UP, BUTTON_NONE },
253 { ACTION_SETTINGS_INCREPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
254 { ACTION_SETTINGS_DEC, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
255 { ACTION_SETTINGS_DECREPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
256 { ACTION_STD_PREV, BUTTON_RC_REW, BUTTON_NONE },
257 { ACTION_STD_CANCEL, BUTTON_RC_REC, BUTTON_NONE },
258
259 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
260}; /* remote_button_context_settings */
261
262/** Settings - Using Sliders **/
263static const struct button_mapping button_context_settings_r_is_inc[] = {
264 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
265 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
266 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
267 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
268 { ACTION_STD_CANCEL, BUTTON_REC, BUTTON_NONE },
269
270 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
271}; /* button_context_settings_r_is_inc */
272
273static const struct button_mapping remote_button_context_settings_r_is_inc[] = {
274 { ACTION_SETTINGS_INC, BUTTON_RC_FF, BUTTON_NONE },
275 { ACTION_SETTINGS_INCREPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
276 { ACTION_SETTINGS_DEC, BUTTON_RC_REW, BUTTON_NONE },
277 { ACTION_SETTINGS_DECREPEAT, BUTTON_RC_REW|BUTTON_REPEAT,BUTTON_NONE },
278 { ACTION_STD_CANCEL, BUTTON_RC_REC, BUTTON_NONE },
279
280 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
281}; /* remote_button_context_settings_r_is_inc */
282
283/** Tree **/
284static const struct button_mapping button_context_tree[] = {
285 { ACTION_NONE, BUTTON_PLAY, BUTTON_NONE },
286 { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
287 { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
288
289 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
290}; /* button_context_tree */
291
292static const struct button_mapping remote_button_context_tree[] = {
293 { ACTION_NONE, BUTTON_RC_PLAY, BUTTON_NONE },
294 { ACTION_TREE_WPS, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
295 { ACTION_TREE_WPS, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
296
297 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
298}; /* remote_button_context_tree */
299
300static const struct button_mapping button_context_tree_scroll_lr[] = {
301 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
302 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
303 { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
304 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
305 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
306 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
307 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
308 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
309 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
310
311 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
312}; /* button_context_tree_scroll_lr */
313
314static const struct button_mapping remote_button_context_tree_scroll_lr[] = {
315 { ACTION_NONE, BUTTON_RC_REW, BUTTON_NONE },
316 { ACTION_STD_CANCEL, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
317 { ACTION_TREE_ROOT_INIT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW },
318 { ACTION_TREE_PGLEFT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
319 { ACTION_TREE_PGLEFT, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW|BUTTON_REPEAT },
320 { ACTION_NONE, BUTTON_RC_FF, BUTTON_NONE },
321 { ACTION_STD_OK, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
322 { ACTION_TREE_PGRIGHT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
323 { ACTION_TREE_PGRIGHT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF|BUTTON_REPEAT },
324
325 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
326}; /* remote_button_context_tree_scroll_lr */
327
328/** While-Playing Screen (WPS) **/
329static const struct button_mapping button_context_wps[] = {
330 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
331 { ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
332 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
333 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
334 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
335 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
336 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
337 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
338
339 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
340 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
341 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
342 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
343
344 { ACTION_WPS_BROWSE, BUTTON_MODE|BUTTON_REL, BUTTON_MODE },
345 { ACTION_WPS_CONTEXT, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE },
346 { ACTION_WPS_MENU, BUTTON_REC|BUTTON_REL, BUTTON_REC },
347 { ACTION_WPS_QUICKSCREEN, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC },
348
349 LAST_ITEM_IN_LIST
350}; /* button_context_wps */
351
352static const struct button_mapping remote_button_context_wps[] = {
353 { ACTION_WPS_PLAY, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
354 { ACTION_WPS_STOP, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
355 { ACTION_WPS_SKIPPREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
356 { ACTION_WPS_SEEKBACK, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
357 { ACTION_WPS_STOPSEEK, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW|BUTTON_REPEAT },
358 { ACTION_WPS_SKIPNEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
359 { ACTION_WPS_SEEKFWD, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
360 { ACTION_WPS_STOPSEEK, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF|BUTTON_REPEAT },
361
362 { ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
363 { ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
364 { ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP, BUTTON_NONE },
365 { ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
366
367 { ACTION_WPS_BROWSE, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE },
368 { ACTION_WPS_CONTEXT, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE },
369 { ACTION_WPS_MENU, BUTTON_RC_MENU|BUTTON_REL, BUTTON_RC_MENU },
370 { ACTION_WPS_QUICKSCREEN, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_RC_MENU },
371
372 LAST_ITEM_IN_LIST
373}; /* remote_button_context_wps */
374
375/** Yes/No Screen **/
376static const struct button_mapping button_context_yesnoscreen[] = {
377 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
378 LAST_ITEM_IN_LIST
379}; /* button_context_yesnoscreen */
380
381static const struct button_mapping remote_button_context_yesnoscreen[] = {
382 { ACTION_YESNO_ACCEPT, BUTTON_RC_PLAY, BUTTON_NONE },
383 LAST_ITEM_IN_LIST
384}; /* remote_button_context_yesnoscreen */
385
386
387static const struct button_mapping* get_context_mapping_remote( int context )
388{
389 context ^= CONTEXT_REMOTE;
390
391 switch (context)
392 {
393 /* anything that uses remote_button_context_standard */
394 default:
395 return remote_button_context_standard;
396
397 /* remote contexts with special mapping */
398 case CONTEXT_BOOKMARKSCREEN:
399 return remote_button_context_bmark;
400
401 case CONTEXT_FM:
402 return remote_button_context_radio;
403
404 case CONTEXT_KEYBOARD:
405 return remote_button_context_keyboard;
406
407 case CONTEXT_PITCHSCREEN:
408 return remote_button_context_pitchscreen;
409
410 case CONTEXT_QUICKSCREEN:
411 return remote_button_context_quickscreen;
412
413 case CONTEXT_RECSCREEN:
414 return remote_button_context_recscreen;
415
416 case CONTEXT_SETTINGS:
417 return remote_button_context_settings;
418
419 case CONTEXT_SETTINGS_EQ:
420 return remote_button_context_settings_r_is_inc;
421
422 case CONTEXT_TREE:
423 case CONTEXT_MAINMENU:
424 if (global_settings.hold_lr_for_scroll_in_list)
425 return remote_button_context_tree_scroll_lr;
426 /* else fall through to CONTEXT_TREE|CONTEXT_CUSTOM */
427 case CONTEXT_TREE|CONTEXT_CUSTOM:
428 return remote_button_context_tree;
429
430 case CONTEXT_WPS:
431 return remote_button_context_wps;
432
433 case CONTEXT_YESNOSCREEN:
434 return remote_button_context_yesnoscreen;
435 }
436}
437
438const struct button_mapping* get_context_mapping(int context)
439{
440 if (context & CONTEXT_REMOTE)
441 return get_context_mapping_remote(context);
442
443 switch (context)
444 {
445 /* anything that uses button_context_standard */
446 default:
447 return button_context_standard;
448
449 /* contexts with special mapping */
450 case CONTEXT_BOOKMARKSCREEN:
451 return button_context_bmark;
452
453 case CONTEXT_FM:
454 return button_context_radio;
455
456 case CONTEXT_KEYBOARD:
457 return button_context_keyboard;
458
459 case CONTEXT_PITCHSCREEN:
460 return button_context_pitchscreen;
461
462 case CONTEXT_QUICKSCREEN:
463 return button_context_quickscreen;
464
465 case CONTEXT_RECSCREEN:
466 return button_context_recscreen;
467
468 case CONTEXT_SETTINGS:
469 return button_context_settings;
470
471 case CONTEXT_SETTINGS_EQ:
472 return button_context_settings_r_is_inc;
473
474 case CONTEXT_TREE:
475 case CONTEXT_MAINMENU:
476 if (global_settings.hold_lr_for_scroll_in_list)
477 return button_context_tree_scroll_lr;
478 /* else fall through to CONTEXT_TREE|CONTEXT_CUSTOM */
479 case CONTEXT_TREE|CONTEXT_CUSTOM:
480 return button_context_tree;
481
482 case CONTEXT_WPS:
483 return button_context_wps;
484
485 case CONTEXT_YESNOSCREEN:
486 return button_context_yesnoscreen;
487 }
488}