summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/keymaps/keymap-fuzeplus.c238
-rw-r--r--apps/plugins/text_viewer/tv_button.h10
2 files changed, 144 insertions, 104 deletions
diff --git a/apps/keymaps/keymap-fuzeplus.c b/apps/keymaps/keymap-fuzeplus.c
index 0a4db76f03..00a5274911 100644
--- a/apps/keymaps/keymap-fuzeplus.c
+++ b/apps/keymaps/keymap-fuzeplus.c
@@ -39,49 +39,30 @@ static const struct button_mapping button_context_standard[] = {
39 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 39 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
40 40
41 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, 41 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
42 { ACTION_STD_CONTEXT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
43
42 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE }, 44 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
45 { ACTION_STD_CANCEL, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE },
43 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, 46 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
44 47 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
45
46 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 48 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
47 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, 49 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
48
49#ifdef HAVE_VOLUME_IN_LIST
50 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
51 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
52 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
53 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
54#endif
55
56 { ACTION_TREE_WPS, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE },
57 { ACTION_TREE_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE },
58 50
59 { ACTION_STD_KEYLOCK, BUTTON_POWER, BUTTON_NONE }, 51 { ACTION_STD_KEYLOCK, BUTTON_POWER, BUTTON_NONE },
60 52
53/* { ACTION_STD_QUICKSCREEN, BUTTON_REC|BUTTON_SELECT, BUTTON_REC },
54 { ACTION_STD_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC },
55 { ACTION_STD_HOTKEY, BUTTON_REC|BUTTON_SELECT, BUTTON_REC },
56 { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
57 on some gesture later? */
58
61 LAST_ITEM_IN_LIST 59 LAST_ITEM_IN_LIST
62}; /* button_context_standard */ 60}; /* button_context_standard */
63 61
64
65static const struct button_mapping button_context_list[] = {
66
67 { ACTION_LISTTREE_PGUP, BUTTON_BOTTOMLEFT, BUTTON_NONE },
68 { ACTION_LISTTREE_PGUP, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_BOTTOMLEFT },
69 { ACTION_LISTTREE_PGDOWN, BUTTON_BOTTOMRIGHT, BUTTON_NONE },
70 { ACTION_LISTTREE_PGDOWN, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT },
71/*#ifdef HAVE_HOTKEY on some gesture later?
72 { ACTION_TREE_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_BACK|BUTTON_REPEAT },
73#endif*/
74
75 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
76}; /* button_context_list */
77
78static const struct button_mapping button_context_wps[] = { 62static const struct button_mapping button_context_wps[] = {
79 { ACTION_WPS_PLAY, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE }, 63 { ACTION_WPS_PLAY, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE },
80 { ACTION_WPS_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, 64 { ACTION_WPS_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE },
81 65
82 { ACTION_WPS_MENU, BUTTON_BACK, BUTTON_NONE },
83
84 { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
85 { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE }, 66 { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE },
86 67
87 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 68 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
@@ -91,22 +72,31 @@ static const struct button_mapping button_context_wps[] = {
91 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 72 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
92 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 73 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
93 74
94 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
95 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
96 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, 75 { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
97 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 76 { ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
98
99 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
100 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
101 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, 77 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
102 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE }, 78 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
103 79
80 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
81 { ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
82 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
83 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
84
85 { ACTION_WPS_MENU, BUTTON_BACK, BUTTON_NONE },
86 { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
104 { ACTION_WPS_PITCHSCREEN, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_BOTTOMLEFT }, 87 { ACTION_WPS_PITCHSCREEN, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_BOTTOMLEFT },
105 { ACTION_WPS_QUICKSCREEN, BUTTON_BOTTOMLEFT|BUTTON_REL, BUTTON_BOTTOMLEFT }, 88 { ACTION_WPS_QUICKSCREEN, BUTTON_BOTTOMLEFT|BUTTON_REL, BUTTON_BOTTOMLEFT },
106 { ACTION_WPS_ID3SCREEN, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT }, 89 { ACTION_WPS_ID3SCREEN, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT },
107 90
108 { ACTION_WPS_HOTKEY, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, 91 { ACTION_WPS_HOTKEY, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT },
109 92
93/* Playlist should be hard linked on BOTTOMRIGHT and hotkey move to some gesture in the future
94 { ACTION_WPS_VIEW_PLAYLIST, BUTTON_BACK|BUTTON_DOWN, BUTTON_NONE },
95 { ACTION_WPS_ABSETB_NEXTDIR, BUTTON_BACK|BUTTON_RIGHT, BUTTON_BACK },
96 { ACTION_WPS_ABSETA_PREVDIR, BUTTON_BACK|BUTTON_LEFT, BUTTON_BACK },
97 { ACTION_WPS_ABRESET, BUTTON_BACK|BUTTON_SELECT, BUTTON_BACK },
98 on some gesture later? */
99
110 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 100 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
111}; /* button_context_wps */ 101}; /* button_context_wps */
112 102
@@ -128,77 +118,86 @@ static const struct button_mapping button_context_keyboard[] = {
128 { ACTION_KBD_BACKSPACE, BUTTON_BACK, BUTTON_NONE }, 118 { ACTION_KBD_BACKSPACE, BUTTON_BACK, BUTTON_NONE },
129 { ACTION_KBD_BACKSPACE, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE }, 119 { ACTION_KBD_BACKSPACE, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE },
130 120
131 { ACTION_KBD_SELECT, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE }, 121 { ACTION_KBD_SELECT, BUTTON_PLAYPAUSE, BUTTON_NONE },
132 { ACTION_KBD_DONE, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE }, 122 { ACTION_KBD_DONE, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
133 { ACTION_KBD_ABORT, BUTTON_POWER, BUTTON_NONE }, 123 { ACTION_KBD_ABORT, BUTTON_POWER, BUTTON_NONE },
134 124
125 { ACTION_KBD_MORSE_INPUT, BUTTON_VOL_UP, BUTTON_NONE },
126 { ACTION_KBD_MORSE_SELECT, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_NONE },
127
135 LAST_ITEM_IN_LIST 128 LAST_ITEM_IN_LIST
136}; /* button_context_keyboard */ 129}; /* button_context_keyboard */
137 130
138static const struct button_mapping button_context_quickscreen[] = { 131static const struct button_mapping button_context_quickscreen[] = {
139 { ACTION_STD_CANCEL, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE }, 132 { ACTION_STD_CANCEL, BUTTON_SELECT, BUTTON_NONE },
140 { ACTION_STD_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_NONE }, 133 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
141 { ACTION_STD_CANCEL, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_NONE }, 134 { ACTION_STD_CANCEL, BUTTON_PLAYPAUSE, BUTTON_NONE },
142 { ACTION_STD_CANCEL, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_NONE }, 135 { ACTION_STD_CANCEL, BUTTON_BOTTOMRIGHT, BUTTON_NONE },
143 { ACTION_STD_CANCEL, BUTTON_BOTTOMLEFT|BUTTON_REL, BUTTON_NONE }, 136 { ACTION_STD_CANCEL, BUTTON_BOTTOMLEFT, BUTTON_NONE },
144 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 137 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
145 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 138 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
146 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 139 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
147 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 140 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
148 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
149 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
150 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
151 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
152 141
153 LAST_ITEM_IN_LIST 142 LAST_ITEM_IN_LIST
154}; /* button_context_quickscreen */ 143}; /* button_context_quickscreen */
155 144
156static const struct button_mapping button_context_tree[] = { 145static const struct button_mapping button_context_tree[] = {
146 { ACTION_TREE_WPS, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE },
147 { ACTION_TREE_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE },
157 148
158 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) 149 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
159}; /* button_context_tree */ 150}; /* button_context_tree */
160 151
161static const struct button_mapping button_context_radio[] = { 152static const struct button_mapping button_context_list[] = {
162 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, 153#ifdef HAVE_VOLUME_IN_LIST
163 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 154 { ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
164 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, 155 { ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
165 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 156 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
157 { ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
158#endif
159 { ACTION_LISTTREE_PGUP, BUTTON_BOTTOMLEFT, BUTTON_NONE },
160 { ACTION_LISTTREE_PGUP, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_NONE },
161 { ACTION_LISTTREE_PGDOWN, BUTTON_BOTTOMRIGHT, BUTTON_NONE },
162 { ACTION_LISTTREE_PGDOWN, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_NONE },
163/*#ifdef HAVE_HOTKEY on some gesture later?
164 { ACTION_TREE_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_BACK|BUTTON_REPEAT },
165#endif*/
166
167 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
168}; /* button_context_list */
166 169
167 { ACTION_FM_MENU, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE }, 170#ifdef CONFIG_TUNER
168 { ACTION_FM_PRESET, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 171static const struct button_mapping button_context_radio[] = {
172/* { ACTION_FM_MENU, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE }, */
173 { ACTION_FM_PRESET, BUTTON_BOTTOMRIGHT, BUTTON_SELECT },
169 { ACTION_FM_PLAY, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE }, 174 { ACTION_FM_PLAY, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE },
170 { ACTION_FM_STOP, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_NONE }, 175 { ACTION_FM_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE },
171 { ACTION_FM_MODE, BUTTON_BOTTOMLEFT|BUTTON_REL, BUTTON_BOTTOMLEFT }, 176 { ACTION_FM_MODE, BUTTON_BOTTOMLEFT, BUTTON_BOTTOMLEFT },
172 177
173 { ACTION_FM_EXIT, BUTTON_BACK|BUTTON_REL, BUTTON_NONE }, 178 { ACTION_FM_EXIT, BUTTON_BACK, BUTTON_NONE },
174 179
175 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 180 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
176}; /* button_context_radio */ 181}; /* button_context_radio */
182#endif
177 183
184#ifdef HAVE_RECORDING
178static const struct button_mapping button_context_recscreen[] = { 185static const struct button_mapping button_context_recscreen[] = {
179 { ACTION_REC_PAUSE, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE }, 186 { ACTION_REC_PAUSE, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE },
180 { ACTION_REC_NEWFILE, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_NONE }, 187 { ACTION_REC_NEWFILE, BUTTON_BOTTOMRIGHT, BUTTON_NONE },
181 188 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
182 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS) 189 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
183}; /* button_context_recscreen */ 190 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
184 191 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
185static const struct button_mapping button_context_time[] = {
186
187 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
188}; /* button_context_time */
189
190static const struct button_mapping button_context_settings_right_is_inc[] = {
191 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
192 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
193 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
194 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
195
196 { ACTION_SETTINGS_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE },
197 192
198 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 193 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
199}; /* button_context_settingsgraphical */ 194}; /* button_context_recscreen */
195#endif
200 196
201static const struct button_mapping button_context_settings[] = { 197static const struct button_mapping button_context_settings[] = {
198 /* we overwrite this to avoid select from std */
199 { ACTION_NONE, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
200
202 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, 201 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
203 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 202 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
204 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, 203 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
@@ -209,13 +208,38 @@ static const struct button_mapping button_context_settings[] = {
209 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, 208 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
210 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 209 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
211 210
212 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 211 { ACTION_SETTINGS_INCBIGSTEP, BUTTON_BOTTOMRIGHT, BUTTON_NONE },
212 { ACTION_SETTINGS_INCBIGSTEP, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_NONE },
213 { ACTION_SETTINGS_DECBIGSTEP, BUTTON_BOTTOMLEFT, BUTTON_NONE },
214 { ACTION_SETTINGS_DECBIGSTEP, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_NONE },
213 215
214 { ACTION_SETTINGS_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, 216 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
217 { ACTION_SETTINGS_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE },
215 218
216 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 219 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
217}; /* button_context_settings */ 220}; /* button_context_settings */
218 221
222static const struct button_mapping button_context_settings_right_is_inc[] = {
223 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
224 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
225 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
226 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
227 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
228 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
229 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
230 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
231
232 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
233}; /* button_context_settingsgraphical */
234
235static const struct button_mapping button_context_time[] = {
236
237 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
238 { ACTION_STD_OK, BUTTON_PLAYPAUSE, BUTTON_NONE },
239
240 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
241}; /* button_context_time */
242
219static const struct button_mapping button_context_colorchooser[] = { 243static const struct button_mapping button_context_colorchooser[] = {
220 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 244 { ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
221 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE }, 245 { ACTION_STD_CANCEL, BUTTON_BACK, BUTTON_NONE },
@@ -242,16 +266,18 @@ static const struct button_mapping button_context_pitchscreen[] = {
242 { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 266 { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
243 { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE }, 267 { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
244 { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 268 { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
269
245 { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE }, 270 { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
246 { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, 271 { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
247 { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 272 { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
248 { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE }, 273 { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
249 { ACTION_PS_TOGGLE_MODE, BUTTON_PLAYPAUSE, BUTTON_NONE }, 274
250 { ACTION_PS_TOGGLE_MODE, BUTTON_BOTTOMRIGHT, BUTTON_NONE }, 275 { ACTION_PS_TOGGLE_MODE, BUTTON_BOTTOMRIGHT, BUTTON_NONE },
276
251 { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE }, 277 { ACTION_PS_RESET, BUTTON_SELECT, BUTTON_NONE },
252 { ACTION_PS_EXIT, BUTTON_BACK, BUTTON_NONE }, 278 { ACTION_PS_EXIT, BUTTON_BACK, BUTTON_NONE },
253 { ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 279 { ACTION_PS_EXIT, BUTTON_PLAYPAUSE, BUTTON_NONE },
254 { ACTION_PS_FASTER, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 280
255 LAST_ITEM_IN_LIST 281 LAST_ITEM_IN_LIST
256}; /* button_context_pitchcreen */ 282}; /* button_context_pitchcreen */
257 283
@@ -282,7 +308,7 @@ static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
282 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 308 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
283 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_BACK|BUTTON_REL, BUTTON_BACK }, 309 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
284 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE }, 310 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE },
285 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, 311 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_PLAYPAUSE },
286 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 312 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
287 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 313 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
288 314
@@ -291,19 +317,19 @@ static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
291 317
292 318
293static const struct button_mapping button_context_usb_hid_mode_presentation[] = { 319static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
294 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE }, 320 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_PLAYPAUSE|BUTTON_REL, BUTTON_PLAYPAUSE },
295 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_PLAYPAUSE }, 321 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_PLAYPAUSE },
296 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 322 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
297 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 323 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
298 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 324 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
299 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 325 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
300 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, 326 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT },
301 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT }, 327 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_BOTTOMLEFT },
302 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_UP, BUTTON_NONE }, 328 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_UP, BUTTON_NONE },
303 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 329 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
304 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_DOWN, BUTTON_NONE }, 330 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_DOWN, BUTTON_NONE },
305 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 331 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
306 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 332 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT, BUTTON_SELECT },
307 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, 333 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
308 334
309 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 335 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
@@ -314,17 +340,21 @@ static const struct button_mapping button_context_usb_hid_mode_browser[] = {
314 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 340 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
315 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_DOWN, BUTTON_NONE }, 341 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_DOWN, BUTTON_NONE },
316 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 342 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
317 343 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_BOTTOMLEFT, BUTTON_NONE },
318 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_PLAYPAUSE|BUTTON_REPEAT, BUTTON_NONE }, 344 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_NONE },
319 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_NONE }, 345 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_BOTTOMRIGHT, BUTTON_NONE },
320 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, 346 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_NONE },
321 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_PLAYPAUSE|BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_PLAYPAUSE|BUTTON_BOTTOMRIGHT }, 347 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_VOL_UP, BUTTON_NONE },
348 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
349 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_VOL_DOWN, BUTTON_NONE },
350 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
351 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_PLAYPAUSE, BUTTON_NONE },
322 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 352 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
323 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 353 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
324 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK }, 354 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
325 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 355 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
326 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 356 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
327 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 357 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
328 358
329 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 359 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
330}; /* button_context_usb_hid_mode_browser */ 360}; /* button_context_usb_hid_mode_browser */
@@ -363,6 +393,8 @@ const struct button_mapping* get_context_mapping(int context)
363 { 393 {
364 case CONTEXT_STD: 394 case CONTEXT_STD:
365 return button_context_standard; 395 return button_context_standard;
396 case CONTEXT_MAINMENU:
397 return button_context_tree;
366 case CONTEXT_SETTINGS: 398 case CONTEXT_SETTINGS:
367 return button_context_settings; 399 return button_context_settings;
368 case CONTEXT_WPS: 400 case CONTEXT_WPS:
@@ -374,16 +406,20 @@ const struct button_mapping* get_context_mapping(int context)
374 case CONTEXT_KEYBOARD: 406 case CONTEXT_KEYBOARD:
375 case CONTEXT_MORSE_INPUT: 407 case CONTEXT_MORSE_INPUT:
376 return button_context_keyboard; 408 return button_context_keyboard;
409#ifdef CONFIG_TUNER
377 case CONTEXT_FM: 410 case CONTEXT_FM:
378 return button_context_radio; 411 return button_context_radio;
412#endif
379 case CONTEXT_LIST: 413 case CONTEXT_LIST:
380 return button_context_list; 414 return button_context_list;
381 case CONTEXT_TREE: 415 case CONTEXT_TREE:
382 return button_context_tree; 416 return button_context_tree;
383 case CONTEXT_SETTINGS_EQ: 417 case CONTEXT_SETTINGS_EQ:
384 return button_context_eq; 418 return button_context_eq;
419#ifdef HAVE_RECORDING
385 case CONTEXT_RECSCREEN: 420 case CONTEXT_RECSCREEN:
386 return button_context_recscreen; 421 return button_context_recscreen;
422#endif
387 case CONTEXT_QUICKSCREEN: 423 case CONTEXT_QUICKSCREEN:
388 return button_context_quickscreen; 424 return button_context_quickscreen;
389 case CONTEXT_BOOKMARKSCREEN: 425 case CONTEXT_BOOKMARKSCREEN:
diff --git a/apps/plugins/text_viewer/tv_button.h b/apps/plugins/text_viewer/tv_button.h
index fe16b5f8ce..d81bed3a40 100644
--- a/apps/plugins/text_viewer/tv_button.h
+++ b/apps/plugins/text_viewer/tv_button.h
@@ -420,9 +420,13 @@
420#define TV_SCROLL_DOWN BUTTON_DOWN 420#define TV_SCROLL_DOWN BUTTON_DOWN
421#define TV_SCREEN_LEFT BUTTON_LEFT 421#define TV_SCREEN_LEFT BUTTON_LEFT
422#define TV_SCREEN_RIGHT BUTTON_RIGHT 422#define TV_SCREEN_RIGHT BUTTON_RIGHT
423#define TV_MENU BUTTON_SELECT 423#define TV_MENU BUTTON_BACK
424#define TV_AUTOSCROLL BUTTON_BACK 424#define TV_AUTOSCROLL BUTTON_PLAYPAUSE
425#define TV_BOOKMARK BUTTON_PLAYPAUSE 425#define TV_BOOKMARK (BUTTON_SELECT | BUTTON_REPEAT)
426#define TV_COLUMN_LEFT BUTTON_BOTTOMLEFT
427#define TV_COLUMN_RIGHT BUTTON_BOTTOMRIGHT
428#define TV_LINE_UP BUTTON_VOL_UP
429#define TV_LINE_DOWN BUTTON_VOL_DOWN
426 430
427#elif CONFIG_KEYPAD == SANSA_CONNECT_PAD 431#elif CONFIG_KEYPAD == SANSA_CONNECT_PAD
428#define TV_QUIT BUTTON_POWER 432#define TV_QUIT BUTTON_POWER