summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2006-08-16 00:32:45 +0000
committerJens Arnold <amiconn@rockbox.org>2006-08-16 00:32:45 +0000
commit1fdb5bff39158afedafbab369c61840f345251de (patch)
tree60b7b2ff42fc841773fc8ba17dc09b461f705711
parent013ab3dd3d49059a4896bce4498a48b91ade2bdc (diff)
downloadrockbox-1fdb5bff39158afedafbab369c61840f345251de.tar.gz
rockbox-1fdb5bff39158afedafbab369c61840f345251de.zip
Changed the button action code to allow both single-fire and multi-fire events to be triggered with _REPEAT. Also simplifies the code. * Made the button mapping tables const to save RAM when running rockbox from flash ROM. * Repaired button mappings for Ondio. * Repaired some more button mappings for player. * Added missing TREE_STOP for iriver, and fixed WPS skipping for recorder.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10600 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/action.c26
-rw-r--r--apps/action.h4
-rw-r--r--apps/keymaps/keymap-h1x0_h3x0.c112
-rw-r--r--apps/keymaps/keymap-ipod.c48
-rw-r--r--apps/keymaps/keymap-newtarget.c6
-rw-r--r--apps/keymaps/keymap-ondio.c88
-rw-r--r--apps/keymaps/keymap-player.c52
-rw-r--r--apps/keymaps/keymap-recorder.c80
-rw-r--r--apps/keymaps/keymap-x5.c46
-rw-r--r--apps/plugin.h2
10 files changed, 232 insertions, 232 deletions
diff --git a/apps/action.c b/apps/action.c
index fc5a8b88a9..02991c0127 100644
--- a/apps/action.c
+++ b/apps/action.c
@@ -33,7 +33,7 @@ bool allow_remote_actions = true;
33 * do_button_check is the worker function for get_default_action. 33 * do_button_check is the worker function for get_default_action.
34 * returns ACTION_UNKNOWN or the requested return value from the list. 34 * returns ACTION_UNKNOWN or the requested return value from the list.
35 */ 35 */
36inline int do_button_check(struct button_mapping *items, 36inline int do_button_check(const struct button_mapping *items,
37 int button, int last_button, int *start) 37 int button, int last_button, int *start)
38{ 38{
39 int i = 0; 39 int i = 0;
@@ -41,24 +41,12 @@ inline int do_button_check(struct button_mapping *items,
41 if (items == NULL) 41 if (items == NULL)
42 return ACTION_UNKNOWN; 42 return ACTION_UNKNOWN;
43 43
44 /* Special case to make the keymaps smaller */
45 if(button & BUTTON_REPEAT)
46 last_button &= ~BUTTON_REPEAT;
47
48 while (items[i].button_code != BUTTON_NONE) 44 while (items[i].button_code != BUTTON_NONE)
49 { 45 {
50 if (items[i].button_code == button) 46 if (items[i].button_code == button)
51 { 47 {
52 if (items[i].pre_button_code != BUTTON_NONE) 48 if ((items[i].pre_button_code == BUTTON_NONE)
53 { 49 || (items[i].pre_button_code == last_button))
54 if ((items[i].pre_button_code == last_button) ||
55 (items[i].button_code == last_button))
56 {
57 ret = items[i].action_code;
58 break;
59 }
60 }
61 else
62 { 50 {
63 ret = items[i].action_code; 51 ret = items[i].action_code;
64 break; 52 break;
@@ -70,7 +58,7 @@ inline int do_button_check(struct button_mapping *items,
70 return ret; 58 return ret;
71} 59}
72 60
73inline int get_next_context(struct button_mapping *items, int i) 61inline int get_next_context(const struct button_mapping *items, int i)
74{ 62{
75 while (items[i].button_code != BUTTON_NONE) 63 while (items[i].button_code != BUTTON_NONE)
76 i++; 64 i++;
@@ -95,9 +83,9 @@ inline int get_next_context(struct button_mapping *items, int i)
95 83
96 */ 84 */
97int get_action_worker(int context, int timeout, 85int get_action_worker(int context, int timeout,
98 struct button_mapping* (*get_context_map)(int) ) 86 const struct button_mapping* (*get_context_map)(int) )
99{ 87{
100 struct button_mapping *items = NULL; 88 const struct button_mapping *items = NULL;
101 int button; 89 int button;
102 int i=0; 90 int i=0;
103 int ret = ACTION_UNKNOWN; 91 int ret = ACTION_UNKNOWN;
@@ -183,7 +171,7 @@ int get_action(int context, int timeout)
183} 171}
184 172
185int get_custom_action(int context,int timeout, 173int get_custom_action(int context,int timeout,
186 struct button_mapping* (*get_context_map)(int)) 174 const struct button_mapping* (*get_context_map)(int))
187{ 175{
188 return get_action_worker(context,timeout,get_context_map); 176 return get_action_worker(context,timeout,get_context_map);
189} 177}
diff --git a/apps/action.h b/apps/action.h
index 24f3d990f0..2210bda176 100644
--- a/apps/action.h
+++ b/apps/action.h
@@ -145,7 +145,7 @@ struct button_mapping {
145/* get_context_map is a function which returns a button_mapping* depedning on the given context */ 145/* get_context_map is a function which returns a button_mapping* depedning on the given context */
146/* custom button_mappings may "chain" to inbuilt CONTEXT's */ 146/* custom button_mappings may "chain" to inbuilt CONTEXT's */
147int get_custom_action(int context,int timeout, 147int get_custom_action(int context,int timeout,
148 struct button_mapping* (*get_context_map)(int)); 148 const struct button_mapping* (*get_context_map)(int));
149/* use if one of the standard CONTEXT_ mappings will work (ALL the core should be using this! */ 149/* use if one of the standard CONTEXT_ mappings will work (ALL the core should be using this! */
150int get_action(int context, int timeout); 150int get_action(int context, int timeout);
151/* call this whenever you leave your button loop */ 151/* call this whenever you leave your button loop */
@@ -160,6 +160,6 @@ bool action_userabort(int timeout);
160void action_setsoftwarekeylock(int unlock_action, bool allow_remote); 160void action_setsoftwarekeylock(int unlock_action, bool allow_remote);
161 161
162/* no other code should need this apart from action.c */ 162/* no other code should need this apart from action.c */
163struct button_mapping* get_context_mapping(int context); 163const struct button_mapping* get_context_mapping(int context);
164 164
165#endif 165#endif
diff --git a/apps/keymaps/keymap-h1x0_h3x0.c b/apps/keymaps/keymap-h1x0_h3x0.c
index 7e11c27dfc..557feea3ff 100644
--- a/apps/keymaps/keymap-h1x0_h3x0.c
+++ b/apps/keymaps/keymap-h1x0_h3x0.c
@@ -42,11 +42,11 @@ CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions
42*/ 42*/
43 43
44 44
45struct button_mapping button_context_standard[] = { 45const struct button_mapping button_context_standard[] = {
46 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, 46 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
47 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 47 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
48 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, 48 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
49 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 49 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
50 50
51 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, 51 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
52 { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE }, 52 { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE },
@@ -60,21 +60,21 @@ struct button_mapping button_context_standard[] = {
60}; /* button_context_standard */ 60}; /* button_context_standard */
61 61
62 62
63struct button_mapping button_context_wps[] = { 63const struct button_mapping button_context_wps[] = {
64 { ACTION_WPS_PLAY, BUTTON_ON|BUTTON_REL, BUTTON_ON }, 64 { ACTION_WPS_PLAY, BUTTON_ON|BUTTON_REL, BUTTON_ON },
65 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 65 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
66 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 66 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
67 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 67 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
68 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 68 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
69 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 69 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
70 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 70 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
71 { ACTION_WPS_NEXTDIR, BUTTON_ON|BUTTON_RIGHT, BUTTON_ON }, 71 { ACTION_WPS_NEXTDIR, BUTTON_ON|BUTTON_RIGHT, BUTTON_ON },
72 { ACTION_WPS_PREVDIR, BUTTON_ON|BUTTON_LEFT, BUTTON_ON }, 72 { ACTION_WPS_PREVDIR, BUTTON_ON|BUTTON_LEFT, BUTTON_ON },
73 { ACTION_WPS_STOP, BUTTON_OFF, BUTTON_NONE }, 73 { ACTION_WPS_STOP, BUTTON_OFF, BUTTON_NONE },
74 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, 74 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
75 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 75 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
76 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REL, BUTTON_UP }, 76 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REL, BUTTON_UP },
77 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 77 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
78 { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_REPEAT, BUTTON_ON }, 78 { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_REPEAT, BUTTON_ON },
79 { ACTION_WPS_QUICKSCREEN, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE }, 79 { ACTION_WPS_QUICKSCREEN, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE },
80 { ACTION_WPS_MENU, BUTTON_MODE|BUTTON_REL, BUTTON_MODE }, 80 { ACTION_WPS_MENU, BUTTON_MODE|BUTTON_REL, BUTTON_MODE },
@@ -85,91 +85,93 @@ struct button_mapping button_context_wps[] = {
85 LAST_ITEM_IN_LIST 85 LAST_ITEM_IN_LIST
86}; /* button_context_wps */ 86}; /* button_context_wps */
87 87
88struct button_mapping button_context_listtree[] = { 88const struct button_mapping button_context_listtree[] = {
89 { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON }, 89 { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON },
90 { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_ON|BUTTON_UP }, 90 { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_ON|BUTTON_UP },
91 { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP|BUTTON_REPEAT, BUTTON_ON|BUTTON_UP }, 91 { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
92 { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN, BUTTON_ON|BUTTON_UP }, 92 { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN, BUTTON_ON|BUTTON_UP },
93 { ACTION_LISTTREE_PGDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_ON|BUTTON_DOWN }, 93 { ACTION_LISTTREE_PGDOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_ON|BUTTON_DOWN },
94 { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_ON|BUTTON_DOWN }, 94 { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
95 LAST_ITEM_IN_LIST 95 LAST_ITEM_IN_LIST
96}; /* button_context_listtree */ 96}; /* button_context_listtree */
97 97
98struct button_mapping button_context_tree[] = { 98const struct button_mapping button_context_tree[] = {
99 { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, 99 { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON },
100 { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE },
101
100 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) 102 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
101}; /* button_context_listtree */ 103}; /* button_context_listtree */
102 104
103struct button_mapping button_context_listtree_scroll_with_combo[] = { 105const struct button_mapping button_context_listtree_scroll_with_combo[] = {
104 { ACTION_NONE, BUTTON_ON, BUTTON_NONE }, 106 { ACTION_NONE, BUTTON_ON, BUTTON_NONE },
105 { ACTION_TREE_PGLEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_ON }, 107 { ACTION_TREE_PGLEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_ON },
106 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_ON|BUTTON_LEFT }, 108 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_ON|BUTTON_LEFT },
107 { ACTION_TREE_PGLEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_LEFT|BUTTON_REL }, 109 { ACTION_TREE_PGLEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_LEFT|BUTTON_REL },
108 { ACTION_TREE_PGLEFT, BUTTON_ON|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_ON|BUTTON_LEFT }, 110 { ACTION_TREE_PGLEFT, BUTTON_ON|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
109 { ACTION_TREE_PGRIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_ON }, 111 { ACTION_TREE_PGRIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_ON },
110 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_ON|BUTTON_RIGHT }, 112 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_ON|BUTTON_RIGHT },
111 { ACTION_TREE_PGRIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_RIGHT|BUTTON_REL }, 113 { ACTION_TREE_PGRIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_RIGHT|BUTTON_REL },
112 { ACTION_TREE_PGRIGHT, BUTTON_ON|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_ON|BUTTON_RIGHT }, 114 { ACTION_TREE_PGRIGHT, BUTTON_ON|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
113 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), 115 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1),
114}; 116};
115 117
116struct button_mapping button_context_listtree_scroll_without_combo[] = { 118const struct button_mapping button_context_listtree_scroll_without_combo[] = {
117 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 119 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
118 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 120 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
119 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 121 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
120 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 122 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
121 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, 123 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
122 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 124 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
123 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 125 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
124 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 126 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
125 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), 127 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1),
126}; 128};
127 129
128struct button_mapping button_context_settings[] = { 130const struct button_mapping button_context_settings[] = {
129 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, 131 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
130 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 132 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
131 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, 133 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
132 { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 134 { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
133 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 135 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
134 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, 136 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
135 137
136 LAST_ITEM_IN_LIST 138 LAST_ITEM_IN_LIST
137}; /* button_context_settings */ 139}; /* button_context_settings */
138 140
139struct button_mapping button_context_settingsgraphical[] = { 141const struct button_mapping button_context_settingsgraphical[] = {
140 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE }, 142 { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
141 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 143 { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
142 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE }, 144 { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
143 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 145 { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
144 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, 146 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
145 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 147 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
146 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, 148 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
147 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 149 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
148 150
149 LAST_ITEM_IN_LIST 151 LAST_ITEM_IN_LIST
150}; /* button_context_settingsgraphical */ 152}; /* button_context_settingsgraphical */
151 153
152struct button_mapping button_context_yesno[] = { 154const struct button_mapping button_context_yesno[] = {
153 { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE }, 155 { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
154 { ACTION_YESNO_ACCEPT, BUTTON_RC_ON, BUTTON_NONE }, 156 { ACTION_YESNO_ACCEPT, BUTTON_RC_ON, BUTTON_NONE },
155 LAST_ITEM_IN_LIST 157 LAST_ITEM_IN_LIST
156}; /* button_context_settings_yesno */ 158}; /* button_context_settings_yesno */
157 159
158struct button_mapping button_context_bmark[] = { 160const struct button_mapping button_context_bmark[] = {
159 { ACTION_BMARK_DELETE, BUTTON_REC, BUTTON_NONE }, 161 { ACTION_BMARK_DELETE, BUTTON_REC, BUTTON_NONE },
160 { ACTION_STD_OK, BUTTON_SELECT, BUTTON_NONE }, 162 { ACTION_STD_OK, BUTTON_SELECT, BUTTON_NONE },
161 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGSGRAPHICAL), 163 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGSGRAPHICAL),
162}; /* button_context_settings_bmark */ 164}; /* button_context_settings_bmark */
163 165
164struct button_mapping button_context_quickscreen[] = { 166const struct button_mapping button_context_quickscreen[] = {
165 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 167 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE },
166 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 168 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
167 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 169 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
168 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 170 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
169 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 171 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
170 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 172 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
171 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 173 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
172 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 174 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
173 { ACTION_STD_CANCEL, BUTTON_MODE, BUTTON_NONE }, 175 { ACTION_STD_CANCEL, BUTTON_MODE, BUTTON_NONE },
174 176
175 LAST_ITEM_IN_LIST 177 LAST_ITEM_IN_LIST
@@ -180,11 +182,11 @@ struct button_mapping button_context_quickscreen[] = {
180 182
181 183
182/********* H100 LCD remote ******/ 184/********* H100 LCD remote ******/
183struct button_mapping button_context_standard_h100lcdremote[] = { 185const struct button_mapping button_context_standard_h100lcdremote[] = {
184 { ACTION_STD_PREV, BUTTON_RC_REW, BUTTON_NONE }, 186 { ACTION_STD_PREV, BUTTON_RC_REW, BUTTON_NONE },
185 { ACTION_STD_PREVREPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW }, 187 { ACTION_STD_PREVREPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
186 { ACTION_STD_NEXT, BUTTON_RC_FF, BUTTON_NONE }, 188 { ACTION_STD_NEXT, BUTTON_RC_FF, BUTTON_NONE },
187 { ACTION_STD_NEXTREPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF }, 189 { ACTION_STD_NEXTREPEAT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
188 190
189 { ACTION_STD_OK, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON }, 191 { ACTION_STD_OK, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON },
190 { ACTION_STD_CONTEXT, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_RC_MENU }, 192 { ACTION_STD_CONTEXT, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_RC_MENU },
@@ -196,17 +198,17 @@ struct button_mapping button_context_standard_h100lcdremote[] = {
196 LAST_ITEM_IN_LIST 198 LAST_ITEM_IN_LIST
197}; /* button_context_standard_h100lcdremote */ 199}; /* button_context_standard_h100lcdremote */
198 200
199struct button_mapping button_context_wps_h100lcdremote[] = { 201const struct button_mapping button_context_wps_h100lcdremote[] = {
200 { ACTION_WPS_PLAY, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON }, 202 { ACTION_WPS_PLAY, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON },
201 { ACTION_WPS_SKIPNEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF }, 203 { ACTION_WPS_SKIPNEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
202 { ACTION_WPS_SEEKFWD, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF }, 204 { ACTION_WPS_SEEKFWD, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
203 { ACTION_WPS_SKIPPREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW }, 205 { ACTION_WPS_SKIPPREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
204 { ACTION_WPS_SEEKBACK, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW }, 206 { ACTION_WPS_SEEKBACK, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
205 { ACTION_WPS_STOP, BUTTON_RC_STOP, BUTTON_NONE }, 207 { ACTION_WPS_STOP, BUTTON_RC_STOP, BUTTON_NONE },
206 { ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 208 { ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
207 { ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_RC_VOL_DOWN }, 209 { ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
208 { ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP, BUTTON_NONE }, 210 { ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP, BUTTON_NONE },
209 { ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_RC_VOL_UP }, 211 { ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
210 { ACTION_WPS_NEXTDIR, BUTTON_RC_BITRATE, BUTTON_NONE }, 212 { ACTION_WPS_NEXTDIR, BUTTON_RC_BITRATE, BUTTON_NONE },
211 { ACTION_WPS_PREVDIR, BUTTON_RC_SOURCE, BUTTON_NONE }, 213 { ACTION_WPS_PREVDIR, BUTTON_RC_SOURCE, BUTTON_NONE },
212 { ACTION_WPS_PITCHSCREEN, BUTTON_RC_ON|BUTTON_REPEAT, BUTTON_RC_ON }, 214 { ACTION_WPS_PITCHSCREEN, BUTTON_RC_ON|BUTTON_REPEAT, BUTTON_RC_ON },
@@ -218,31 +220,31 @@ struct button_mapping button_context_wps_h100lcdremote[] = {
218 LAST_ITEM_IN_LIST 220 LAST_ITEM_IN_LIST
219}; /* button_context_wps_h100lcdremote */ 221}; /* button_context_wps_h100lcdremote */
220 222
221struct button_mapping button_context_listtree_h100lcdremote[] = { 223const struct button_mapping button_context_listtree_h100lcdremote[] = {
222 { ACTION_LISTTREE_PGUP, BUTTON_RC_SOURCE, BUTTON_NONE }, 224 { ACTION_LISTTREE_PGUP, BUTTON_RC_SOURCE, BUTTON_NONE },
223 { ACTION_LISTTREE_PGUP, BUTTON_RC_SOURCE|BUTTON_REPEAT, BUTTON_RC_SOURCE }, 225 { ACTION_LISTTREE_PGUP, BUTTON_RC_SOURCE|BUTTON_REPEAT, BUTTON_NONE },
224 { ACTION_LISTTREE_PGDOWN, BUTTON_RC_BITRATE, BUTTON_NONE }, 226 { ACTION_LISTTREE_PGDOWN, BUTTON_RC_BITRATE, BUTTON_NONE },
225 { ACTION_LISTTREE_PGDOWN, BUTTON_RC_BITRATE|BUTTON_REPEAT, BUTTON_RC_BITRATE }, 227 { ACTION_LISTTREE_PGDOWN, BUTTON_RC_BITRATE|BUTTON_REPEAT, BUTTON_NONE },
226 { ACTION_TREE_WPS, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON }, 228 { ACTION_TREE_WPS, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON },
227 { ACTION_TREE_STOP, BUTTON_RC_STOP, BUTTON_NONE }, 229 { ACTION_TREE_STOP, BUTTON_RC_STOP, BUTTON_NONE },
228 230
229 LAST_ITEM_IN_LIST 231 LAST_ITEM_IN_LIST
230}; /* button_context_listtree_h100lcdremote */ 232}; /* button_context_listtree_h100lcdremote */
231/* Not needed? _std_ actions seem to be fine */ 233/* Not needed? _std_ actions seem to be fine */
232struct button_mapping button_context_settings_h100lcdremote[] = { 234const struct button_mapping button_context_settings_h100lcdremote[] = {
233 LAST_ITEM_IN_LIST 235 LAST_ITEM_IN_LIST
234};/* button_context_settings_h100lcdremote */ 236};/* button_context_settings_h100lcdremote */
235 237
236 238
237/********* H300 LCD remote ******/ 239/********* H300 LCD remote ******/
238struct button_mapping button_context_standard_h300lcdremote[] = { 240const struct button_mapping button_context_standard_h300lcdremote[] = {
239 { ACTION_STD_PREV, BUTTON_RC_VOL_UP, BUTTON_NONE }, 241 { ACTION_STD_PREV, BUTTON_RC_VOL_UP, BUTTON_NONE },
240 { ACTION_STD_PREVREPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_RC_VOL_UP }, 242 { ACTION_STD_PREVREPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
241 { ACTION_STD_NEXT, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 243 { ACTION_STD_NEXT, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
242 { ACTION_STD_NEXTREPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_RC_VOL_DOWN }, 244 { ACTION_STD_NEXTREPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
243 { ACTION_STD_OK, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON }, 245 { ACTION_STD_OK, BUTTON_RC_ON|BUTTON_REL, BUTTON_RC_ON },
244 { ACTION_STD_CANCEL, BUTTON_RC_REW, BUTTON_NONE }, 246 { ACTION_STD_CANCEL, BUTTON_RC_REW, BUTTON_NONE },
245 { ACTION_STD_CANCEL, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW }, 247 { ACTION_STD_CANCEL, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
246 { ACTION_STD_CONTEXT, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_RC_MENU }, 248 { ACTION_STD_CONTEXT, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_RC_MENU },
247 { ACTION_STD_CANCEL, BUTTON_RC_STOP, BUTTON_NONE }, 249 { ACTION_STD_CANCEL, BUTTON_RC_STOP, BUTTON_NONE },
248 { ACTION_STD_QUICKSCREEN, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE }, 250 { ACTION_STD_QUICKSCREEN, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE },
@@ -256,15 +258,15 @@ struct button_mapping button_context_standard_h300lcdremote[] = {
256}; /* button_context_standard */ 258}; /* button_context_standard */
257 259
258/* the mapping of the 2 LCD remotes in the WPS screen should be the same */ 260/* the mapping of the 2 LCD remotes in the WPS screen should be the same */
259struct button_mapping *button_context_wps_h300lcdremote = 261const struct button_mapping *button_context_wps_h300lcdremote =
260 button_context_wps_h100lcdremote; 262 button_context_wps_h100lcdremote;
261 263
262/* FIXME: the same as h100 ?? */ 264/* FIXME: the same as h100 ?? */
263struct button_mapping *button_context_listtree_h300lcdremote = 265const struct button_mapping *button_context_listtree_h300lcdremote =
264 button_context_listtree_h100lcdremote; 266 button_context_listtree_h100lcdremote;
265/* FIXME: the same as h100 ?? */ 267/* FIXME: the same as h100 ?? */
266 268
267struct button_mapping *button_context_settings_h300lcdremote = 269const struct button_mapping *button_context_settings_h300lcdremote =
268 button_context_settings_h100lcdremote; 270 button_context_settings_h100lcdremote;
269/* FIXME: non lcd remotes need mappings.. ?? */ 271/* FIXME: non lcd remotes need mappings.. ?? */
270 272
@@ -274,7 +276,7 @@ struct button_mapping *button_context_settings_h300lcdremote =
274 276
275 277
276/* the actual used tables */ 278/* the actual used tables */
277static struct button_mapping 279static const struct button_mapping
278 *remote_button_context_std = button_context_standard_h100lcdremote, 280 *remote_button_context_std = button_context_standard_h100lcdremote,
279 *remote_button_context_wps = button_context_wps_h100lcdremote, 281 *remote_button_context_wps = button_context_wps_h100lcdremote,
280 *remote_button_context_listtree = button_context_listtree_h100lcdremote, 282 *remote_button_context_listtree = button_context_listtree_h100lcdremote,
@@ -320,7 +322,7 @@ static void remap_remote(void)
320 322
321 323
322 324
323struct button_mapping* get_context_mapping_remote(int context) 325const struct button_mapping* get_context_mapping_remote(int context)
324{ 326{
325 if(remote_type() != _remote_type) 327 if(remote_type() != _remote_type)
326 remap_remote(); 328 remap_remote();
@@ -347,7 +349,7 @@ struct button_mapping* get_context_mapping_remote(int context)
347 return remote_button_context_std; 349 return remote_button_context_std;
348} 350}
349 351
350struct button_mapping* get_context_mapping(int context) 352const struct button_mapping* get_context_mapping(int context)
351{ 353{
352 if (context&CONTEXT_REMOTE) 354 if (context&CONTEXT_REMOTE)
353 return get_context_mapping_remote(context); 355 return get_context_mapping_remote(context);
diff --git a/apps/keymaps/keymap-ipod.c b/apps/keymaps/keymap-ipod.c
index 4faf40d0d4..2beb428b6b 100644
--- a/apps/keymaps/keymap-ipod.c
+++ b/apps/keymaps/keymap-ipod.c
@@ -37,11 +37,11 @@ CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions)
37 37
38*/ 38*/
39 39
40struct button_mapping button_context_standard[] = { 40const struct button_mapping button_context_standard[] = {
41 { ACTION_STD_PREV, BUTTON_SCROLL_BACK, BUTTON_NONE }, 41 { ACTION_STD_PREV, BUTTON_SCROLL_BACK, BUTTON_NONE },
42 { ACTION_STD_PREVREPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_SCROLL_BACK }, 42 { ACTION_STD_PREVREPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
43 { ACTION_STD_NEXT, BUTTON_SCROLL_FWD, BUTTON_NONE }, 43 { ACTION_STD_NEXT, BUTTON_SCROLL_FWD, BUTTON_NONE },
44 { ACTION_STD_NEXTREPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_SCROLL_FWD }, 44 { ACTION_STD_NEXTREPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
45 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, 45 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
46 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, 46 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
47 47
@@ -53,38 +53,38 @@ struct button_mapping button_context_standard[] = {
53 53
54 LAST_ITEM_IN_LIST 54 LAST_ITEM_IN_LIST
55}; /* button_context_standard */ 55}; /* button_context_standard */
56struct button_mapping button_context_tree[] = { 56const struct button_mapping button_context_tree[] = {
57 { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, 57 { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
58 { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, 58 { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
59 59
60 LAST_ITEM_IN_LIST 60 LAST_ITEM_IN_LIST
61}; /* button_context_tree */ 61}; /* button_context_tree */
62 62
63struct button_mapping button_context_tree_scroll_lr[] = { 63const struct button_mapping button_context_tree_scroll_lr[] = {
64 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 64 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
65 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 65 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
66 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 66 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
67 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 67 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
68 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, 68 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
69 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 69 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
70 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 70 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
71 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 71 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
72 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), 72 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1),
73}; 73};
74 74
75struct button_mapping button_context_wps[] = { 75const struct button_mapping button_context_wps[] = {
76 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, 76 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
77 { ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, 77 { ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
78 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 78 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
79 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 79 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
80 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 80 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
81 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 81 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
82 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 82 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
83 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 83 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
84 { ACTION_WPS_VOLDOWN, BUTTON_SCROLL_BACK, BUTTON_NONE }, 84 { ACTION_WPS_VOLDOWN, BUTTON_SCROLL_BACK, BUTTON_NONE },
85 { ACTION_WPS_VOLDOWN, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_SCROLL_BACK }, 85 { ACTION_WPS_VOLDOWN, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
86 { ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD, BUTTON_NONE }, 86 { ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD, BUTTON_NONE },
87 { ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_SCROLL_FWD }, 87 { ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
88 { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 88 { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
89 { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, 89 { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
90 { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 90 { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
@@ -93,44 +93,44 @@ struct button_mapping button_context_wps[] = {
93 LAST_ITEM_IN_LIST 93 LAST_ITEM_IN_LIST
94}; /* button_context_wps */ 94}; /* button_context_wps */
95 95
96struct button_mapping button_context_settings[] = { 96const struct button_mapping button_context_settings[] = {
97 { ACTION_SETTINGS_INC, BUTTON_SCROLL_FWD, BUTTON_NONE }, 97 { ACTION_SETTINGS_INC, BUTTON_SCROLL_FWD, BUTTON_NONE },
98 { ACTION_SETTINGS_INCREPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_SCROLL_FWD }, 98 { ACTION_SETTINGS_INCREPEAT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
99 { ACTION_SETTINGS_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE }, 99 { ACTION_SETTINGS_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE },
100 { ACTION_SETTINGS_DECREPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_SCROLL_BACK }, 100 { ACTION_SETTINGS_DECREPEAT, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
101 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, 101 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
102 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 102 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
103 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, 103 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
104 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 104 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
105 { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, /* rel so bmark screen works */ 105 { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, /* rel so bmark screen works */
106 106
107 LAST_ITEM_IN_LIST 107 LAST_ITEM_IN_LIST
108}; /* button_context_settings */ 108}; /* button_context_settings */
109 109
110struct button_mapping button_context_yesno[] = { 110const struct button_mapping button_context_yesno[] = {
111 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE }, 111 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
112 LAST_ITEM_IN_LIST 112 LAST_ITEM_IN_LIST
113}; /* button_context_settings_yesno */ 113}; /* button_context_settings_yesno */
114 114
115struct button_mapping button_context_bmark[] = { 115const struct button_mapping button_context_bmark[] = {
116 { ACTION_BMARK_DELETE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, 116 { ACTION_BMARK_DELETE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
117 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS), 117 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
118}; /* button_context_settings_bmark */ 118}; /* button_context_settings_bmark */
119 119
120struct button_mapping button_context_quickscreen[] = { 120const struct button_mapping button_context_quickscreen[] = {
121 { ACTION_QS_DOWN, BUTTON_PLAY, BUTTON_NONE }, 121 { ACTION_QS_DOWN, BUTTON_PLAY, BUTTON_NONE },
122 { ACTION_QS_DOWN, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, 122 { ACTION_QS_DOWN, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
123 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 123 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
124 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 124 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
125 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 125 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
126 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 126 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
127 { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE }, 127 { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
128 128
129 LAST_ITEM_IN_LIST 129 LAST_ITEM_IN_LIST
130}; /* button_context_quickscreen */ 130}; /* button_context_quickscreen */
131 131
132/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ 132/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
133struct button_mapping* get_context_mapping(int context) 133const struct button_mapping* get_context_mapping(int context)
134{ 134{
135 switch (context) 135 switch (context)
136 { 136 {
diff --git a/apps/keymaps/keymap-newtarget.c b/apps/keymaps/keymap-newtarget.c
index 3cd828c0b4..ab1e157937 100644
--- a/apps/keymaps/keymap-newtarget.c
+++ b/apps/keymaps/keymap-newtarget.c
@@ -42,12 +42,12 @@
42 * if there's no need to check the previous button's value, use BUTTON_NONE 42 * if there's no need to check the previous button's value, use BUTTON_NONE
43 * Insert LAST_ITEM_IN_LIST at the end of each mapping 43 * Insert LAST_ITEM_IN_LIST at the end of each mapping
44 */ 44 */
45struct button_mapping button_context_standard[] = { 45const struct button_mapping button_context_standard[] = {
46 46
47 LAST_ITEM_IN_LIST 47 LAST_ITEM_IN_LIST
48}; /* button_context_standard */ 48}; /* button_context_standard */
49 49
50struct button_mapping button_context_wps[] = { 50const struct button_mapping button_context_wps[] = {
51 51
52 LAST_ITEM_IN_LIST 52 LAST_ITEM_IN_LIST
53}; /* button_context_wps */ 53}; /* button_context_wps */
@@ -55,7 +55,7 @@ struct button_mapping button_context_wps[] = {
55 55
56 56
57/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ 57/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
58struct button_mapping* get_context_mapping(int context) 58const struct button_mapping* get_context_mapping(int context)
59{ 59{
60 switch (context) 60 switch (context)
61 { 61 {
diff --git a/apps/keymaps/keymap-ondio.c b/apps/keymaps/keymap-ondio.c
index 2ad86c868d..a82d6eb5fa 100644
--- a/apps/keymaps/keymap-ondio.c
+++ b/apps/keymaps/keymap-ondio.c
@@ -18,8 +18,6 @@
18 18
19/* * 19/* *
20 * Button Code Definitions for archos ondio fm/sp targets 20 * Button Code Definitions for archos ondio fm/sp targets
21 *
22 * \TODO test!
23 */ 21 */
24 22
25#include "config.h" 23#include "config.h"
@@ -34,77 +32,86 @@ CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions)
34 32
35*/ 33*/
36 34
37struct button_mapping button_context_standard[] = { 35const struct button_mapping button_context_standard[] = {
38 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, 36 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
39 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 37 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
40 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, 38 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
41 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 39 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
42 40
43 { ACTION_STD_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, 41 { ACTION_STD_CONTEXT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
44 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, 42 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
45 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 43 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
46 { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 44 { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
47 { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE }, 45 { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE },
48 46
49 LAST_ITEM_IN_LIST 47 LAST_ITEM_IN_LIST
50}; 48};
51 49
52struct button_mapping button_context_wps[] = { 50const struct button_mapping button_context_wps[] = {
53 { ACTION_WPS_PLAY, BUTTON_OFF|BUTTON_REL, BUTTON_OFF }, 51 { ACTION_WPS_PLAY, BUTTON_OFF|BUTTON_REL, BUTTON_OFF },
54 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT, BUTTON_NONE }, 52 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
55 { ACTION_WPS_SKIPPREV, BUTTON_LEFT, BUTTON_NONE }, 53 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
56 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 54 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
57 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 55 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
58 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 56 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
59 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 57 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
60 { ACTION_WPS_STOP, BUTTON_OFF|BUTTON_REPEAT, BUTTON_OFF }, 58 { ACTION_WPS_STOP, BUTTON_OFF|BUTTON_REPEAT, BUTTON_OFF },
61 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE }, 59 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
62 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 60 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
63 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, 61 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
64 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 62 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
65 { ACTION_WPS_BROWSE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 63 { ACTION_WPS_BROWSE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
66 { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, 64 { ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
67 { ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_OFF, BUTTON_MENU }, /* this may trigger ACTION_WPS_BROWSE so may need changing */ 65 /* { ACTION_WPS_MENU, BUTTON_NONE, BUTTON_NONE }, we can't have that */
68 66
69 LAST_ITEM_IN_LIST 67 LAST_ITEM_IN_LIST
70}; 68};
71 69
72struct button_mapping button_context_settings[] = { 70const struct button_mapping button_context_settings[] = {
73 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, 71 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
74 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 72 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
75 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, 73 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
76 { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 74 { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
77 { ACTION_STD_NEXT, BUTTON_MENU, BUTTON_NONE },
78 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, 75 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
79 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, 76 { ACTION_STD_OK, BUTTON_LEFT, BUTTON_NONE },
77 { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
80 78
81 LAST_ITEM_IN_LIST 79 LAST_ITEM_IN_LIST
82}; 80};
83struct button_mapping button_context_tree[] = { 81const struct button_mapping button_context_tree[] = {
84 { ACTION_TREE_WPS, BUTTON_OFF|BUTTON_REL, BUTTON_OFF }, 82 { ACTION_TREE_WPS, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
85 { ACTION_TREE_STOP, BUTTON_OFF|BUTTON_REPEAT, BUTTON_OFF }, 83 { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE },
86 84
87 LAST_ITEM_IN_LIST 85 LAST_ITEM_IN_LIST
88}; /* button_context_listtree */ 86}; /* button_context_listtree */
89struct button_mapping button_context_tree_scroll_lr[] = { 87const struct button_mapping button_context_tree_scroll_lr[] = {
90 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 88 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
91 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 89 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
92 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 90 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
93 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 91 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
94 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, 92 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
95 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 93 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
96 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 94 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
97 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 95 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
96
98 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), 97 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1),
99}; 98};
100 99
101struct button_mapping button_context_yesno[] = { 100const struct button_mapping button_context_yesno[] = {
102 { ACTION_YESNO_ACCEPT, BUTTON_RIGHT, BUTTON_NONE }, 101 { ACTION_YESNO_ACCEPT, BUTTON_RIGHT, BUTTON_NONE },
103 102
104 LAST_ITEM_IN_LIST 103 LAST_ITEM_IN_LIST
105}; 104};
106 105
107struct button_mapping* get_context_mapping( int context ) 106struct button_mapping button_context_bmark[] = {
107 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
108 { ACTION_BMARK_DELETE, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
109 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
110
111 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
112}; /* button_context_settings_bmark */
113
114const struct button_mapping* get_context_mapping( int context )
108{ 115{
109 switch( context ) 116 switch( context )
110 { 117 {
@@ -120,7 +127,10 @@ struct button_mapping* get_context_mapping( int context )
120 case CONTEXT_YESNOSCREEN: 127 case CONTEXT_YESNOSCREEN:
121 return button_context_yesno; 128 return button_context_yesno;
122 129
123 case CONTEXT_TREE: 130 case CONTEXT_BOOKMARKSCREEN:
131 return button_context_bmark;
132
133 case CONTEXT_TREE:
124 if (global_settings.hold_lr_for_scroll_in_list) 134 if (global_settings.hold_lr_for_scroll_in_list)
125 return button_context_tree_scroll_lr; 135 return button_context_tree_scroll_lr;
126 /* else fall through to CUSTOM|1 */ 136 /* else fall through to CUSTOM|1 */
diff --git a/apps/keymaps/keymap-player.c b/apps/keymaps/keymap-player.c
index b03dc39f89..eecd9b99b7 100644
--- a/apps/keymaps/keymap-player.c
+++ b/apps/keymaps/keymap-player.c
@@ -25,65 +25,65 @@
25#include "action.h" 25#include "action.h"
26#include "button.h" 26#include "button.h"
27 27
28struct button_mapping button_context_standard[] = { 28const struct button_mapping button_context_standard[] = {
29 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE }, 29 { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
30 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 30 { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
31 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE }, 31 { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
32 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 32 { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
33 33
34 { ACTION_STD_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, 34 { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
35 { ACTION_STD_CANCEL, BUTTON_STOP, BUTTON_NONE }, 35 { ACTION_STD_CANCEL, BUTTON_STOP, BUTTON_NONE },
36 { ACTION_STD_OK, BUTTON_PLAY, BUTTON_NONE }, 36 { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
37 { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 37 { ACTION_STD_MENU, BUTTON_MENU, BUTTON_NONE },
38 38
39 LAST_ITEM_IN_LIST 39 LAST_ITEM_IN_LIST
40}; 40};
41 41
42struct button_mapping button_context_wps[] = { 42const struct button_mapping button_context_wps[] = {
43 { ACTION_WPS_PLAY, BUTTON_PLAY, BUTTON_NONE }, 43 { ACTION_WPS_PLAY, BUTTON_PLAY, BUTTON_NONE },
44 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT, BUTTON_NONE }, 44 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
45 { ACTION_WPS_SKIPPREV, BUTTON_LEFT, BUTTON_NONE }, 45 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
46 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 46 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
47 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 47 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
48 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 48 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
49 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 49 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
50 { ACTION_WPS_STOP, BUTTON_STOP, BUTTON_NONE }, 50 { ACTION_WPS_STOP, BUTTON_STOP, BUTTON_NONE },
51 51
52 { ACTION_WPS_VOLDOWN, BUTTON_MENU|BUTTON_LEFT, BUTTON_MENU }, 52 { ACTION_WPS_VOLDOWN, BUTTON_MENU|BUTTON_LEFT, BUTTON_MENU },
53 { ACTION_WPS_VOLDOWN, BUTTON_MENU|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_MENU|BUTTON_LEFT }, 53 { ACTION_WPS_VOLDOWN, BUTTON_MENU|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
54 { ACTION_WPS_VOLUP, BUTTON_MENU|BUTTON_RIGHT, BUTTON_MENU }, 54 { ACTION_WPS_VOLUP, BUTTON_MENU|BUTTON_RIGHT, BUTTON_MENU },
55 { ACTION_WPS_VOLUP, BUTTON_MENU|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_MENU|BUTTON_RIGHT }, 55 { ACTION_WPS_VOLUP, BUTTON_MENU|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
56 56
57 { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON }, 57 { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON },
58 { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, 58 { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
59 { ACTION_WPS_CONTEXT, BUTTON_ON|BUTTON_REPEAT, BUTTON_ON }, 59 { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
60 { ACTION_WPS_ID3SCREEN, BUTTON_MENU|BUTTON_ON, BUTTON_MENU }, 60 { ACTION_WPS_ID3SCREEN, BUTTON_MENU|BUTTON_ON, BUTTON_NONE },
61 61
62 62
63 LAST_ITEM_IN_LIST 63 LAST_ITEM_IN_LIST
64}; 64};
65 65
66struct button_mapping button_context_settings[] = { 66const struct button_mapping button_context_settings[] = {
67 { ACTION_SETTINGS_INC, BUTTON_LEFT, BUTTON_NONE }, 67 { ACTION_SETTINGS_INC, BUTTON_LEFT, BUTTON_NONE },
68 { ACTION_SETTINGS_INCREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 68 { ACTION_SETTINGS_INCREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
69 { ACTION_SETTINGS_DEC, BUTTON_RIGHT, BUTTON_NONE }, 69 { ACTION_SETTINGS_DEC, BUTTON_RIGHT, BUTTON_NONE },
70 { ACTION_SETTINGS_DECREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 70 { ACTION_SETTINGS_DECREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
71 71
72 LAST_ITEM_IN_LIST 72 LAST_ITEM_IN_LIST
73}; 73};
74 74
75struct button_mapping button_context_tree[] = { 75const struct button_mapping button_context_tree[] = {
76 { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_NONE }, 76 { ACTION_TREE_WPS, BUTTON_ON, BUTTON_NONE },
77 77
78 LAST_ITEM_IN_LIST 78 LAST_ITEM_IN_LIST
79}; /* button_context_listtree */ 79}; /* button_context_listtree */
80 80
81struct button_mapping button_context_yesno[] = { 81const struct button_mapping button_context_yesno[] = {
82 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE }, 82 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
83 LAST_ITEM_IN_LIST 83 LAST_ITEM_IN_LIST
84}; /* button_context_settings_yesno */ 84}; /* button_context_settings_yesno */
85 85
86struct button_mapping* get_context_mapping( int context ) 86const struct button_mapping* get_context_mapping( int context )
87{ 87{
88 switch( context ) 88 switch( context )
89 { 89 {
diff --git a/apps/keymaps/keymap-recorder.c b/apps/keymaps/keymap-recorder.c
index feeda35264..a28286936e 100644
--- a/apps/keymaps/keymap-recorder.c
+++ b/apps/keymaps/keymap-recorder.c
@@ -34,40 +34,40 @@ CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions)
34 34
35*/ 35*/
36 36
37struct button_mapping button_context_standard[] = { 37const struct button_mapping button_context_standard[] = {
38 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, 38 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
39 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 39 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
40 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, 40 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
41 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 41 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
42 42
43 { ACTION_STD_OK, BUTTON_ON, BUTTON_NONE }, 43 { ACTION_STD_OK, BUTTON_ON, BUTTON_NONE },
44 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE }, 44 { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
45 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 45 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
46 46
47 { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, 47 { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
48 { ACTION_STD_MENU, BUTTON_F1, BUTTON_NONE }, 48 { ACTION_STD_MENU, BUTTON_F1, BUTTON_NONE },
49 { ACTION_STD_QUICKSCREEN, BUTTON_F2, BUTTON_NONE }, 49 { ACTION_STD_QUICKSCREEN, BUTTON_F2, BUTTON_NONE },
50 { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, 50 { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
51 { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE }, 51 { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE },
52 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, 52 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
53 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 53 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
54 54
55 LAST_ITEM_IN_LIST 55 LAST_ITEM_IN_LIST
56}; 56};
57 57
58struct button_mapping button_context_wps[] = { 58const struct button_mapping button_context_wps[] = {
59 { ACTION_WPS_PLAY, BUTTON_PLAY, BUTTON_NONE }, 59 { ACTION_WPS_PLAY, BUTTON_PLAY, BUTTON_NONE },
60 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT, BUTTON_NONE }, 60 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
61 { ACTION_WPS_SKIPPREV, BUTTON_LEFT, BUTTON_NONE }, 61 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
62 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 62 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
63 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 63 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
64 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 64 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
65 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 65 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
66 { ACTION_WPS_STOP, BUTTON_OFF, BUTTON_NONE }, 66 { ACTION_WPS_STOP, BUTTON_OFF, BUTTON_NONE },
67 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE }, 67 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
68 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 68 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
69 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, 69 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
70 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 70 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
71 { ACTION_WPS_MENU, BUTTON_F1, BUTTON_NONE }, 71 { ACTION_WPS_MENU, BUTTON_F1, BUTTON_NONE },
72 { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, 72 { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
73 { ACTION_WPS_QUICKSCREEN, BUTTON_F2, BUTTON_NONE }, 73 { ACTION_WPS_QUICKSCREEN, BUTTON_F2, BUTTON_NONE },
@@ -79,53 +79,53 @@ struct button_mapping button_context_wps[] = {
79 LAST_ITEM_IN_LIST 79 LAST_ITEM_IN_LIST
80}; 80};
81 81
82struct button_mapping button_context_settings[] = { 82const struct button_mapping button_context_settings[] = {
83 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, 83 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
84 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 84 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
85 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, 85 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
86 { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 86 { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
87 87
88 LAST_ITEM_IN_LIST 88 LAST_ITEM_IN_LIST
89}; 89};
90 90
91struct button_mapping button_context_tree[] = { 91const struct button_mapping button_context_tree[] = {
92 { ACTION_TREE_WPS, BUTTON_PLAY, BUTTON_NONE }, 92 { ACTION_TREE_WPS, BUTTON_PLAY, BUTTON_NONE },
93 { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, 93 { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE },
94 94
95 LAST_ITEM_IN_LIST 95 LAST_ITEM_IN_LIST
96}; /* button_context_listtree */ 96}; /* button_context_listtree */
97struct button_mapping button_context_tree_scroll_lr[] = { 97const struct button_mapping button_context_tree_scroll_lr[] = {
98 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 98 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
99 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 99 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
100 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 100 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
101 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 101 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
102 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, 102 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
103 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 103 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
104 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 104 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
105 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 105 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
106 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), 106 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1),
107}; 107};
108 108
109struct button_mapping button_context_yesno[] = { 109const struct button_mapping button_context_yesno[] = {
110 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE }, 110 { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
111 111
112 LAST_ITEM_IN_LIST 112 LAST_ITEM_IN_LIST
113}; 113};
114struct button_mapping button_context_quickscreen[] = { 114const struct button_mapping button_context_quickscreen[] = {
115 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 115 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE },
116 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 116 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
117 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 117 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
118 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 118 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
119 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 119 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
120 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 120 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
121 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 121 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
122 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 122 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
123 { ACTION_STD_CANCEL, BUTTON_PLAY, BUTTON_NONE }, 123 { ACTION_STD_CANCEL, BUTTON_PLAY, BUTTON_NONE },
124 124
125 LAST_ITEM_IN_LIST 125 LAST_ITEM_IN_LIST
126}; /* button_context_quickscreen */ 126}; /* button_context_quickscreen */
127 127
128struct button_mapping* get_context_mapping( int context ) 128const struct button_mapping* get_context_mapping( int context )
129{ 129{
130 switch( context ) 130 switch( context )
131 { 131 {
diff --git a/apps/keymaps/keymap-x5.c b/apps/keymaps/keymap-x5.c
index 666ce7819a..61e20f9d46 100644
--- a/apps/keymaps/keymap-x5.c
+++ b/apps/keymaps/keymap-x5.c
@@ -34,11 +34,11 @@ CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions)
34 34
35*/ 35*/
36 36
37struct button_mapping button_context_standard[] = { 37const struct button_mapping button_context_standard[] = {
38 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE }, 38 { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
39 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 39 { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
40 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE }, 40 { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
41 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 41 { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
42 42
43 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, 43 { ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
44 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE }, 44 { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
@@ -52,20 +52,20 @@ struct button_mapping button_context_standard[] = {
52 LAST_ITEM_IN_LIST 52 LAST_ITEM_IN_LIST
53}; 53};
54 54
55struct button_mapping button_context_wps[] = { 55const struct button_mapping button_context_wps[] = {
56 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, 56 { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
57 { ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, 57 { ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
58 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 58 { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
59 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 59 { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
60 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 60 { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
61 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 61 { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
62 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 62 { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
63 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 63 { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
64 64
65 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE }, 65 { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
66 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 66 { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
67 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, 67 { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
68 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 68 { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
69 69
70 { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, 70 { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
71 { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, 71 { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
@@ -76,7 +76,7 @@ struct button_mapping button_context_wps[] = {
76 LAST_ITEM_IN_LIST 76 LAST_ITEM_IN_LIST
77}; 77};
78 78
79struct button_mapping button_context_settings[] = { 79const struct button_mapping button_context_settings[] = {
80 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE }, 80 { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
81 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 81 { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
82 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE }, 82 { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
@@ -86,45 +86,45 @@ struct button_mapping button_context_settings[] = {
86 86
87 LAST_ITEM_IN_LIST 87 LAST_ITEM_IN_LIST
88}; 88};
89struct button_mapping button_context_tree[] = { 89const struct button_mapping button_context_tree[] = {
90 { ACTION_NONE, BUTTON_PLAY, BUTTON_NONE }, 90 { ACTION_NONE, BUTTON_PLAY, BUTTON_NONE },
91 { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, 91 { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
92 { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, 92 { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
93 93
94 LAST_ITEM_IN_LIST 94 LAST_ITEM_IN_LIST
95}; /* button_context_listtree */ 95}; /* button_context_listtree */
96struct button_mapping button_context_tree_scroll_lr[] = { 96const struct button_mapping button_context_tree_scroll_lr[] = {
97 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 97 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
98 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT }, 98 { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
99 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 99 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
100 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT }, 100 { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
101 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE }, 101 { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
102 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT }, 102 { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
103 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 103 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
104 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, 104 { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
105 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1), 105 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1),
106}; 106};
107 107
108struct button_mapping button_context_yesno[] = { 108const struct button_mapping button_context_yesno[] = {
109 { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE }, 109 { ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
110 LAST_ITEM_IN_LIST 110 LAST_ITEM_IN_LIST
111}; /* button_context_settings_yesno */ 111}; /* button_context_settings_yesno */
112 112
113struct button_mapping button_context_quickscreen[] = { 113const struct button_mapping button_context_quickscreen[] = {
114 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 114 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE },
115 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP }, 115 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
116 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 116 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
117 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, 117 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
118 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 118 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
119 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, 119 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
120 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 120 { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
121 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, 121 { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
122 { ACTION_STD_CANCEL, BUTTON_REC, BUTTON_NONE }, 122 { ACTION_STD_CANCEL, BUTTON_REC, BUTTON_NONE },
123 123
124 LAST_ITEM_IN_LIST 124 LAST_ITEM_IN_LIST
125}; /* button_context_quickscreen */ 125}; /* button_context_quickscreen */
126 126
127struct button_mapping* get_context_mapping( int context ) 127const struct button_mapping* get_context_mapping( int context )
128{ 128{
129 switch( context ) 129 switch( context )
130 { 130 {
diff --git a/apps/plugin.h b/apps/plugin.h
index 8384d8b9aa..9b3cec5cde 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -549,7 +549,7 @@ struct plugin_api {
549 int (*PREFIX(rmdir))(const char *name); 549 int (*PREFIX(rmdir))(const char *name);
550 /* action handling */ 550 /* action handling */
551 int (*get_custom_action)(int context,int timeout, 551 int (*get_custom_action)(int context,int timeout,
552 struct button_mapping* (*get_context_map)(int)); 552 const struct button_mapping* (*get_context_map)(int));
553 int (*get_action)(int context, int timeout); 553 int (*get_action)(int context, int timeout);
554 void (*action_signalscreenchange)(void); 554 void (*action_signalscreenchange)(void);
555 bool (*action_userabort)(int timeout); 555 bool (*action_userabort)(int timeout);