summaryrefslogtreecommitdiff
path: root/apps/keymaps/keymap-gigabeat.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/keymaps/keymap-gigabeat.c')
-rw-r--r--apps/keymaps/keymap-gigabeat.c266
1 files changed, 266 insertions, 0 deletions
diff --git a/apps/keymaps/keymap-gigabeat.c b/apps/keymaps/keymap-gigabeat.c
new file mode 100644
index 0000000000..1c01817dfe
--- /dev/null
+++ b/apps/keymaps/keymap-gigabeat.c
@@ -0,0 +1,266 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2006 Jonathan Gordon
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/* Button Code Definitions for the toshiba gigabeat target */
21#include <stdio.h>
22#include <string.h>
23#include <stdlib.h>
24
25#include "config.h"
26#include "action.h"
27#include "button.h"
28#include "settings.h"
29
30/*
31 * The format of the list is as follows
32 * { Action Code, Button code, Prereq button code }
33 * if there's no need to check the previous button's value, use BUTTON_NONE
34 * Insert LAST_ITEM_IN_LIST at the end of each mapping
35 */
36
37/* CONTEXT_CUSTOM's used in this file...
38
39CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
40CONTEXT_CUSTOM|CONTEXT_SETTINGS = the direction keys for the eq/col picker screens
41 i.e where up/down is inc/dec
42 CONTEXT_SETTINGS = up/down is prev/next, l/r is inc/dec
43
44*/
45
46
47const struct button_mapping button_context_standard[] = {
48 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
49 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
50 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
51 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
52
53 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
54 { ACTION_STD_CANCEL, BUTTON_A, BUTTON_NONE },
55
56 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT },
57
58 { ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
59 { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
60 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
61 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
62 { ACTION_STD_OK, BUTTON_POWER|BUTTON_REL, BUTTON_NONE },
63
64 LAST_ITEM_IN_LIST
65}; /* button_context_standard */
66
67
68const struct button_mapping button_context_wps[] = {
69 { ACTION_WPS_PLAY, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
70 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
71 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
72 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
73 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
74 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
75 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
76 { ACTION_WPS_ABSETB_NEXTDIR, BUTTON_POWER|BUTTON_RIGHT, BUTTON_POWER },
77 { ACTION_WPS_ABSETA_PREVDIR, BUTTON_POWER|BUTTON_LEFT, BUTTON_POWER },
78 { ACTION_WPS_STOP, BUTTON_A|BUTTON_REL, BUTTON_A },
79 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
80 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
81 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
82 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
83 { ACTION_WPS_PITCHSCREEN, BUTTON_POWER|BUTTON_UP, BUTTON_POWER },
84 { ACTION_WPS_PITCHSCREEN, BUTTON_POWER|BUTTON_DOWN, BUTTON_POWER },
85 { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
86 { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
87 { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
88 { ACTION_WPS_BROWSE, BUTTON_POWER|BUTTON_REL, BUTTON_SELECT },
89 { ACTION_WPSAB_RESET, BUTTON_POWER|BUTTON_SELECT, BUTTON_POWER },
90 { ACTION_WPS_ID3SCREEN, BUTTON_POWER|BUTTON_MENU, BUTTON_NONE },
91
92 LAST_ITEM_IN_LIST
93}; /* button_context_wps */
94
95const struct button_mapping button_context_list[] = {
96 { ACTION_LISTTREE_PGUP, BUTTON_POWER|BUTTON_UP, BUTTON_POWER },
97 { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_POWER|BUTTON_UP },
98 { ACTION_LISTTREE_PGUP, BUTTON_POWER|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
99 { ACTION_LISTTREE_PGDOWN, BUTTON_POWER|BUTTON_DOWN, BUTTON_POWER },
100 { ACTION_LISTTREE_PGDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_POWER|BUTTON_DOWN },
101 { ACTION_LISTTREE_PGDOWN, BUTTON_POWER|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
102 LAST_ITEM_IN_LIST
103}; /* button_context_list */
104
105const struct button_mapping button_context_tree[] = {
106 { ACTION_TREE_WPS, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
107 { ACTION_TREE_STOP, BUTTON_A, BUTTON_NONE },
108 { ACTION_TREE_STOP, BUTTON_A|BUTTON_REL, BUTTON_A },
109 { ACTION_TREE_STOP, BUTTON_A|BUTTON_REPEAT, BUTTON_NONE },
110
111 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
112}; /* button_context_tree */
113
114const struct button_mapping button_context_listtree_scroll_with_combo[] = {
115 { ACTION_NONE, BUTTON_POWER, BUTTON_NONE },
116 { ACTION_TREE_PGLEFT, BUTTON_POWER|BUTTON_LEFT, BUTTON_POWER },
117 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_POWER|BUTTON_LEFT },
118 { ACTION_TREE_PGLEFT, BUTTON_POWER|BUTTON_LEFT, BUTTON_LEFT|BUTTON_REL },
119 { ACTION_TREE_PGLEFT, BUTTON_POWER|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
120 { ACTION_TREE_PGRIGHT, BUTTON_POWER|BUTTON_RIGHT, BUTTON_POWER },
121 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_POWER|BUTTON_RIGHT },
122 { ACTION_TREE_PGRIGHT, BUTTON_POWER|BUTTON_RIGHT, BUTTON_RIGHT|BUTTON_REL },
123 { ACTION_TREE_PGRIGHT, BUTTON_POWER|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
124 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
125};
126
127const struct button_mapping button_context_listtree_scroll_without_combo[] = {
128 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
129 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
130 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
131 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
132 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
133 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
134 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
135 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
136 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
137};
138
139const struct button_mapping button_context_settings[] = {
140 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
141 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
142 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
143 { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
144 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
145 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
146 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
147 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
148 { ACTION_SETTINGS_RESET, BUTTON_POWER, BUTTON_NONE },
149
150 LAST_ITEM_IN_LIST
151}; /* button_context_settings */
152
153const struct button_mapping button_context_settings_right_is_inc[] = {
154 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
155 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
156 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
157 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
158 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
159 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
160 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
161 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
162 { ACTION_SETTINGS_RESET, BUTTON_POWER, BUTTON_NONE },
163
164 LAST_ITEM_IN_LIST
165}; /* button_context_settingsgraphical */
166
167const struct button_mapping button_context_yesno[] = {
168 { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
169 LAST_ITEM_IN_LIST
170}; /* button_context_settings_yesno */
171
172const struct button_mapping button_context_colorchooser[] = {
173 { ACTION_STD_OK, BUTTON_POWER|BUTTON_REL, BUTTON_NONE },
174 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
175}; /* button_context_settings_bmark */
176
177const struct button_mapping button_context_eq[] = {
178 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
179 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
180}; /* button_context_settings_bmark */
181
182const struct button_mapping button_context_bmark[] = {
183 { ACTION_BMS_DELETE, BUTTON_POWER, BUTTON_NONE },
184 { ACTION_STD_OK, BUTTON_SELECT, BUTTON_NONE },
185 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
186}; /* button_context_settings_bmark */
187
188const struct button_mapping button_context_time[] = {
189 { ACTION_STD_CANCEL, BUTTON_A, BUTTON_NONE },
190 { ACTION_STD_OK, BUTTON_POWER, BUTTON_NONE },
191 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
192}; /* button_context_settings_bmark */
193
194const struct button_mapping button_context_quickscreen[] = {
195 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE },
196 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
197 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
198 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
199 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
200 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
201 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
202 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
203 { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
204
205 LAST_ITEM_IN_LIST
206}; /* button_context_quickscreen */
207
208const struct button_mapping button_context_pitchscreen[] = {
209 { ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
210 { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
211 { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
212 { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
213 { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
214 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
215 { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
216 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
217 { ACTION_PS_RESET, BUTTON_POWER, BUTTON_NONE },
218 { ACTION_PS_EXIT, BUTTON_A, BUTTON_NONE },
219
220 LAST_ITEM_IN_LIST
221}; /* button_context_pitchcreen */
222
223const struct button_mapping* get_context_mapping(int context)
224{
225 switch (context)
226 {
227 case CONTEXT_STD:
228 case CONTEXT_MAINMENU:
229 return button_context_standard;
230 case CONTEXT_WPS:
231 return button_context_wps;
232
233 case CONTEXT_LIST:
234 return button_context_list;
235 case CONTEXT_TREE:
236 if (global_settings.hold_lr_for_scroll_in_list)
237 return button_context_listtree_scroll_without_combo;
238 else
239 return button_context_listtree_scroll_with_combo;
240 case CONTEXT_CUSTOM|CONTEXT_TREE:
241 return button_context_tree;
242
243 case CONTEXT_SETTINGS:
244 return button_context_settings;
245 case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
246 return button_context_settings_right_is_inc;
247
248 case CONTEXT_SETTINGS_COLOURCHOOSER:
249 return button_context_colorchooser;
250 case CONTEXT_SETTINGS_EQ:
251 return button_context_eq;
252
253 case CONTEXT_SETTINGS_TIME:
254 return button_context_time;
255
256 case CONTEXT_YESNOSCREEN:
257 return button_context_yesno;
258 case CONTEXT_BOOKMARKSCREEN:
259 return button_context_bmark;
260 case CONTEXT_QUICKSCREEN:
261 return button_context_quickscreen;
262 case CONTEXT_PITCHSCREEN:
263 return button_context_pitchscreen;
264 }
265 return button_context_standard;
266}