diff options
-rw-r--r-- | apps/keymaps/keymap-hm60x.c | 170 |
1 files changed, 156 insertions, 14 deletions
diff --git a/apps/keymaps/keymap-hm60x.c b/apps/keymaps/keymap-hm60x.c index 735b5bd8f5..1050ec7f31 100644 --- a/apps/keymaps/keymap-hm60x.c +++ b/apps/keymaps/keymap-hm60x.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include "config.h" | 24 | #include "config.h" |
25 | #include "action.h" | 25 | #include "action.h" |
26 | #include "button.h" | 26 | #include "button.h" |
27 | #include "settings.h" | ||
27 | 28 | ||
28 | /* | 29 | /* |
29 | * The format of the list is as follows | 30 | * The format of the list is as follows |
@@ -31,7 +32,7 @@ | |||
31 | * if there's no need to check the previous button's value, use BUTTON_NONE | 32 | * 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 | * Insert LAST_ITEM_IN_LIST at the end of each mapping |
33 | */ | 34 | */ |
34 | static const struct button_mapping button_context_standard[] = { | 35 | static const struct button_mapping button_context_standard[] = { |
35 | { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, | 36 | { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, |
36 | { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | 37 | { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, |
37 | { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, | 38 | { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, |
@@ -40,12 +41,12 @@ static const struct button_mapping button_context_standard[] = { | |||
40 | { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | 41 | { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, |
41 | { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, | 42 | { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, |
42 | { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | 43 | { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, |
43 | { ACTION_STD_MENU, BUTTON_RIGHT, BUTTON_NONE }, | 44 | { ACTION_STD_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
44 | 45 | ||
45 | LAST_ITEM_IN_LIST | 46 | LAST_ITEM_IN_LIST |
46 | }; /* button_context_standard */ | 47 | }; /* button_context_standard */ |
47 | 48 | ||
48 | static const struct button_mapping button_context_wps[] = { | 49 | static const struct button_mapping button_context_wps[] = { |
49 | { ACTION_WPS_PLAY, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | 50 | { ACTION_WPS_PLAY, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, |
50 | { ACTION_WPS_STOP, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | 51 | { ACTION_WPS_STOP, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, |
51 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | 52 | { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, |
@@ -55,34 +56,175 @@ static const struct button_mapping button_context_wps[] = { | |||
55 | { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | 56 | { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, |
56 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | 57 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, |
57 | 58 | ||
59 | { ACTION_WPS_ABSETB_NEXTDIR,BUTTON_POWER|BUTTON_RIGHT, BUTTON_POWER }, | ||
60 | { ACTION_WPS_ABSETA_PREVDIR,BUTTON_POWER|BUTTON_LEFT, BUTTON_POWER }, | ||
61 | { ACTION_WPS_ABRESET, BUTTON_POWER|BUTTON_UP, BUTTON_POWER }, | ||
62 | |||
58 | { ACTION_WPS_BROWSE, BUTTON_UP|BUTTON_REL, BUTTON_UP }, | 63 | { ACTION_WPS_BROWSE, BUTTON_UP|BUTTON_REL, BUTTON_UP }, |
59 | { ACTION_WPS_CONTEXT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, | 64 | { ACTION_WPS_CONTEXT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, |
60 | { ACTION_WPS_MENU, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, | 65 | { ACTION_WPS_MENU, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, |
61 | { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | 66 | { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, |
62 | 67 | ||
68 | |||
63 | LAST_ITEM_IN_LIST | 69 | LAST_ITEM_IN_LIST |
64 | }; /* button_context_wps */ | 70 | }; /* button_context_wps */ |
65 | 71 | ||
72 | /** Bookmark Screen **/ | ||
73 | static const struct button_mapping button_context_bmark[] = { | ||
74 | { ACTION_BMS_DELETE, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | ||
75 | |||
76 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), | ||
77 | }; /* button_context_settings_bmark */ | ||
78 | |||
79 | |||
80 | /** Keyboard **/ | ||
81 | static const struct button_mapping button_context_keyboard[] = { | ||
82 | { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE }, | ||
83 | { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
84 | { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | ||
85 | { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
86 | { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE }, | ||
87 | { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
88 | { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE }, | ||
89 | { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
90 | { ACTION_KBD_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, | ||
91 | { ACTION_KBD_DONE, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT}, | ||
92 | { ACTION_KBD_ABORT, BUTTON_POWER|BUTTON_REL, BUTTON_NONE }, | ||
93 | |||
94 | LAST_ITEM_IN_LIST | ||
95 | }; /* button_context_keyboard */ | ||
96 | |||
97 | /** Pitchscreen **/ | ||
98 | static const struct button_mapping button_context_pitchscreen[] = { | ||
99 | { ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE }, | ||
100 | { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
101 | { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE }, | ||
102 | { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
103 | { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE }, | ||
104 | { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, | ||
105 | { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | ||
106 | { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, | ||
107 | { ACTION_PS_TOGGLE_MODE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, | ||
108 | { ACTION_PS_RESET, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT}, | ||
109 | { ACTION_PS_EXIT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, | ||
110 | |||
111 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
112 | }; /* button_context_pitchscreen */ | ||
113 | |||
114 | /** Quickscreen **/ | ||
115 | static const struct button_mapping button_context_quickscreen[] = { | ||
116 | { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE }, | ||
117 | { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
118 | { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, | ||
119 | { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
120 | { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, | ||
121 | { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
122 | { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | ||
123 | { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
124 | { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, | ||
125 | |||
126 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
127 | }; /* button_context_quickscreen */ | ||
66 | 128 | ||
129 | /** Settings - General Mappings **/ | ||
130 | static const struct button_mapping button_context_settings[] = { | ||
131 | { ACTION_SETTINGS_RESET, BUTTON_SELECT, BUTTON_NONE }, | ||
132 | { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, | ||
133 | { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, | ||
134 | { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, | ||
135 | { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
136 | { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, | ||
137 | { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
138 | { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, | ||
139 | { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
140 | |||
141 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
142 | }; /* button_context_settings */ | ||
143 | |||
144 | /** Settings - Using Sliders **/ | ||
145 | static const struct button_mapping button_context_settings_r_is_inc[] = { | ||
146 | { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE }, | ||
147 | { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
148 | { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE }, | ||
149 | { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
150 | |||
151 | { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, | ||
152 | |||
153 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
154 | }; /* button_context_settings_r_is_inc */ | ||
155 | |||
156 | /** Tree **/ | ||
157 | static const struct button_mapping button_context_tree[] = { | ||
158 | { ACTION_TREE_WPS, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, | ||
159 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_SELECT, BUTTON_POWER }, | ||
160 | { ACTION_TREE_HOTKEY, BUTTON_POWER|BUTTON_UP, BUTTON_POWER }, | ||
161 | |||
162 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | ||
163 | }; /* button_context_tree */ | ||
164 | |||
165 | static const struct button_mapping button_context_tree_scroll_lr[] = { | ||
166 | { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, | ||
167 | { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, | ||
168 | { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
169 | { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
170 | { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, | ||
171 | { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
172 | |||
173 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE), | ||
174 | }; /* button_context_tree_scroll_lr */ | ||
175 | |||
176 | /** Yes/No Screen **/ | ||
177 | static const struct button_mapping button_context_yesnoscreen[] = { | ||
178 | { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE }, | ||
179 | LAST_ITEM_IN_LIST | ||
180 | }; /* button_context_settings_yesnoscreen */ | ||
67 | 181 | ||
68 | /* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ | 182 | /* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ |
69 | const struct button_mapping* get_context_mapping(int context) | 183 | const struct button_mapping* get_context_mapping(int context) |
70 | { | 184 | { |
71 | switch (context) | 185 | switch (context) |
72 | { | 186 | { |
187 | /* anything that uses button_context_standard */ | ||
188 | case CONTEXT_LIST: | ||
73 | case CONTEXT_STD: | 189 | case CONTEXT_STD: |
190 | default: | ||
74 | return button_context_standard; | 191 | return button_context_standard; |
75 | case CONTEXT_WPS: | 192 | |
76 | return button_context_wps; | 193 | /* contexts with special mapping */ |
77 | 194 | case CONTEXT_BOOKMARKSCREEN: | |
195 | return button_context_bmark; | ||
196 | |||
197 | case CONTEXT_KEYBOARD: | ||
198 | case CONTEXT_MORSE_INPUT: | ||
199 | return button_context_keyboard; | ||
200 | |||
201 | case CONTEXT_PITCHSCREEN: | ||
202 | return button_context_pitchscreen; | ||
203 | |||
204 | case CONTEXT_QUICKSCREEN: | ||
205 | return button_context_quickscreen; | ||
206 | |||
207 | case CONTEXT_SETTINGS: | ||
208 | case CONTEXT_SETTINGS_TIME: | ||
209 | return button_context_settings; | ||
210 | |||
211 | case CONTEXT_SETTINGS_COLOURCHOOSER: | ||
212 | case CONTEXT_SETTINGS_EQ: | ||
213 | case CONTEXT_SETTINGS_RECTRIGGER: | ||
214 | return button_context_settings_r_is_inc; | ||
215 | |||
78 | case CONTEXT_TREE: | 216 | case CONTEXT_TREE: |
79 | case CONTEXT_LIST: | ||
80 | case CONTEXT_MAINMENU: | 217 | case CONTEXT_MAINMENU: |
81 | 218 | if (global_settings.hold_lr_for_scroll_in_list) | |
82 | case CONTEXT_SETTINGS: | 219 | return button_context_tree_scroll_lr; |
83 | case CONTEXT_SETTINGS|CONTEXT_REMOTE: | 220 | /* else fall through to CONTEXT_TREE|CONTEXT_CUSTOM */ |
84 | default: | 221 | case CONTEXT_TREE|CONTEXT_CUSTOM: |
85 | return button_context_standard; | 222 | return button_context_tree; |
86 | } | 223 | |
87 | return button_context_standard; | 224 | case CONTEXT_WPS: |
225 | return button_context_wps; | ||
226 | |||
227 | case CONTEXT_YESNOSCREEN: | ||
228 | return button_context_yesnoscreen; | ||
229 | } | ||
88 | } | 230 | } |