diff options
author | Dominik Wenger <domonoky@googlemail.com> | 2008-11-14 21:57:43 +0000 |
---|---|---|
committer | Dominik Wenger <domonoky@googlemail.com> | 2008-11-14 21:57:43 +0000 |
commit | 83dc89f751bc57e060f5a4882beafb3064c3fd80 (patch) | |
tree | 23a1549588a9fc55850b6952cb5a4ffdc393f489 | |
parent | 9a0224fd2800facac398b09ba386973c8ad0cab5 (diff) | |
download | rockbox-83dc89f751bc57e060f5a4882beafb3064c3fd80.tar.gz rockbox-83dc89f751bc57e060f5a4882beafb3064c3fd80.zip |
m200v4: make buttons work again (added a small delay). make m200 keymap better. Add button mappings for the sim. Remove some config defines temporary to make building work again.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19104 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/keymaps/keymap-m200.c | 72 | ||||
-rw-r--r-- | firmware/export/config-m200v4.h | 6 | ||||
-rw-r--r-- | firmware/target/arm/as3525/sansa-m200v4/button-m200v4.c | 14 | ||||
-rw-r--r-- | uisimulator/sdl/button.c | 29 |
4 files changed, 81 insertions, 40 deletions
diff --git a/apps/keymaps/keymap-m200.c b/apps/keymaps/keymap-m200.c index 46a109815c..20c2fb931f 100644 --- a/apps/keymaps/keymap-m200.c +++ b/apps/keymaps/keymap-m200.c | |||
@@ -18,7 +18,7 @@ | |||
18 | * KIND, either express or implied. | 18 | * KIND, either express or implied. |
19 | * | 19 | * |
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | /* Button Code Definitions for Sandisk c200 target */ | 21 | /* Button Code Definitions for Sandisk m200 target */ |
22 | 22 | ||
23 | #include "config.h" | 23 | #include "config.h" |
24 | #include "action.h" | 24 | #include "action.h" |
@@ -34,11 +34,11 @@ | |||
34 | * Insert LAST_ITEM_IN_LIST at the end of each mapping | 34 | * Insert LAST_ITEM_IN_LIST at the end of each mapping |
35 | */ | 35 | */ |
36 | static const struct button_mapping button_context_standard[] = { | 36 | static const struct button_mapping button_context_standard[] = { |
37 | { ACTION_STD_PREV, BUTTON_VOLUP, BUTTON_NONE }, | 37 | { ACTION_STD_PREV, BUTTON_PLAYPAUSE, BUTTON_NONE }, |
38 | { ACTION_STD_PREVREPEAT, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE }, | 38 | { ACTION_STD_PREVREPEAT, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, |
39 | 39 | ||
40 | { ACTION_STD_NEXT, BUTTON_VOLDOWN, BUTTON_NONE }, | 40 | { ACTION_STD_NEXT, BUTTON_REPEATAB, BUTTON_NONE }, |
41 | { ACTION_STD_NEXTREPEAT, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE }, | 41 | { ACTION_STD_NEXTREPEAT, BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_NONE }, |
42 | 42 | ||
43 | { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | 43 | { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, |
44 | { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, | 44 | { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, |
@@ -53,8 +53,8 @@ static const struct button_mapping button_context_standard[] = { | |||
53 | 53 | ||
54 | 54 | ||
55 | static const struct button_mapping button_context_wps[] = { | 55 | static const struct button_mapping button_context_wps[] = { |
56 | { ACTION_WPS_PLAY, BUTTON_VOLUP|BUTTON_REL, BUTTON_VOLUP }, | 56 | { ACTION_WPS_PLAY, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE }, |
57 | { ACTION_WPS_STOP, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_VOLUP }, | 57 | { ACTION_WPS_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_PLAYPAUSE }, |
58 | 58 | ||
59 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | 59 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, |
60 | { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | 60 | { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, |
@@ -66,14 +66,20 @@ static const struct button_mapping button_context_wps[] = { | |||
66 | 66 | ||
67 | { ACTION_WPS_ABSETB_NEXTDIR,BUTTON_MENU|BUTTON_RIGHT, BUTTON_MENU }, | 67 | { ACTION_WPS_ABSETB_NEXTDIR,BUTTON_MENU|BUTTON_RIGHT, BUTTON_MENU }, |
68 | { ACTION_WPS_ABSETA_PREVDIR,BUTTON_MENU|BUTTON_LEFT, BUTTON_MENU }, | 68 | { ACTION_WPS_ABSETA_PREVDIR,BUTTON_MENU|BUTTON_LEFT, BUTTON_MENU }, |
69 | { ACTION_WPS_ABRESET, BUTTON_MENU|BUTTON_VOLUP, BUTTON_MENU }, | 69 | { ACTION_WPS_ABRESET, BUTTON_MENU|BUTTON_PLAYPAUSE, BUTTON_MENU }, |
70 | |||
71 | { ACTION_WPS_VOLUP, BUTTON_VOLUP, BUTTON_NONE }, | ||
72 | { ACTION_WPS_VOLUP, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE }, | ||
73 | |||
74 | { ACTION_WPS_VOLDOWN, BUTTON_VOLDOWN, BUTTON_NONE }, | ||
75 | { ACTION_WPS_VOLDOWN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
70 | 76 | ||
71 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 77 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
72 | { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | 78 | { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, |
73 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_VOLUP, BUTTON_SELECT }, | 79 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_PLAYPAUSE, BUTTON_SELECT }, |
74 | { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_VOLDOWN, BUTTON_SELECT }, | 80 | { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_REPEATAB, BUTTON_SELECT }, |
75 | { ACTION_WPS_CONTEXT, BUTTON_VOLDOWN|BUTTON_REL, BUTTON_VOLDOWN }, | 81 | { ACTION_WPS_CONTEXT, BUTTON_REPEATAB|BUTTON_REL, BUTTON_REPEATAB }, |
76 | { ACTION_WPS_QUICKSCREEN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_VOLDOWN }, | 82 | { ACTION_WPS_QUICKSCREEN, BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_REPEATAB }, |
77 | 83 | ||
78 | LAST_ITEM_IN_LIST | 84 | LAST_ITEM_IN_LIST |
79 | }; /* button_context_wps */ | 85 | }; /* button_context_wps */ |
@@ -82,11 +88,11 @@ static const struct button_mapping button_context_settings[] = { | |||
82 | { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE }, | 88 | { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE }, |
83 | { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, | 89 | { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, |
84 | 90 | ||
85 | { ACTION_SETTINGS_INC, BUTTON_VOLUP, BUTTON_NONE }, | 91 | { ACTION_SETTINGS_INC, BUTTON_PLAYPAUSE, BUTTON_NONE }, |
86 | { ACTION_SETTINGS_INCREPEAT,BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE }, | 92 | { ACTION_SETTINGS_INCREPEAT,BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, |
87 | 93 | ||
88 | { ACTION_SETTINGS_DEC, BUTTON_VOLDOWN, BUTTON_NONE }, | 94 | { ACTION_SETTINGS_DEC, BUTTON_REPEATAB, BUTTON_NONE }, |
89 | { ACTION_SETTINGS_DECREPEAT,BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE }, | 95 | { ACTION_SETTINGS_DECREPEAT,BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_NONE }, |
90 | 96 | ||
91 | { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, | 97 | { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, |
92 | { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | 98 | { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, |
@@ -132,7 +138,7 @@ static const struct button_mapping button_context_listtree_scroll_without_combo[ | |||
132 | }; /* button_context_listtree_scroll_without_combo */ | 138 | }; /* button_context_listtree_scroll_without_combo */ |
133 | 139 | ||
134 | static const struct button_mapping button_context_listtree_scroll_with_combo[] = { | 140 | static const struct button_mapping button_context_listtree_scroll_with_combo[] = { |
135 | { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | 141 | // { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, |
136 | 142 | ||
137 | // { ACTION_TREE_PGLEFT, BUTTON_REC|BUTTON_LEFT, BUTTON_REC }, | 143 | // { ACTION_TREE_PGLEFT, BUTTON_REC|BUTTON_LEFT, BUTTON_REC }, |
138 | // { ACTION_TREE_PGLEFT, BUTTON_REC|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | 144 | // { ACTION_TREE_PGLEFT, BUTTON_REC|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, |
@@ -153,11 +159,11 @@ static const struct button_mapping button_context_quickscreen[] = { | |||
153 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | 159 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, |
154 | { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_NONE }, | 160 | { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_NONE }, |
155 | 161 | ||
156 | { ACTION_QS_DOWNINV, BUTTON_VOLUP|BUTTON_REL, BUTTON_NONE }, | 162 | { ACTION_QS_DOWNINV, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_NONE }, |
157 | { ACTION_QS_DOWNINV, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE }, | 163 | { ACTION_QS_DOWNINV, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, |
158 | 164 | ||
159 | { ACTION_QS_DOWN, BUTTON_VOLDOWN|BUTTON_REL, BUTTON_NONE }, | 165 | { ACTION_QS_DOWN, BUTTON_REPEATAB|BUTTON_REL, BUTTON_NONE }, |
160 | { ACTION_QS_DOWN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE }, | 166 | { ACTION_QS_DOWN, BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_NONE }, |
161 | 167 | ||
162 | { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | 168 | { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, |
163 | { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | 169 | { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, |
@@ -181,11 +187,11 @@ static const struct button_mapping button_context_settings_right_is_inc[] = { | |||
181 | }; /* button_context_settings_right_is_inc */ | 187 | }; /* button_context_settings_right_is_inc */ |
182 | 188 | ||
183 | static const struct button_mapping button_context_pitchscreen[] = { | 189 | static const struct button_mapping button_context_pitchscreen[] = { |
184 | { ACTION_PS_INC_SMALL, BUTTON_VOLUP, BUTTON_NONE }, | 190 | { ACTION_PS_INC_SMALL, BUTTON_PLAYPAUSE, BUTTON_NONE }, |
185 | { ACTION_PS_INC_BIG, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE }, | 191 | { ACTION_PS_INC_BIG, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, |
186 | 192 | ||
187 | { ACTION_PS_DEC_SMALL, BUTTON_VOLDOWN, BUTTON_NONE }, | 193 | { ACTION_PS_DEC_SMALL, BUTTON_REPEATAB, BUTTON_NONE }, |
188 | { ACTION_PS_DEC_BIG, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE }, | 194 | { ACTION_PS_DEC_BIG, BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_NONE }, |
189 | 195 | ||
190 | { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE }, | 196 | { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE }, |
191 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | 197 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, |
@@ -219,13 +225,13 @@ static const struct button_mapping button_context_recscreen[] = { | |||
219 | /** FM Radio Screen **/ | 225 | /** FM Radio Screen **/ |
220 | #if CONFIG_TUNER | 226 | #if CONFIG_TUNER |
221 | static const struct button_mapping button_context_radio[] = { | 227 | static const struct button_mapping button_context_radio[] = { |
222 | { ACTION_NONE, BUTTON_VOLUP, BUTTON_NONE }, | 228 | { ACTION_NONE, BUTTON_PLAYPAUSE, BUTTON_NONE }, |
223 | { ACTION_FM_MENU, BUTTON_VOLDOWN, BUTTON_NONE }, | 229 | { ACTION_FM_MENU, BUTTON_REPEATAB, BUTTON_NONE }, |
224 | { ACTION_FM_PRESET, BUTTON_SELECT, BUTTON_NONE }, | 230 | { ACTION_FM_PRESET, BUTTON_SELECT, BUTTON_NONE }, |
225 | { ACTION_FM_STOP, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_VOLUP }, | 231 | { ACTION_FM_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_PLAYPAUSE }, |
226 | { ACTION_FM_MODE, BUTTON_REC, BUTTON_NONE }, | 232 | { ACTION_FM_MODE, BUTTON_REC, BUTTON_NONE }, |
227 | { ACTION_FM_EXIT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 233 | { ACTION_FM_EXIT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
228 | { ACTION_FM_PLAY, BUTTON_VOLUP|BUTTON_REL, BUTTON_VOLUP }, | 234 | { ACTION_FM_PLAY, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE }, |
229 | { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE }, | 235 | { ACTION_SETTINGS_INC, BUTTON_VOL_UP, BUTTON_NONE }, |
230 | { ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, | 236 | { ACTION_SETTINGS_INCREPEAT,BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, |
231 | { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE }, | 237 | { ACTION_SETTINGS_DEC, BUTTON_VOL_DOWN, BUTTON_NONE }, |
@@ -246,10 +252,10 @@ static const struct button_mapping button_context_keyboard[] = { | |||
246 | // { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT, BUTTON_NONE }, | 252 | // { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT, BUTTON_NONE }, |
247 | // { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT|BUTTON_REPEAT,BUTTON_NONE }, | 253 | // { ACTION_KBD_CURSOR_RIGHT, BUTTON_REC|BUTTON_RIGHT|BUTTON_REPEAT,BUTTON_NONE }, |
248 | 254 | ||
249 | { ACTION_KBD_UP, BUTTON_VOLUP, BUTTON_NONE }, | 255 | { ACTION_KBD_UP, BUTTON_PLAYPAUSE, BUTTON_NONE }, |
250 | { ACTION_KBD_UP, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE }, | 256 | { ACTION_KBD_UP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, |
251 | { ACTION_KBD_DOWN, BUTTON_VOLDOWN, BUTTON_NONE }, | 257 | { ACTION_KBD_DOWN, BUTTON_REPEATAB, BUTTON_NONE }, |
252 | { ACTION_KBD_DOWN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE }, | 258 | { ACTION_KBD_DOWN, BUTTON_REPEATAB|BUTTON_REPEAT, BUTTON_NONE }, |
253 | 259 | ||
254 | // { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_VOLDOWN, BUTTON_NONE }, | 260 | // { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_VOLDOWN, BUTTON_NONE }, |
255 | // { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_VOLDOWN|BUTTON_REPEAT,BUTTON_NONE }, | 261 | // { ACTION_KBD_BACKSPACE, BUTTON_REC|BUTTON_VOLDOWN|BUTTON_REPEAT,BUTTON_NONE }, |
diff --git a/firmware/export/config-m200v4.h b/firmware/export/config-m200v4.h index b16b5fed43..de66788f75 100644 --- a/firmware/export/config-m200v4.h +++ b/firmware/export/config-m200v4.h | |||
@@ -38,12 +38,12 @@ | |||
38 | #define HAVE_LCD_INVERT | 38 | #define HAVE_LCD_INVERT |
39 | 39 | ||
40 | /* define this if you have access to the quickscreen */ | 40 | /* define this if you have access to the quickscreen */ |
41 | #define HAVE_QUICKSCREEN | 41 | //#define HAVE_QUICKSCREEN |
42 | /* define this if you have access to the pitchscreen */ | 42 | /* define this if you have access to the pitchscreen */ |
43 | #define HAVE_PITCHSCREEN | 43 | //#define HAVE_PITCHSCREEN |
44 | 44 | ||
45 | /* define this if you would like tagcache to build on this target */ | 45 | /* define this if you would like tagcache to build on this target */ |
46 | #define HAVE_TAGCACHE | 46 | //#define HAVE_TAGCACHE |
47 | 47 | ||
48 | /* define this if you have a flash memory storage */ | 48 | /* define this if you have a flash memory storage */ |
49 | #define HAVE_FLASH_STORAGE | 49 | #define HAVE_FLASH_STORAGE |
diff --git a/firmware/target/arm/as3525/sansa-m200v4/button-m200v4.c b/firmware/target/arm/as3525/sansa-m200v4/button-m200v4.c index c5d6c4941d..f8d64e2785 100644 --- a/firmware/target/arm/as3525/sansa-m200v4/button-m200v4.c +++ b/firmware/target/arm/as3525/sansa-m200v4/button-m200v4.c | |||
@@ -30,17 +30,20 @@ void button_init_device(void) | |||
30 | GPIOA_DIR |= ((1<<6) | (1<<5) | (1<<4)); /* A4-A6 row outputs */ | 30 | GPIOA_DIR |= ((1<<6) | (1<<5) | (1<<4)); /* A4-A6 row outputs */ |
31 | } | 31 | } |
32 | 32 | ||
33 | /* short delay is needed between raising a colum pin, and reading the row pin. values is arbitraty */ | ||
34 | static inline void btn_delay(void) { int i = 5; while(i--) ; } | ||
35 | |||
33 | int button_read_device(void) | 36 | int button_read_device(void) |
34 | { | 37 | { |
35 | int result = BUTTON_NONE; | 38 | int result = BUTTON_NONE; |
36 | 39 | ||
37 | /* direct GPIO connections */ | 40 | /* direct GPIO connections */ |
38 | if (GPIOA_PIN(3)) | 41 | if (GPIOA_PIN(3)) |
39 | result |= BUTTON_MENU; | 42 | result |= BUTTON_MENU; |
40 | 43 | ||
41 | /* This is a keypad using A4-A6 as columns and A0-A2 as rows */ | 44 | /* This is a keypad using A4-A6 as columns and A0-A2 as rows */ |
42 | GPIOA_PIN(4) = (1<<4); | 45 | GPIOA_PIN(4) = (1<<4); |
43 | 46 | btn_delay(); | |
44 | /* A4A0 is unused */ | 47 | /* A4A0 is unused */ |
45 | 48 | ||
46 | if (GPIOA_PIN(1)) | 49 | if (GPIOA_PIN(1)) |
@@ -52,7 +55,8 @@ int button_read_device(void) | |||
52 | GPIOA_PIN(4) = 0x00; | 55 | GPIOA_PIN(4) = 0x00; |
53 | 56 | ||
54 | GPIOA_PIN(5) = (1<<5); | 57 | GPIOA_PIN(5) = (1<<5); |
55 | 58 | btn_delay(); | |
59 | |||
56 | if (GPIOA_PIN(0)) | 60 | if (GPIOA_PIN(0)) |
57 | result |= BUTTON_LEFT; | 61 | result |= BUTTON_LEFT; |
58 | 62 | ||
@@ -66,7 +70,8 @@ int button_read_device(void) | |||
66 | 70 | ||
67 | 71 | ||
68 | GPIOA_PIN(6) = (1<<6); | 72 | GPIOA_PIN(6) = (1<<6); |
69 | 73 | btn_delay(); | |
74 | |||
70 | if (GPIOA_PIN(0)) | 75 | if (GPIOA_PIN(0)) |
71 | result |= BUTTON_REPEATAB; | 76 | result |= BUTTON_REPEATAB; |
72 | 77 | ||
@@ -75,6 +80,7 @@ int button_read_device(void) | |||
75 | 80 | ||
76 | if (GPIOA_PIN(2)) | 81 | if (GPIOA_PIN(2)) |
77 | result |= BUTTON_HOLD; | 82 | result |= BUTTON_HOLD; |
83 | |||
78 | GPIOA_PIN(6) = 0x00; | 84 | GPIOA_PIN(6) = 0x00; |
79 | 85 | ||
80 | return result; | 86 | return result; |
diff --git a/uisimulator/sdl/button.c b/uisimulator/sdl/button.c index 614308a070..6246228dd8 100644 --- a/uisimulator/sdl/button.c +++ b/uisimulator/sdl/button.c | |||
@@ -1020,6 +1020,35 @@ void button_event(int key, bool pressed) | |||
1020 | case SDLK_p: | 1020 | case SDLK_p: |
1021 | new_btn = BUTTON_POWER; | 1021 | new_btn = BUTTON_POWER; |
1022 | break; | 1022 | break; |
1023 | #elif CONFIG_KEYPAD == SANSA_M200_PAD | ||
1024 | case SDLK_KP4: | ||
1025 | case SDLK_LEFT: | ||
1026 | new_btn = BUTTON_LEFT; | ||
1027 | break; | ||
1028 | case SDLK_KP6: | ||
1029 | case SDLK_RIGHT: | ||
1030 | new_btn = BUTTON_RIGHT; | ||
1031 | break; | ||
1032 | case SDLK_KP8: | ||
1033 | case SDLK_UP: | ||
1034 | new_btn = BUTTON_PLAYPAUSE; | ||
1035 | break; | ||
1036 | case SDLK_KP2: | ||
1037 | case SDLK_DOWN: | ||
1038 | new_btn = BUTTON_REPEATAB; | ||
1039 | break; | ||
1040 | case SDLK_PLUS: | ||
1041 | new_btn = BUTTON_MENU; | ||
1042 | break; | ||
1043 | case SDLK_KP5: | ||
1044 | new_btn = BUTTON_SELECT; | ||
1045 | break; | ||
1046 | case SDLK_KP7: | ||
1047 | new_btn = BUTTON_VOLDOWN; | ||
1048 | break; | ||
1049 | case SDLK_KP9: | ||
1050 | new_btn = BUTTON_VOLUP; | ||
1051 | break; | ||
1023 | #else | 1052 | #else |
1024 | #error No keymap defined! | 1053 | #error No keymap defined! |
1025 | #endif /* CONFIG_KEYPAD */ | 1054 | #endif /* CONFIG_KEYPAD */ |