diff options
-rw-r--r-- | apps/SOURCES | 2 | ||||
-rw-r--r-- | apps/keymaps/keymap-clip.c | 324 | ||||
-rw-r--r-- | apps/plugins/lib/pluginlib_actions.c | 11 | ||||
-rw-r--r-- | firmware/export/config-clip.h | 17 | ||||
-rw-r--r-- | firmware/target/arm/as3525/sansa-clip/button-clip.c | 6 | ||||
-rw-r--r-- | firmware/target/arm/as3525/sansa-clip/button-target.h | 8 | ||||
-rwxr-xr-x | tools/configure | 1 | ||||
-rw-r--r-- | uisimulator/sdl/UI-clip.bmp | bin | 0 -> 266554 bytes | |||
-rw-r--r-- | uisimulator/sdl/button.c | 30 | ||||
-rw-r--r-- | uisimulator/sdl/uisdl.h | 13 |
10 files changed, 390 insertions, 22 deletions
diff --git a/apps/SOURCES b/apps/SOURCES index d68ca1bdfc..918fa5d3b9 100644 --- a/apps/SOURCES +++ b/apps/SOURCES | |||
@@ -188,6 +188,8 @@ keymaps/keymap-e200.c | |||
188 | keymaps/keymap-c200.c | 188 | keymaps/keymap-c200.c |
189 | #elif CONFIG_KEYPAD == SANSA_M200_PAD | 189 | #elif CONFIG_KEYPAD == SANSA_M200_PAD |
190 | keymaps/keymap-m200.c | 190 | keymaps/keymap-m200.c |
191 | #elif CONFIG_KEYPAD == SANSA_CLIP_PAD | ||
192 | keymaps/keymap-clip.c | ||
191 | #elif CONFIG_KEYPAD == ARCHOS_AV300_PAD | 193 | #elif CONFIG_KEYPAD == ARCHOS_AV300_PAD |
192 | keymaps/keymap-av300.c | 194 | keymaps/keymap-av300.c |
193 | #elif CONFIG_KEYPAD == MROBE500_PAD | 195 | #elif CONFIG_KEYPAD == MROBE500_PAD |
diff --git a/apps/keymaps/keymap-clip.c b/apps/keymaps/keymap-clip.c new file mode 100644 index 0000000000..b5ca976cdd --- /dev/null +++ b/apps/keymaps/keymap-clip.c | |||
@@ -0,0 +1,324 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright © Rafaël Carré 2008 | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | /* Button Code Definitions for Sansa Clip target */ | ||
22 | |||
23 | #include "config.h" | ||
24 | #include "action.h" | ||
25 | #include "button.h" | ||
26 | #include "settings.h" | ||
27 | |||
28 | /* {Action Code, Button code, Prereq button code } */ | ||
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 | static const struct button_mapping button_context_standard[] = { | ||
37 | { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, | ||
38 | { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
39 | { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, | ||
40 | { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
41 | |||
42 | { ACTION_STD_MENU, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
43 | { ACTION_STD_REC, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, | ||
44 | |||
45 | { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | ||
46 | { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, | ||
47 | { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, | ||
48 | { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, | ||
49 | |||
50 | { ACTION_STD_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
51 | { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | ||
52 | |||
53 | LAST_ITEM_IN_LIST | ||
54 | }; /* button_context_standard */ | ||
55 | |||
56 | |||
57 | static const struct button_mapping button_context_wps[] = { | ||
58 | { ACTION_WPS_PLAY, BUTTON_UP|BUTTON_REL, BUTTON_UP }, | ||
59 | { ACTION_WPS_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | ||
60 | |||
61 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
62 | { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
63 | { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
64 | |||
65 | { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
66 | { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
67 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
68 | |||
69 | { ACTION_WPS_ABSETB_NEXTDIR, BUTTON_POWER|BUTTON_RIGHT, BUTTON_POWER }, | ||
70 | { ACTION_WPS_ABSETA_PREVDIR, BUTTON_POWER|BUTTON_LEFT, BUTTON_POWER }, | ||
71 | { ACTION_WPS_ABRESET, BUTTON_POWER|BUTTON_UP, BUTTON_POWER }, | ||
72 | |||
73 | { ACTION_WPS_VOLUP, BUTTON_RIGHT, BUTTON_NONE }, | ||
74 | { ACTION_WPS_VOLUP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
75 | { ACTION_WPS_VOLDOWN, BUTTON_LEFT, BUTTON_NONE }, | ||
76 | { ACTION_WPS_VOLDOWN, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
77 | |||
78 | { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | ||
79 | |||
80 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | ||
81 | { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | ||
82 | |||
83 | { ACTION_WPS_MENU, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, | ||
84 | { ACTION_WPS_REC, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, | ||
85 | |||
86 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT }, | ||
87 | { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_SELECT }, | ||
88 | |||
89 | LAST_ITEM_IN_LIST | ||
90 | }; /* button_context_wps */ | ||
91 | |||
92 | static const struct button_mapping button_context_settings[] = { | ||
93 | { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, | ||
94 | { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE }, | ||
95 | { ACTION_SETTINGS_INCREPEAT,BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
96 | { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE }, | ||
97 | { ACTION_SETTINGS_DECREPEAT,BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
98 | |||
99 | { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, | ||
100 | { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
101 | { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, | ||
102 | { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
103 | { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, | ||
104 | |||
105 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), | ||
106 | }; /* button_context_settings */ | ||
107 | |||
108 | static const struct button_mapping button_context_list[] = { | ||
109 | { ACTION_LISTTREE_PGUP, BUTTON_HOME|BUTTON_LEFT, BUTTON_HOME }, | ||
110 | { ACTION_LISTTREE_PGDOWN, BUTTON_HOME|BUTTON_RIGHT, BUTTON_HOME }, | ||
111 | |||
112 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
113 | }; /* button_context_list */ | ||
114 | |||
115 | static const struct button_mapping button_context_tree[] = { | ||
116 | { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
117 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | ||
118 | |||
119 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), | ||
120 | }; /* button_context_tree */ | ||
121 | |||
122 | static const struct button_mapping button_context_listtree_scroll_without_combo[] = { | ||
123 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | ||
124 | { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
125 | { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
126 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
127 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, | ||
128 | { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, | ||
129 | { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
130 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
131 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | ||
132 | |||
133 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE), | ||
134 | }; /* button_context_listtree_scroll_without_combo */ | ||
135 | |||
136 | static const struct button_mapping button_context_listtree_scroll_with_combo[] = { | ||
137 | { ACTION_TREE_ROOT_INIT,BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
138 | { ACTION_TREE_PGLEFT, BUTTON_HOME|BUTTON_LEFT, BUTTON_HOME }, | ||
139 | { ACTION_TREE_PGLEFT, BUTTON_HOME|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
140 | { ACTION_TREE_PGRIGHT, BUTTON_HOME|BUTTON_RIGHT, BUTTON_HOME }, | ||
141 | { ACTION_TREE_PGRIGHT, BUTTON_HOME|BUTTON_RIGHT|BUTTON_REPEAT,BUTTON_NONE }, | ||
142 | |||
143 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE), | ||
144 | }; /* button_context_listtree_scroll_with_combo */ | ||
145 | |||
146 | static const struct button_mapping button_context_yesno[] = { | ||
147 | { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE }, | ||
148 | |||
149 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), | ||
150 | }; /* button_context_settings_yesno */ | ||
151 | |||
152 | static const struct button_mapping button_context_quickscreen[] = { | ||
153 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | ||
154 | { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE }, | ||
155 | { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, | ||
156 | { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
157 | { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, | ||
158 | { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
159 | { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | ||
160 | { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
161 | { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, | ||
162 | { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
163 | |||
164 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), | ||
165 | }; /* button_context_quickscreen */ | ||
166 | |||
167 | static const struct button_mapping button_context_settings_right_is_inc[] = { | ||
168 | { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE }, | ||
169 | { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
170 | { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE }, | ||
171 | { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT,BUTTON_NONE }, | ||
172 | |||
173 | { ACTION_STD_PREV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, | ||
174 | { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
175 | { ACTION_STD_NEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, | ||
176 | { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
177 | { ACTION_NONE, BUTTON_SELECT, BUTTON_NONE }, | ||
178 | { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE }, | ||
179 | { ACTION_NONE, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
180 | { ACTION_NONE, BUTTON_POWER, BUTTON_NONE }, | ||
181 | { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE }, | ||
182 | |||
183 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), | ||
184 | }; /* button_context_settings_right_is_inc */ | ||
185 | |||
186 | static const struct button_mapping button_context_settings_time[] = { | ||
187 | { ACTION_STD_PREV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, | ||
188 | { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
189 | { ACTION_STD_NEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, | ||
190 | { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
191 | |||
192 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS) | ||
193 | }; /* button_context_settings_time */ | ||
194 | |||
195 | static const struct button_mapping button_context_pitchscreen[] = { | ||
196 | { ACTION_PS_INC_SMALL, BUTTON_RIGHT, BUTTON_NONE }, | ||
197 | { ACTION_PS_INC_BIG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
198 | { ACTION_PS_DEC_SMALL, BUTTON_LEFT, BUTTON_NONE }, | ||
199 | { ACTION_PS_DEC_BIG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
200 | { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE }, | ||
201 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | ||
202 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | ||
203 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, | ||
204 | { ACTION_PS_TOGGLE_MODE, BUTTON_HOME, BUTTON_NONE }, | ||
205 | { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE }, | ||
206 | { ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE }, | ||
207 | { ACTION_PS_EXIT, BUTTON_UP, BUTTON_NONE }, | ||
208 | |||
209 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD), | ||
210 | }; /* button_context_pitchscreen */ | ||
211 | |||
212 | /** Recording Screen **/ | ||
213 | static const struct button_mapping button_context_recscreen[] = { | ||
214 | { ACTION_REC_PAUSE, BUTTON_UP|BUTTON_REL, BUTTON_UP }, | ||
215 | { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | ||
216 | { ACTION_REC_NEWFILE, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
217 | { ACTION_STD_MENU, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT}, | ||
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 | { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, | ||
223 | { ACTION_STD_PREV, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
224 | { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, | ||
225 | { ACTION_STD_NEXT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
226 | { ACTION_NONE, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, | ||
227 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
228 | }; /* button_context_recscreen */ | ||
229 | |||
230 | /** FM Radio Screen **/ | ||
231 | static const struct button_mapping button_context_radio[] = { | ||
232 | { ACTION_FM_MENU, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE }, | ||
233 | { ACTION_FM_PRESET, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE }, | ||
234 | { ACTION_FM_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_NONE }, | ||
235 | { ACTION_FM_MODE, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | ||
236 | { ACTION_FM_EXIT, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, | ||
237 | { ACTION_FM_PLAY, BUTTON_UP|BUTTON_REL, BUTTON_UP }, | ||
238 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS) | ||
239 | }; /* button_context_radio */ | ||
240 | |||
241 | static const struct button_mapping button_context_keyboard[] = { | ||
242 | { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE }, | ||
243 | { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
244 | { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | ||
245 | { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
246 | |||
247 | { ACTION_KBD_CURSOR_LEFT, BUTTON_HOME|BUTTON_LEFT, BUTTON_NONE }, | ||
248 | { ACTION_KBD_CURSOR_LEFT, BUTTON_HOME|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
249 | { ACTION_KBD_CURSOR_RIGHT, BUTTON_HOME|BUTTON_RIGHT, BUTTON_NONE }, | ||
250 | { ACTION_KBD_CURSOR_RIGHT, BUTTON_HOME|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
251 | |||
252 | { ACTION_KBD_UP, BUTTON_LEFT, BUTTON_NONE }, | ||
253 | { ACTION_KBD_UP, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
254 | { ACTION_KBD_DOWN, BUTTON_RIGHT, BUTTON_NONE }, | ||
255 | { ACTION_KBD_DOWN, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
256 | { ACTION_KBD_PAGE_FLIP, BUTTON_HOME|BUTTON_SELECT, BUTTON_HOME }, | ||
257 | { ACTION_KBD_BACKSPACE, BUTTON_DOWN, BUTTON_NONE }, | ||
258 | { ACTION_KBD_BACKSPACE, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
259 | { ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE }, | ||
260 | { ACTION_KBD_DONE, BUTTON_UP, BUTTON_NONE }, | ||
261 | { ACTION_KBD_ABORT, BUTTON_POWER, BUTTON_NONE }, | ||
262 | |||
263 | LAST_ITEM_IN_LIST | ||
264 | }; /* button_context_keyboard */ | ||
265 | |||
266 | static const struct button_mapping button_context_bmark[] = { | ||
267 | { ACTION_BMS_DELETE, BUTTON_HOME, BUTTON_NONE }, | ||
268 | |||
269 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), | ||
270 | }; /* button_context_bmark */ | ||
271 | |||
272 | /* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ | ||
273 | const struct button_mapping* get_context_mapping(int context) | ||
274 | { | ||
275 | switch (context) | ||
276 | { | ||
277 | case CONTEXT_STD: | ||
278 | return button_context_standard; | ||
279 | |||
280 | case CONTEXT_WPS: | ||
281 | return button_context_wps; | ||
282 | |||
283 | case CONTEXT_LIST: | ||
284 | return button_context_list; | ||
285 | case CONTEXT_TREE: | ||
286 | case CONTEXT_MAINMENU: | ||
287 | if (global_settings.hold_lr_for_scroll_in_list) | ||
288 | return button_context_listtree_scroll_without_combo; | ||
289 | else | ||
290 | return button_context_listtree_scroll_with_combo; | ||
291 | case CONTEXT_CUSTOM|CONTEXT_TREE: | ||
292 | return button_context_tree; | ||
293 | |||
294 | case CONTEXT_SETTINGS: | ||
295 | return button_context_settings; | ||
296 | case CONTEXT_CUSTOM|CONTEXT_SETTINGS: | ||
297 | case CONTEXT_SETTINGS_COLOURCHOOSER: | ||
298 | case CONTEXT_SETTINGS_EQ: | ||
299 | case CONTEXT_SETTINGS_RECTRIGGER: | ||
300 | return button_context_settings_right_is_inc; | ||
301 | |||
302 | case CONTEXT_SETTINGS_TIME: | ||
303 | return button_context_settings_time; | ||
304 | |||
305 | case CONTEXT_YESNOSCREEN: | ||
306 | return button_context_yesno; | ||
307 | case CONTEXT_FM: | ||
308 | return button_context_radio; | ||
309 | case CONTEXT_BOOKMARKSCREEN: | ||
310 | return button_context_bmark; | ||
311 | case CONTEXT_QUICKSCREEN: | ||
312 | return button_context_quickscreen; | ||
313 | case CONTEXT_PITCHSCREEN: | ||
314 | return button_context_pitchscreen; | ||
315 | case CONTEXT_RECSCREEN: | ||
316 | return button_context_recscreen; | ||
317 | case CONTEXT_KEYBOARD: | ||
318 | return button_context_keyboard; | ||
319 | |||
320 | default: | ||
321 | return button_context_standard; | ||
322 | } | ||
323 | return button_context_standard; | ||
324 | } | ||
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c index 26ef590522..a8a4e9c2c3 100644 --- a/apps/plugins/lib/pluginlib_actions.c +++ b/apps/plugins/lib/pluginlib_actions.c | |||
@@ -87,7 +87,8 @@ const struct button_mapping generic_directions[] = | |||
87 | || (CONFIG_KEYPAD == SANSA_C200_PAD) \ | 87 | || (CONFIG_KEYPAD == SANSA_C200_PAD) \ |
88 | || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ | 88 | || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ |
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 | { PLA_UP, BUTTON_UP, BUTTON_NONE}, | 92 | { PLA_UP, BUTTON_UP, BUTTON_NONE}, |
92 | { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE}, | 93 | { PLA_DOWN, BUTTON_DOWN, BUTTON_NONE}, |
93 | { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, | 94 | { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, |
@@ -186,7 +187,8 @@ const struct button_mapping generic_left_right_fire[] = | |||
186 | || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \ | 187 | || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \ |
187 | || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ | 188 | || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ |
188 | || (CONFIG_KEYPAD == MROBE100_PAD) \ | 189 | || (CONFIG_KEYPAD == MROBE100_PAD) \ |
189 | || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) | 190 | || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \ |
191 | || (CONFIG_KEYPAD == SANSA_CLIP_PAD) | ||
190 | { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, | 192 | { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE}, |
191 | { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, | 193 | { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE}, |
192 | { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, | 194 | { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, |
@@ -359,7 +361,7 @@ const struct button_mapping generic_actions[] = | |||
359 | {PLA_MENU, BUTTON_DOWN, BUTTON_NONE}, | 361 | {PLA_MENU, BUTTON_DOWN, BUTTON_NONE}, |
360 | {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, | 362 | {PLA_FIRE, BUTTON_SELECT, BUTTON_NONE}, |
361 | {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, | 363 | {PLA_FIRE_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, |
362 | #elif CONFIG_KEYPAD == SANSA_C200_PAD | 364 | #elif CONFIG_KEYPAD == SANSA_C200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD |
363 | {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, | 365 | {PLA_QUIT, BUTTON_POWER, BUTTON_NONE}, |
364 | {PLA_START, BUTTON_UP, BUTTON_NONE}, | 366 | {PLA_START, BUTTON_UP, BUTTON_NONE}, |
365 | {PLA_MENU, BUTTON_DOWN, BUTTON_NONE}, | 367 | {PLA_MENU, BUTTON_DOWN, BUTTON_NONE}, |
@@ -437,7 +439,8 @@ const struct button_mapping generic_increase_decrease[] = | |||
437 | || (CONFIG_KEYPAD == ONDIO_PAD) \ | 439 | || (CONFIG_KEYPAD == ONDIO_PAD) \ |
438 | || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ | 440 | || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ |
439 | || (CONFIG_KEYPAD == MROBE100_PAD) \ | 441 | || (CONFIG_KEYPAD == MROBE100_PAD) \ |
440 | || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) | 442 | || (CONFIG_KEYPAD == PHILIPS_SA9200_PAD) \ |
443 | || (CONFIG_KEYPAD == SANSA_CLIP_PAD) | ||
441 | {PLA_INC, BUTTON_UP, BUTTON_NONE}, | 444 | {PLA_INC, BUTTON_UP, BUTTON_NONE}, |
442 | {PLA_DEC, BUTTON_DOWN, BUTTON_NONE}, | 445 | {PLA_DEC, BUTTON_DOWN, BUTTON_NONE}, |
443 | {PLA_INC_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, | 446 | {PLA_INC_REPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE}, |
diff --git a/firmware/export/config-clip.h b/firmware/export/config-clip.h index bcda3bb153..01a08f3886 100644 --- a/firmware/export/config-clip.h +++ b/firmware/export/config-clip.h | |||
@@ -29,7 +29,7 @@ | |||
29 | #define HAVE_LCD_BITMAP | 29 | #define HAVE_LCD_BITMAP |
30 | 30 | ||
31 | /* define this if you have a light associated with the buttons */ | 31 | /* define this if you have a light associated with the buttons */ |
32 | #define HAVE_BUTTON_LIGHT | 32 | //#define HAVE_BUTTON_LIGHT |
33 | 33 | ||
34 | /* define this if you have access to the quickscreen */ | 34 | /* define this if you have access to the quickscreen */ |
35 | //#define HAVE_QUICKSCREEN | 35 | //#define HAVE_QUICKSCREEN |
@@ -47,7 +47,7 @@ | |||
47 | #define LCD_PIXELFORMAT VERTICAL_PACKING | 47 | #define LCD_PIXELFORMAT VERTICAL_PACKING |
48 | 48 | ||
49 | /* define this if you have LCD enable function */ | 49 | /* define this if you have LCD enable function */ |
50 | #define HAVE_LCD_ENABLE | 50 | //#define HAVE_LCD_ENABLE |
51 | 51 | ||
52 | #ifndef BOOTLOADER | 52 | #ifndef BOOTLOADER |
53 | 53 | ||
@@ -58,7 +58,7 @@ | |||
58 | #endif | 58 | #endif |
59 | 59 | ||
60 | /* define this if you can flip your LCD */ | 60 | /* define this if you can flip your LCD */ |
61 | //#define HAVE_LCD_FLIP | 61 | #define HAVE_LCD_FLIP |
62 | 62 | ||
63 | /* #define IRAM_LCDFRAMEBUFFER IDATA_ATTR *//* put the lcd frame buffer in IRAM */ | 63 | /* #define IRAM_LCDFRAMEBUFFER IDATA_ATTR *//* put the lcd frame buffer in IRAM */ |
64 | 64 | ||
@@ -75,16 +75,15 @@ | |||
75 | #endif | 75 | #endif |
76 | 76 | ||
77 | /* Define this if you have a software controlled poweroff */ | 77 | /* Define this if you have a software controlled poweroff */ |
78 | //#define HAVE_SW_POWEROFF | 78 | #define HAVE_SW_POWEROFF |
79 | 79 | ||
80 | #define HAVE_FAT16SUPPORT | 80 | #define HAVE_FAT16SUPPORT |
81 | 81 | ||
82 | /* The number of bytes reserved for loadable codecs */ | 82 | /* The number of bytes reserved for loadable codecs */ |
83 | #define CODEC_SIZE 0 | 83 | #define CODEC_SIZE 0x100000 |
84 | //#define CODEC_SIZE 0x100000 | ||
85 | 84 | ||
86 | /* The number of bytes reserved for loadable plugins */ | 85 | /* The number of bytes reserved for loadable plugins */ |
87 | //#define PLUGIN_BUFFER_SIZE 0x80000 | 86 | #define PLUGIN_BUFFER_SIZE 0x80000 |
88 | 87 | ||
89 | #define AB_REPEAT_ENABLE 1 | 88 | #define AB_REPEAT_ENABLE 1 |
90 | 89 | ||
@@ -92,10 +91,6 @@ | |||
92 | //#define CONFIG_TUNER LV24020LP | 91 | //#define CONFIG_TUNER LV24020LP |
93 | //#define HAVE_TUNER_PWR_CTRL | 92 | //#define HAVE_TUNER_PWR_CTRL |
94 | 93 | ||
95 | /* Define this for LCD backlight available */ | ||
96 | #define HAVE_BACKLIGHT | ||
97 | #define HAVE_BACKLIGHT_BRIGHTNESS | ||
98 | |||
99 | /* define this if you have a flash memory storage */ | 94 | /* define this if you have a flash memory storage */ |
100 | #define HAVE_FLASH_STORAGE | 95 | #define HAVE_FLASH_STORAGE |
101 | 96 | ||
diff --git a/firmware/target/arm/as3525/sansa-clip/button-clip.c b/firmware/target/arm/as3525/sansa-clip/button-clip.c index faed075c65..65e72f51b6 100644 --- a/firmware/target/arm/as3525/sansa-clip/button-clip.c +++ b/firmware/target/arm/as3525/sansa-clip/button-clip.c | |||
@@ -50,10 +50,10 @@ int button_read_device(void) | |||
50 | /* C4B0 is unused */ | 50 | /* C4B0 is unused */ |
51 | 51 | ||
52 | if (GPIOB_PIN(1)) | 52 | if (GPIOB_PIN(1)) |
53 | result |= BUTTON_VOLUP; | 53 | result |= BUTTON_VOL_UP; |
54 | 54 | ||
55 | if (GPIOB_PIN(2)) | 55 | if (GPIOB_PIN(2)) |
56 | result |= BUTTON_PLAY; | 56 | result |= BUTTON_UP; |
57 | 57 | ||
58 | GPIOC_PIN(4) = 0x00; | 58 | GPIOC_PIN(4) = 0x00; |
59 | 59 | ||
@@ -76,7 +76,7 @@ int button_read_device(void) | |||
76 | result |= BUTTON_DOWN; | 76 | result |= BUTTON_DOWN; |
77 | 77 | ||
78 | if (GPIOB_PIN(1)) | 78 | if (GPIOB_PIN(1)) |
79 | result |= BUTTON_VOLDOWN; | 79 | result |= BUTTON_VOL_DOWN; |
80 | 80 | ||
81 | if (GPIOB_PIN(2)) | 81 | if (GPIOB_PIN(2)) |
82 | result |= BUTTON_HOME; | 82 | result |= BUTTON_HOME; |
diff --git a/firmware/target/arm/as3525/sansa-clip/button-target.h b/firmware/target/arm/as3525/sansa-clip/button-target.h index 1fb57ae9e9..d44ac58a71 100644 --- a/firmware/target/arm/as3525/sansa-clip/button-target.h +++ b/firmware/target/arm/as3525/sansa-clip/button-target.h | |||
@@ -34,10 +34,10 @@ bool button_hold(void); | |||
34 | /* Main unit's buttons */ | 34 | /* Main unit's buttons */ |
35 | #define BUTTON_HOME 0x00000001 | 35 | #define BUTTON_HOME 0x00000001 |
36 | 36 | ||
37 | #define BUTTON_VOLUP 0x00000002 | 37 | #define BUTTON_VOL_UP 0x00000002 |
38 | #define BUTTON_VOLDOWN 0x00000004 | 38 | #define BUTTON_VOL_DOWN 0x00000004 |
39 | 39 | ||
40 | #define BUTTON_PLAY 0x00000008 | 40 | #define BUTTON_UP 0x00000008 |
41 | #define BUTTON_DOWN 0x00000010 | 41 | #define BUTTON_DOWN 0x00000010 |
42 | #define BUTTON_LEFT 0x00000020 | 42 | #define BUTTON_LEFT 0x00000020 |
43 | #define BUTTON_RIGHT 0x00000040 | 43 | #define BUTTON_RIGHT 0x00000040 |
@@ -48,7 +48,7 @@ bool button_hold(void); | |||
48 | #define BUTTON_HOLD 0x00000200 | 48 | #define BUTTON_HOLD 0x00000200 |
49 | 49 | ||
50 | #define BUTTON_MAIN (BUTTON_HOME|BUTTON_VOLUP|BUTTON_VOLDOWN\ | 50 | #define BUTTON_MAIN (BUTTON_HOME|BUTTON_VOLUP|BUTTON_VOLDOWN\ |
51 | |BUTTON_PLAY|BUTTON_DOWN|BUTTON_LEFT|BUTTON_RIGHT\ | 51 | |BUTTON_UP|BUTTON_DOWN|BUTTON_LEFT|BUTTON_RIGHT\ |
52 | |BUTTON_SELECT|BUTTON_POWER|BUTTON_HOLD) | 52 | |BUTTON_SELECT|BUTTON_POWER|BUTTON_HOLD) |
53 | 53 | ||
54 | #define BUTTON_REMOTE 0 | 54 | #define BUTTON_REMOTE 0 |
diff --git a/tools/configure b/tools/configure index 6ec13a2df3..41bd8c27c0 100755 --- a/tools/configure +++ b/tools/configure | |||
@@ -1693,6 +1693,7 @@ fi | |||
1693 | bootoutput="bootloader-clip.sansa" | 1693 | bootoutput="bootloader-clip.sansa" |
1694 | appextra="recorder:gui" | 1694 | appextra="recorder:gui" |
1695 | plugins="" | 1695 | plugins="" |
1696 | swcodec="yes" | ||
1696 | toolset=$scramblebitmaptools | 1697 | toolset=$scramblebitmaptools |
1697 | t_cpu="arm" | 1698 | t_cpu="arm" |
1698 | t_manufacturer="as3525" | 1699 | t_manufacturer="as3525" |
diff --git a/uisimulator/sdl/UI-clip.bmp b/uisimulator/sdl/UI-clip.bmp new file mode 100644 index 0000000000..597f3f9ede --- /dev/null +++ b/uisimulator/sdl/UI-clip.bmp | |||
Binary files differ | |||
diff --git a/uisimulator/sdl/button.c b/uisimulator/sdl/button.c index 2a06f2e435..9f86cd8ed0 100644 --- a/uisimulator/sdl/button.c +++ b/uisimulator/sdl/button.c | |||
@@ -950,6 +950,36 @@ void button_event(int key, bool pressed) | |||
950 | case SDLK_SPACE: | 950 | case SDLK_SPACE: |
951 | new_btn = BUTTON_SELECT; | 951 | new_btn = BUTTON_SELECT; |
952 | break; | 952 | break; |
953 | |||
954 | #elif CONFIG_KEYPAD == SANSA_CLIP_PAD | ||
955 | case SDLK_KP4: | ||
956 | case SDLK_LEFT: | ||
957 | new_btn = BUTTON_LEFT; | ||
958 | break; | ||
959 | case SDLK_KP6: | ||
960 | case SDLK_RIGHT: | ||
961 | new_btn = BUTTON_RIGHT; | ||
962 | break; | ||
963 | case SDLK_KP8: | ||
964 | case SDLK_UP: | ||
965 | new_btn = BUTTON_UP; | ||
966 | break; | ||
967 | case SDLK_KP2: | ||
968 | case SDLK_DOWN: | ||
969 | new_btn = BUTTON_DOWN; | ||
970 | break; | ||
971 | case SDLK_INSERT: | ||
972 | new_btn = BUTTON_HOME; | ||
973 | break; | ||
974 | case SDLK_SPACE: | ||
975 | new_btn = BUTTON_SELECT; | ||
976 | break; | ||
977 | case SDLK_PAGEDOWN: | ||
978 | new_btn = BUTTON_VOL_DOWN; | ||
979 | break; | ||
980 | case SDLK_PAGEUP: | ||
981 | new_btn = BUTTON_VOL_UP; | ||
982 | break; | ||
953 | #else | 983 | #else |
954 | #error No keymap defined! | 984 | #error No keymap defined! |
955 | #endif /* CONFIG_KEYPAD */ | 985 | #endif /* CONFIG_KEYPAD */ |
diff --git a/uisimulator/sdl/uisdl.h b/uisimulator/sdl/uisdl.h index aeac51f7bf..03f5119ca8 100644 --- a/uisimulator/sdl/uisdl.h +++ b/uisimulator/sdl/uisdl.h | |||
@@ -436,6 +436,19 @@ | |||
436 | #define UI_LCD_FGCOLOR 0, 0, 0 /* foreground color of LCD (no backlight) */ | 436 | #define UI_LCD_FGCOLOR 0, 0, 0 /* foreground color of LCD (no backlight) */ |
437 | #define UI_LCD_FGCOLORLIGHT 0, 0, 0 /* foreground color of LCD (backlight) */ | 437 | #define UI_LCD_FGCOLORLIGHT 0, 0, 0 /* foreground color of LCD (backlight) */ |
438 | 438 | ||
439 | #elif defined(SANSA_CLIP) | ||
440 | #define UI_TITLE "Sansa Clip" | ||
441 | #define UI_WIDTH 205 /* width of GUI window */ | ||
442 | #define UI_HEIGHT 325 /* height of GUI window */ | ||
443 | #define UI_LCD_POSX 38 /* x position of lcd */ | ||
444 | #define UI_LCD_POSY 38 /* y position of lcd */ | ||
445 | #define UI_LCD_WIDTH 128 | ||
446 | #define UI_LCD_HEIGHT 64 | ||
447 | #define UI_LCD_BGCOLOR 0, 0, 0 /* bkgnd color of LCD (no backlight) */ | ||
448 | #define UI_LCD_BGCOLORLIGHT 192, 192, 192 /* bkgnd color of LCD (backlight) */ | ||
449 | #define UI_LCD_FGCOLOR 13, 226, 229 /* foreground color of LCD (no backlight) */ | ||
450 | #define UI_LCD_FGCOLORLIGHT 0, 0, 0 /* foreground color of LCD (backlight) */ | ||
451 | |||
439 | #endif | 452 | #endif |
440 | extern SDL_Surface *gui_surface; | 453 | extern SDL_Surface *gui_surface; |
441 | extern bool background; /* True if the background image is enabled */ | 454 | extern bool background; /* True if the background image is enabled */ |