summaryrefslogtreecommitdiff
path: root/apps/keymaps/keymap-e200.c
diff options
context:
space:
mode:
authorBarry Wardell <rockbox@barrywardell.net>2006-10-26 13:38:09 +0000
committerBarry Wardell <rockbox@barrywardell.net>2006-10-26 13:38:09 +0000
commit24f4a2a8cfd561657ce25ebf93470716f07397fe (patch)
treef411d86cb56bd128fe0206d148005f0a882f686a /apps/keymaps/keymap-e200.c
parent34193e5cf23e7d739c2ccda0ed82e77492578cef (diff)
downloadrockbox-24f4a2a8cfd561657ce25ebf93470716f07397fe.tar.gz
rockbox-24f4a2a8cfd561657ce25ebf93470716f07397fe.zip
Allow the Sansa e200 UI simulator to be built. Thanks to Andre Smith for the nice image of the Sansa. Lots more to be done including testing and tweaking the keymaps and modifying the plugins for the Sansa's 176x220 LCD.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11351 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/keymaps/keymap-e200.c')
-rw-r--r--apps/keymaps/keymap-e200.c252
1 files changed, 252 insertions, 0 deletions
diff --git a/apps/keymaps/keymap-e200.c b/apps/keymaps/keymap-e200.c
new file mode 100644
index 0000000000..1c90e46592
--- /dev/null
+++ b/apps/keymaps/keymap-e200.c
@@ -0,0 +1,252 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) Barry Wardell 2006
10 *
11 * All files in this archive are subject to the GNU General Public License.
12 * See the file COPYING in the source tree root for full license agreement.
13 *
14 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
15 * KIND, either express or implied.
16 *
17 ****************************************************************************/
18
19/* Button Code Definitions for iriver H10 target */
20
21#include "config.h"
22#include "action.h"
23#include "button.h"
24#include "settings.h"
25
26/* {Action Code, Button code, Prereq button code } */
27
28/*
29 * The format of the list is as follows
30 * { Action Code, Button code, Prereq button code }
31 * if there's no need to check the previous button's value, use BUTTON_NONE
32 * Insert LAST_ITEM_IN_LIST at the end of each mapping
33 */
34const struct button_mapping button_context_standard[] = {
35 { ACTION_STD_PREV, BUTTON_SCROLL_UP, BUTTON_NONE },
36 { ACTION_STD_PREVREPEAT, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
37 { ACTION_STD_NEXT, BUTTON_SCROLL_DOWN, BUTTON_NONE },
38 { ACTION_STD_NEXTREPEAT, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
39
40 { ACTION_STD_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
41 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
42 { ACTION_STD_CONTEXT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
43 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
44 { ACTION_STD_QUICKSCREEN, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
45
46 /* TODO: this is a bit of a hack so that we can exit some debug screens
47 * (audio, tagcache, dircache, hwinfo, stack, ports). They don't like it
48 * when ACTION_STD_CANCEL has anything other than BUTTON_NONE for prereq.
49 */
50 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_RIGHT, BUTTON_NONE },
51
52 LAST_ITEM_IN_LIST
53}; /* button_context_standard */
54
55const struct button_mapping button_context_wps[] = {
56 { ACTION_WPS_PLAY, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
57 { ACTION_WPS_STOP, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT },
58 { ACTION_WPS_SKIPPREV, BUTTON_UP|BUTTON_REL, BUTTON_UP},
59 { ACTION_WPS_SEEKBACK, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
60 { ACTION_WPS_STOPSEEK, BUTTON_UP|BUTTON_REL, BUTTON_UP|BUTTON_REPEAT },
61 { ACTION_WPS_SKIPNEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
62 { ACTION_WPS_SEEKFWD, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
63 { ACTION_WPS_STOPSEEK, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN|BUTTON_REPEAT },
64
65 { ACTION_WPS_ABSETB_NEXTDIR, BUTTON_POWER|BUTTON_DOWN, BUTTON_POWER },
66 { ACTION_WPS_ABSETA_PREVDIR, BUTTON_POWER|BUTTON_UP, BUTTON_POWER },
67 { ACTION_WPSAB_RESET, BUTTON_POWER|BUTTON_SELECT, BUTTON_POWER },
68
69 { ACTION_WPS_VOLDOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE },
70 { ACTION_WPS_VOLDOWN, BUTTON_SCROLL_DOWN|BUTTON_REPEAT,BUTTON_NONE },
71 { ACTION_WPS_VOLUP, BUTTON_SCROLL_UP, BUTTON_NONE },
72 { ACTION_WPS_VOLUP, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
73
74 { ACTION_WPS_BROWSE, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
75 { ACTION_WPS_CONTEXT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
76 { ACTION_WPS_QUICKSCREEN, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
77 { ACTION_WPS_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
78 { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_LEFT, BUTTON_SELECT },
79 { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_RIGHT, BUTTON_SELECT },
80
81 LAST_ITEM_IN_LIST
82}; /* button_context_wps */
83
84const struct button_mapping button_context_settings[] = {
85 { ACTION_SETTINGS_INC, BUTTON_SCROLL_UP, BUTTON_NONE },
86 { ACTION_SETTINGS_INCREPEAT,BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
87 { ACTION_SETTINGS_DEC, BUTTON_SCROLL_DOWN, BUTTON_NONE },
88 { ACTION_SETTINGS_DECREPEAT,BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
89 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
90 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
91 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
92 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
93 { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE },
94
95 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
96}; /* button_context_settings */
97
98const struct button_mapping button_context_list[] = {
99 { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_UP },
100 { ACTION_LISTTREE_PGDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
101
102 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
103}; /* button_context_list */
104
105const struct button_mapping button_context_tree[] = {
106 { ACTION_TREE_WPS, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
107 { ACTION_TREE_STOP, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
108
109 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
110}; /* button_context_tree */
111
112const struct button_mapping button_context_listtree_scroll_without_combo[] = {
113 { ACTION_TREE_ROOT_INIT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
114 { ACTION_TREE_PGLEFT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
115 { ACTION_TREE_PGRIGHT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
116 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
117}; /* button_context_listtree_scroll_without_combo */
118
119const struct button_mapping button_context_listtree_scroll_with_combo[] = {
120 { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
121 { ACTION_LISTTREE_PGDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
122 { ACTION_TREE_PGLEFT, BUTTON_UP|BUTTON_SELECT, BUTTON_SELECT },
123 { ACTION_TREE_PGLEFT, BUTTON_UP|BUTTON_REL, BUTTON_UP|BUTTON_SELECT },
124 { ACTION_TREE_PGLEFT, BUTTON_UP|BUTTON_SELECT, BUTTON_UP|BUTTON_REL },
125 { ACTION_TREE_ROOT_INIT, BUTTON_UP|BUTTON_SELECT|BUTTON_REPEAT, BUTTON_UP|BUTTON_SELECT },
126 { ACTION_TREE_PGLEFT, BUTTON_UP|BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE },
127 { ACTION_TREE_PGRIGHT, BUTTON_DOWN|BUTTON_SELECT, BUTTON_SELECT },
128 { ACTION_TREE_PGRIGHT, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN|BUTTON_SELECT },
129 { ACTION_TREE_PGRIGHT, BUTTON_DOWN|BUTTON_SELECT, BUTTON_DOWN|BUTTON_REL },
130 { ACTION_TREE_PGRIGHT, BUTTON_DOWN|BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE },
131 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
132}; /* button_context_listtree_scroll_with_combo */
133
134const struct button_mapping button_context_yesno[] = {
135 { ACTION_YESNO_ACCEPT, BUTTON_RIGHT, BUTTON_NONE },
136 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
137}; /* button_context_settings_yesno */
138
139const struct button_mapping button_context_quickscreen[] = {
140 { ACTION_QS_DOWNINV, BUTTON_SCROLL_UP, BUTTON_NONE },
141 { ACTION_QS_DOWNINV, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
142 { ACTION_QS_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE },
143 { ACTION_QS_DOWN, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
144 { ACTION_QS_LEFT, BUTTON_UP, BUTTON_NONE },
145 { ACTION_QS_LEFT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
146 { ACTION_QS_RIGHT, BUTTON_DOWN, BUTTON_NONE },
147 { ACTION_QS_RIGHT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
148
149 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
150}; /* button_context_quickscreen */
151
152const struct button_mapping button_context_settings_right_is_inc[] = {
153 { ACTION_SETTINGS_INC, BUTTON_SCROLL_UP, BUTTON_NONE },
154 { ACTION_SETTINGS_INCREPEAT, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
155 { ACTION_SETTINGS_DEC, BUTTON_SCROLL_DOWN, BUTTON_NONE },
156 { ACTION_SETTINGS_DECREPEAT, BUTTON_SCROLL_DOWN|BUTTON_REPEAT,BUTTON_NONE },
157 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
158 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
159 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
160 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
161 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
162 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
163 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
164 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
165
166 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
167}; /* button_context_settings_right_is_inc */
168
169const struct button_mapping button_context_pitchscreen[] = {
170 { ACTION_PS_INC_SMALL, BUTTON_SCROLL_UP, BUTTON_NONE },
171 { ACTION_PS_INC_BIG, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
172 { ACTION_PS_DEC_SMALL, BUTTON_SCROLL_DOWN, BUTTON_NONE },
173 { ACTION_PS_DEC_BIG, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
174 { ACTION_PS_NUDGE_LEFT, BUTTON_UP, BUTTON_NONE },
175 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
176 { ACTION_PS_NUDGE_RIGHT, BUTTON_DOWN, BUTTON_NONE },
177 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
178 { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE },
179 { ACTION_PS_EXIT, BUTTON_LEFT, BUTTON_NONE },
180
181 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
182}; /* button_context_pitchscreen */
183
184const struct button_mapping button_context_keyboard[] = {
185 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
186 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
187 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
188 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
189 { ACTION_KBD_SELECT, BUTTON_UP|BUTTON_REL, BUTTON_UP },
190 { ACTION_KBD_DONE, BUTTON_SELECT, BUTTON_NONE },
191 { ACTION_KBD_ABORT, BUTTON_DOWN, BUTTON_NONE },
192 { ACTION_KBD_UP, BUTTON_SCROLL_UP, BUTTON_NONE },
193 { ACTION_KBD_UP, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
194 { ACTION_KBD_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE },
195 { ACTION_KBD_DOWN, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
196
197 LAST_ITEM_IN_LIST
198}; /* button_context_keyboard */
199
200const struct button_mapping button_context_bmark[] = {
201 { ACTION_BMS_DELETE, BUTTON_UP, BUTTON_NONE },
202 { ACTION_BMS_SELECT, BUTTON_RIGHT, BUTTON_NONE },
203 { ACTION_BMS_EXIT, BUTTON_LEFT, BUTTON_NONE },
204 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
205}; /* button_context_bmark */
206
207/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
208const struct button_mapping* get_context_mapping(int context)
209{
210 switch (context)
211 {
212 case CONTEXT_STD:
213 case CONTEXT_MAINMENU:
214 return button_context_standard;
215
216 case CONTEXT_WPS:
217 return button_context_wps;
218
219 case CONTEXT_LIST:
220 return button_context_list;
221 case CONTEXT_TREE:
222 if (global_settings.hold_lr_for_scroll_in_list)
223 return button_context_listtree_scroll_without_combo;
224 else
225 return button_context_listtree_scroll_with_combo;
226 case CONTEXT_CUSTOM|CONTEXT_TREE:
227 return button_context_tree;
228
229 case CONTEXT_SETTINGS:
230 return button_context_settings;
231 case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
232 case CONTEXT_SETTINGS_COLOURCHOOSER:
233 case CONTEXT_SETTINGS_EQ:
234 case CONTEXT_SETTINGS_TIME:
235 return button_context_settings_right_is_inc;
236
237 case CONTEXT_YESNOSCREEN:
238 return button_context_yesno;
239 case CONTEXT_BOOKMARKSCREEN:
240 return button_context_bmark;
241 case CONTEXT_QUICKSCREEN:
242 return button_context_quickscreen;
243 case CONTEXT_PITCHSCREEN:
244 return button_context_pitchscreen;
245 case CONTEXT_KEYBOARD:
246 return button_context_keyboard;
247
248 default:
249 return button_context_standard;
250 }
251 return button_context_standard;
252}