summaryrefslogtreecommitdiff
path: root/apps/keymaps/keymap-av300.c
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2007-01-14 13:48:09 +0000
committerDave Chapman <dave@dchapman.com>2007-01-14 13:48:09 +0000
commitd64e626387e21dc6a7ab374f17dec1e902cd9779 (patch)
tree6a16bbf5de0becfd6588bff30c11c8ed9fd25c9e /apps/keymaps/keymap-av300.c
parent72f1027b3edae94ad9962c654519c2cab8566078 (diff)
downloadrockbox-d64e626387e21dc6a7ab374f17dec1e902cd9779.tar.gz
rockbox-d64e626387e21dc6a7ab374f17dec1e902cd9779.zip
Start of work on a port to the Archos 'AV300' (AV320/340/380) - a working UI simulator (but with a dummy background image for now) and the beginnings of the target-specific firmare code. Port is temporarily using a 2bpp LCD buffer format - the AV300 has a 320x240 colour (YCbCr-based) LCD which will need a new framebuffer format and drawing routines, but the LCD is also capable of various paletted bitmap modes, one of which has an identical framebuffer format to the greyscale ipods. Buttons (and hence the button mappings) are identical to the Archos Recorder, with the exception that the PLAY button on the Recorder is replaced by pressing the joystick on the AV300 (which I call BUTTON_SELECT). The initial port will begin by being strictly HWCODEC, but will evolve to be a hybrid SWCODEC/HWCODEC platform - it has a MAS3587F but also a main CPU (54MHz arm7tdmi plus DSP) capable of software decoding of at least some formats.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12008 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/keymaps/keymap-av300.c')
-rw-r--r--apps/keymaps/keymap-av300.c261
1 files changed, 261 insertions, 0 deletions
diff --git a/apps/keymaps/keymap-av300.c b/apps/keymaps/keymap-av300.c
new file mode 100644
index 0000000000..22e1fcc9a1
--- /dev/null
+++ b/apps/keymaps/keymap-av300.c
@@ -0,0 +1,261 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2006 Antoine Cellerier <dionoea @t videolan d.t org>
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/* *
20 * Button Code Definitions for archos AV300 target
21 *
22 * \TODO handle F3
23 */
24
25#include "config.h"
26#include "action.h"
27#include "button.h"
28#include "settings.h"
29
30/* CONTEXT_CUSTOM's used in this file...
31
32CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions)
33
34
35*/
36
37static const struct button_mapping button_context_standard[] = {
38 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
39 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
40 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
41 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
42
43 { ACTION_STD_OK, BUTTON_ON, BUTTON_NONE },
44 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
45 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
46
47 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
48 { ACTION_STD_MENU, BUTTON_F1, BUTTON_NONE },
49 { ACTION_STD_QUICKSCREEN, BUTTON_F2, BUTTON_NONE },
50 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT },
51 { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE },
52 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
53 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
54 { ACTION_F3, BUTTON_F3, BUTTON_NONE },
55
56 LAST_ITEM_IN_LIST
57};
58
59static const struct button_mapping button_context_wps[] = {
60 { ACTION_WPS_PLAY, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
61 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
62 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
63 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
64 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
65 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
66 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
67 { ACTION_WPS_STOP, BUTTON_OFF|BUTTON_REL, BUTTON_OFF },
68 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
69 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
70 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
71 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
72 { ACTION_WPS_MENU, BUTTON_F1|BUTTON_REL, BUTTON_F1 },
73 { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT },
74 { ACTION_WPS_QUICKSCREEN, BUTTON_F2, BUTTON_NONE },
75 { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON },
76 { ACTION_WPS_ID3SCREEN, BUTTON_F1|BUTTON_ON, BUTTON_NONE },
77 { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_UP, BUTTON_ON },
78 { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_DOWN, BUTTON_ON },
79 { ACTION_STD_KEYLOCK, BUTTON_F1|BUTTON_DOWN, BUTTON_NONE },
80 { ACTION_F3, BUTTON_F3, BUTTON_NONE },
81 { ACTION_WPS_ABSETB_NEXTDIR, BUTTON_ON|BUTTON_RIGHT, BUTTON_NONE },
82 { ACTION_WPS_ABSETA_PREVDIR, BUTTON_ON|BUTTON_LEFT, BUTTON_NONE },
83 { ACTION_WPSAB_RESET, BUTTON_ON|BUTTON_OFF, BUTTON_ON },
84
85
86 LAST_ITEM_IN_LIST
87};
88
89static const struct button_mapping button_context_settings[] = {
90 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
91 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
92 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
93 { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
94 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
95 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
96 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
97 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
98
99 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
100};
101
102static const struct button_mapping button_context_tree[] = {
103 { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON },
104 { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE },
105 { ACTION_NONE, BUTTON_ON, BUTTON_NONE },
106 { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON },
107 { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_ON|BUTTON_UP },
108 { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
109 { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN, BUTTON_ON },
110 { ACTION_LISTTREE_PGDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_ON|BUTTON_DOWN },
111 { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
112 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
113}; /* button_context_listtree */
114
115static const struct button_mapping button_context_tree_scroll_lr[] = {
116 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
117 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
118 { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
119 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
120 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
121 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
122 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
123 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
124 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
125 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1),
126};
127
128static const struct button_mapping button_context_yesno[] = {
129 { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
130
131 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
132};
133static const struct button_mapping button_context_quickscreen[] = {
134 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE },
135 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
136 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
137 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
138 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
139 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
140 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
141 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
142 { ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE },
143
144 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
145}; /* button_context_quickscreen */
146
147static const struct button_mapping button_context_pitchscreen[] = {
148 { ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
149 { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
150 { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
151 { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
152 { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
153 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
154 { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
155 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
156 { ACTION_PS_TOGGLE_MODE, BUTTON_F1, BUTTON_NONE },
157 { ACTION_PS_RESET, BUTTON_ON, BUTTON_NONE },
158 { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE },
159
160 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
161}; /* button_context_pitchcreen */
162
163static const struct button_mapping button_context_recscreen[] = {
164 { ACTION_REC_PAUSE, BUTTON_SELECT, BUTTON_NONE },
165 { ACTION_REC_F2, BUTTON_F2, BUTTON_NONE },
166 { ACTION_REC_F3, BUTTON_F3, BUTTON_NONE },
167 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
168 { ACTION_SETTINGS_INC, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
169 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
170 { ACTION_SETTINGS_DEC, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
171
172 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
173}; /* button_context_recscreen */
174
175static const struct button_mapping button_context_keyboard[] = {
176 { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
177 { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
178 { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
179 { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
180 { ACTION_KBD_CURSOR_LEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_NONE },
181 { ACTION_KBD_CURSOR_LEFT, BUTTON_ON|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
182 { ACTION_KBD_CURSOR_RIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_NONE },
183 { ACTION_KBD_CURSOR_RIGHT, BUTTON_ON|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
184 { ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
185 { ACTION_KBD_PAGE_FLIP, BUTTON_F1, BUTTON_NONE },
186 { ACTION_KBD_DONE, BUTTON_F2, BUTTON_NONE },
187 { ACTION_KBD_ABORT, BUTTON_OFF, BUTTON_NONE },
188 { ACTION_KBD_BACKSPACE, BUTTON_F3, BUTTON_NONE },
189 { ACTION_KBD_BACKSPACE, BUTTON_F3|BUTTON_REPEAT, BUTTON_NONE },
190 { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
191 { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
192 { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
193 { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
194
195 LAST_ITEM_IN_LIST
196}; /* button_context_keyboard */
197
198static const struct button_mapping button_context_bmark[] = {
199 { ACTION_BMS_DELETE, BUTTON_SELECT|BUTTON_ON, BUTTON_SELECT },
200 { ACTION_BMS_DELETE, BUTTON_SELECT|BUTTON_ON, BUTTON_ON },
201 { ACTION_BMS_EXIT, BUTTON_OFF, BUTTON_NONE },
202 { ACTION_BMS_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
203
204 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD),
205
206}; /* button_context_settings_bmark */
207
208static const struct button_mapping button_context_radio[] = {
209 { ACTION_FM_MENU, BUTTON_F1, BUTTON_NONE },
210 { ACTION_FM_PRESET, BUTTON_F2, BUTTON_NONE },
211 { ACTION_FM_RECORD, BUTTON_F3, BUTTON_NONE },
212 { ACTION_FM_FREEZE, BUTTON_SELECT, BUTTON_NONE },
213 { ACTION_FM_STOP, BUTTON_OFF, BUTTON_NONE },
214 { ACTION_FM_MODE, BUTTON_ON | BUTTON_REPEAT, BUTTON_ON },
215 { ACTION_FM_EXIT, BUTTON_ON | BUTTON_REL, BUTTON_ON },
216
217 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
218
219};
220
221const struct button_mapping* get_context_mapping( int context )
222{
223 switch( context )
224 {
225 case CONTEXT_WPS:
226 return button_context_wps;
227 case CONTEXT_SETTINGS_TIME:
228 case CONTEXT_SETTINGS:
229 return button_context_settings;
230
231 case CONTEXT_YESNOSCREEN:
232 return button_context_yesno;
233
234 case CONTEXT_PITCHSCREEN:
235 return button_context_pitchscreen;
236 case CONTEXT_BOOKMARKSCREEN:
237 return button_context_bmark;
238 case CONTEXT_TREE:
239 if (global_settings.hold_lr_for_scroll_in_list)
240 return button_context_tree_scroll_lr;
241 /* else fall through to CUSTOM|1 */
242 case CONTEXT_CUSTOM|1:
243 return button_context_tree;
244
245 case CONTEXT_QUICKSCREEN:
246 return button_context_quickscreen;
247
248 case CONTEXT_RECSCREEN:
249 return button_context_recscreen;
250 case CONTEXT_KEYBOARD:
251 return button_context_keyboard;
252 case CONTEXT_FM:
253 return button_context_radio;
254
255 case CONTEXT_STD:
256 case CONTEXT_LIST:
257 case CONTEXT_MAINMENU:
258 default:
259 return button_context_standard;
260 }
261}