summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomer Shalev <shalev.tomer@gmail.com>2009-10-17 05:39:54 +0000
committerTomer Shalev <shalev.tomer@gmail.com>2009-10-17 05:39:54 +0000
commit4f3d7b5bcb0b025332e128c3856aa9d4cce91898 (patch)
treeac2f783e9585c476fbaa9dfaf3a7a34e826f7ccc
parent6d4d44caf69e06ea51937da9c74e78af0ac99a62 (diff)
downloadrockbox-4f3d7b5bcb0b025332e128c3856aa9d4cce91898.tar.gz
rockbox-4f3d7b5bcb0b025332e128c3856aa9d4cce91898.zip
USB HID: Use different context for each mode; Use constant for each action;
Rework keymaps This commit makes the code neater and more readable. It makes it easier to modify keymap assignments and new keypad modes. Some platforms had their keypad mappings reworked. The manual is updated to reflect all these changes. H10 remote control mapping dropped. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23219 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/action.h56
-rw-r--r--apps/keymaps/keymap-c100.c90
-rw-r--r--apps/keymaps/keymap-c200.c88
-rw-r--r--apps/keymaps/keymap-clip.c88
-rw-r--r--apps/keymaps/keymap-e200.c88
-rw-r--r--apps/keymaps/keymap-gigabeat-s.c197
-rw-r--r--apps/keymaps/keymap-h10.c119
-rw-r--r--apps/keymaps/keymap-hdd1630.c164
-rw-r--r--apps/keymaps/keymap-ipod.c148
-rw-r--r--apps/keymaps/keymap-mr100.c273
-rw-r--r--apps/keymaps/keymap-ondavx747.c55
-rw-r--r--apps/keymaps/keymap-sa9200.c97
-rw-r--r--apps/keymaps/keymap-touchscreen.c83
-rw-r--r--apps/screens.c4
-rw-r--r--apps/usb_keymaps.c117
-rw-r--r--firmware/export/config-h10.h1
-rw-r--r--firmware/export/config-h10_5gb.h1
-rw-r--r--firmware/export/config-mrobe100.h1
-rw-r--r--manual/configure_rockbox/system_options.tex264
19 files changed, 1281 insertions, 653 deletions
diff --git a/apps/action.h b/apps/action.h
index 8d8e8f50fd..0738b114da 100644
--- a/apps/action.h
+++ b/apps/action.h
@@ -77,7 +77,10 @@ enum {
77 CONTEXT_KEYBOARD, 77 CONTEXT_KEYBOARD,
78 CONTEXT_FM, 78 CONTEXT_FM,
79 CONTEXT_USB_HID, 79 CONTEXT_USB_HID,
80 CONTEXT_USB_HID_MOUSE, 80 CONTEXT_USB_HID_MODE_MULTIMEDIA,
81 CONTEXT_USB_HID_MODE_PRESENTATION,
82 CONTEXT_USB_HID_MODE_BROWSER,
83 CONTEXT_USB_HID_MODE_MOUSE,
81}; 84};
82 85
83 86
@@ -244,22 +247,41 @@ enum {
244 247
245 /* USB HID codes */ 248 /* USB HID codes */
246 ACTION_USB_HID_FIRST, /* Place holder */ 249 ACTION_USB_HID_FIRST, /* Place holder */
247 ACTION_USB_HID_DEC, 250 ACTION_USB_HID_NONE,
248 ACTION_USB_HID_INC, 251 ACTION_USB_HID_MODE_SWITCH_NEXT,
249 ACTION_USB_HID_START, 252 ACTION_USB_HID_MODE_SWITCH_PREV,
250 ACTION_USB_HID_START_LONG, 253 ACTION_USB_HID_MULTIMEDIA_VOLUME_UP,
251 ACTION_USB_HID_QUIT, 254 ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN,
252 ACTION_USB_HID_QUIT_LONG, 255 ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE,
253 ACTION_USB_HID_LEFT, 256 ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE,
254 ACTION_USB_HID_LEFT_LONG, 257 ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP,
255 ACTION_USB_HID_RIGHT, 258 ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV,
256 ACTION_USB_HID_RIGHT_LONG, 259 ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT,
257 ACTION_USB_HID_SELECT, 260 ACTION_USB_HID_PRESENTATION_SLIDESHOW_START,
258 ACTION_USB_HID_SELECT_LONG, 261 ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE,
259 ACTION_USB_HID_MENU, 262 ACTION_USB_HID_PRESENTATION_SLIDE_PREV,
260 ACTION_USB_HID_MENU_LONG, 263 ACTION_USB_HID_PRESENTATION_SLIDE_NEXT,
261 ACTION_USB_HID_MODE, 264 ACTION_USB_HID_PRESENTATION_SLIDE_FIRST,
262 ACTION_USB_HID_MODE_LONG, 265 ACTION_USB_HID_PRESENTATION_SLIDE_LAST,
266 ACTION_USB_HID_PRESENTATION_SCREEN_BLACK,
267 ACTION_USB_HID_PRESENTATION_SCREEN_WHITE,
268 ACTION_USB_HID_PRESENTATION_LINK_PREV,
269 ACTION_USB_HID_PRESENTATION_LINK_NEXT,
270 ACTION_USB_HID_PRESENTATION_MOUSE_CLICK,
271 ACTION_USB_HID_PRESENTATION_MOUSE_OVER,
272 ACTION_USB_HID_BROWSER_SCROLL_UP,
273 ACTION_USB_HID_BROWSER_SCROLL_DOWN,
274 ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN,
275 ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP,
276 ACTION_USB_HID_BROWSER_ZOOM_IN,
277 ACTION_USB_HID_BROWSER_ZOOM_OUT,
278 ACTION_USB_HID_BROWSER_ZOOM_RESET,
279 ACTION_USB_HID_BROWSER_TAB_PREV,
280 ACTION_USB_HID_BROWSER_TAB_NEXT,
281 ACTION_USB_HID_BROWSER_TAB_CLOSE,
282 ACTION_USB_HID_BROWSER_HISTORY_BACK,
283 ACTION_USB_HID_BROWSER_HISTORY_FORWARD,
284 ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN,
263 ACTION_USB_HID_MOUSE_UP, 285 ACTION_USB_HID_MOUSE_UP,
264 ACTION_USB_HID_MOUSE_UP_REP, 286 ACTION_USB_HID_MOUSE_UP_REP,
265 ACTION_USB_HID_MOUSE_DOWN, 287 ACTION_USB_HID_MOUSE_DOWN,
diff --git a/apps/keymaps/keymap-c100.c b/apps/keymaps/keymap-c100.c
index 7ee400f345..457e81ed99 100644
--- a/apps/keymaps/keymap-c100.c
+++ b/apps/keymaps/keymap-c100.c
@@ -234,27 +234,68 @@ static const struct button_mapping button_context_bmark[] = {
234 234
235#ifdef USB_ENABLE_HID 235#ifdef USB_ENABLE_HID
236static const struct button_mapping button_context_usb_hid[] = { 236static const struct button_mapping button_context_usb_hid[] = {
237 { ACTION_USB_HID_INC, BUTTON_VOLUP, BUTTON_NONE }, 237 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_MODE|BUTTON_REL, BUTTON_MODE },
238 { ACTION_USB_HID_INC, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE }, 238 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE },
239 { ACTION_USB_HID_DEC, BUTTON_VOLDOWN, BUTTON_NONE },
240 { ACTION_USB_HID_DEC, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE },
241 { ACTION_USB_HID_START, BUTTON_UP|BUTTON_REL, BUTTON_UP },
242 { ACTION_USB_HID_START_LONG, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
243 { ACTION_USB_HID_QUIT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
244 { ACTION_USB_HID_QUIT_LONG, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
245 { ACTION_USB_HID_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
246 { ACTION_USB_HID_LEFT_LONG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
247 { ACTION_USB_HID_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
248 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
249 { ACTION_USB_HID_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
250 { ACTION_USB_HID_SELECT_LONG, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
251 { ACTION_USB_HID_MENU, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
252 { ACTION_USB_HID_MODE, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
253 239
254 LAST_ITEM_IN_LIST 240 LAST_ITEM_IN_LIST
255}; /* button_context_usb_hid */ 241}; /* button_context_usb_hid */
256 242
257static const struct button_mapping button_context_usb_hid_mouse[] = { 243static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
244 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOLUP, BUTTON_NONE },
245 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE },
246 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOLDOWN, BUTTON_NONE },
247 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE },
248 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
249 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_UP|BUTTON_REL, BUTTON_UP },
250 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
251 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
252 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
253
254 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
255}; /* button_context_usb_hid_mode_multimedia */
256
257static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
258 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_UP|BUTTON_REL, BUTTON_UP },
259 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
260 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
261 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
262 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
263 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
264 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
265 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
266 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOLUP, BUTTON_NONE },
267 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE },
268 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOLDOWN, BUTTON_NONE },
269 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE },
270 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
271 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
272
273 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
274}; /* button_context_usb_hid_mode_presentation */
275
276static const struct button_mapping button_context_usb_hid_mode_browser[] = {
277 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOLUP, BUTTON_NONE },
278 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE },
279 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOLDOWN, BUTTON_NONE },
280 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE },
281 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_UP|BUTTON_REL, BUTTON_UP },
282 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
283 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
284 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
285 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
286 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_UP|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_UP|BUTTON_DOWN },
287 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
288 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
289 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
290 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
291 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
292 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
293
294 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
295}; /* button_context_usb_hid_mode_browser */
296
297#ifdef HAVE_USB_HID_MOUSE
298static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
258 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE }, 299 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE },
259 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 300 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
260 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE }, 301 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE },
@@ -289,7 +330,8 @@ static const struct button_mapping button_context_usb_hid_mouse[] = {
289 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE }, 330 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE },
290 331
291 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 332 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
292}; /* button_context_usb_hid_mouse */ 333}; /* button_context_usb_hid_mode_mouse */
334#endif
293#endif 335#endif
294 336
295/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */ 337/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
@@ -343,8 +385,16 @@ const struct button_mapping* get_context_mapping(int context)
343#ifdef USB_ENABLE_HID 385#ifdef USB_ENABLE_HID
344 case CONTEXT_USB_HID: 386 case CONTEXT_USB_HID:
345 return button_context_usb_hid; 387 return button_context_usb_hid;
346 case CONTEXT_USB_HID_MOUSE: 388 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
347 return button_context_usb_hid_mouse; 389 return button_context_usb_hid_mode_multimedia;
390 case CONTEXT_USB_HID_MODE_PRESENTATION:
391 return button_context_usb_hid_mode_presentation;
392 case CONTEXT_USB_HID_MODE_BROWSER:
393 return button_context_usb_hid_mode_browser;
394#ifdef HAVE_USB_HID_MOUSE
395 case CONTEXT_USB_HID_MODE_MOUSE:
396 return button_context_usb_hid_mode_mouse;
397#endif
348#endif 398#endif
349 default: 399 default:
350 return button_context_standard; 400 return button_context_standard;
diff --git a/apps/keymaps/keymap-c200.c b/apps/keymaps/keymap-c200.c
index 7acbe85420..af7c990340 100644
--- a/apps/keymaps/keymap-c200.c
+++ b/apps/keymaps/keymap-c200.c
@@ -266,30 +266,68 @@ static const struct button_mapping button_context_bmark[] = {
266 266
267#ifdef USB_ENABLE_HID 267#ifdef USB_ENABLE_HID
268static const struct button_mapping button_context_usb_hid[] = { 268static const struct button_mapping button_context_usb_hid[] = {
269 { ACTION_USB_HID_INC, BUTTON_VOL_UP, BUTTON_NONE }, 269 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_REC|BUTTON_REL, BUTTON_REC },
270 { ACTION_USB_HID_INC, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 270 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC },
271 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
272 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
273 { ACTION_USB_HID_START, BUTTON_UP|BUTTON_REL, BUTTON_UP },
274 { ACTION_USB_HID_START_LONG, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
275 { ACTION_USB_HID_QUIT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
276 { ACTION_USB_HID_QUIT_LONG, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
277 { ACTION_USB_HID_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
278 { ACTION_USB_HID_LEFT_LONG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
279 { ACTION_USB_HID_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
280 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
281 { ACTION_USB_HID_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
282 { ACTION_USB_HID_SELECT_LONG, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
283 { ACTION_USB_HID_MENU, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
284 { ACTION_USB_HID_MENU_LONG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
285 { ACTION_USB_HID_MODE, BUTTON_REC|BUTTON_REL, BUTTON_REC },
286 { ACTION_USB_HID_MODE_LONG, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC },
287 271
288 LAST_ITEM_IN_LIST 272 LAST_ITEM_IN_LIST
289}; /* button_context_usb_hid */ 273}; /* button_context_usb_hid */
290 274
275static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
276 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
277 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
278 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP, BUTTON_NONE },
279 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
280 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
281 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_UP|BUTTON_REL, BUTTON_UP },
282 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
283 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
284 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
285
286 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
287}; /* button_context_usb_hid_mode_multimedia */
288
289static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
290 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_UP|BUTTON_REL, BUTTON_UP },
291 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
292 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
293 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
294 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
295 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
296 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
297 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
298 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_UP, BUTTON_NONE },
299 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
300 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_DOWN, BUTTON_NONE },
301 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
302 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
303 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
304
305 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
306}; /* button_context_usb_hid_mode_presentation */
307
308static const struct button_mapping button_context_usb_hid_mode_browser[] = {
309 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOL_UP, BUTTON_NONE },
310 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
311 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
312 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
313 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_UP|BUTTON_REL, BUTTON_UP },
314 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
315 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
316 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
317 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
318 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_UP|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_UP|BUTTON_DOWN },
319 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
320 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
321 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
322 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
323 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
324 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
325
326 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
327}; /* button_context_usb_hid_mode_browser */
328
291#ifdef HAVE_USB_HID_MOUSE 329#ifdef HAVE_USB_HID_MOUSE
292static const struct button_mapping button_context_usb_hid_mouse[] = { 330static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
293 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE }, 331 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE },
294 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 332 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
295 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE }, 333 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE },
@@ -324,7 +362,7 @@ static const struct button_mapping button_context_usb_hid_mouse[] = {
324 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 362 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
325 363
326 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 364 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
327}; /* button_context_usb_hid_mouse */ 365}; /* button_context_usb_hid_mode_mouse */
328#endif 366#endif
329#endif 367#endif
330 368
@@ -377,9 +415,15 @@ const struct button_mapping* get_context_mapping(int context)
377#ifdef USB_ENABLE_HID 415#ifdef USB_ENABLE_HID
378 case CONTEXT_USB_HID: 416 case CONTEXT_USB_HID:
379 return button_context_usb_hid; 417 return button_context_usb_hid;
418 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
419 return button_context_usb_hid_mode_multimedia;
420 case CONTEXT_USB_HID_MODE_PRESENTATION:
421 return button_context_usb_hid_mode_presentation;
422 case CONTEXT_USB_HID_MODE_BROWSER:
423 return button_context_usb_hid_mode_browser;
380#ifdef HAVE_USB_HID_MOUSE 424#ifdef HAVE_USB_HID_MOUSE
381 case CONTEXT_USB_HID_MOUSE: 425 case CONTEXT_USB_HID_MODE_MOUSE:
382 return button_context_usb_hid_mouse; 426 return button_context_usb_hid_mode_mouse;
383#endif 427#endif
384#endif 428#endif
385 default: 429 default:
diff --git a/apps/keymaps/keymap-clip.c b/apps/keymaps/keymap-clip.c
index b2821664d7..ddc1d3f82a 100644
--- a/apps/keymaps/keymap-clip.c
+++ b/apps/keymaps/keymap-clip.c
@@ -275,30 +275,68 @@ static const struct button_mapping button_context_bmark[] = {
275 275
276#ifdef USB_ENABLE_HID 276#ifdef USB_ENABLE_HID
277static const struct button_mapping button_context_usb_hid[] = { 277static const struct button_mapping button_context_usb_hid[] = {
278 { ACTION_USB_HID_INC, BUTTON_VOL_UP, BUTTON_NONE }, 278 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
279 { ACTION_USB_HID_INC, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 279 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
280 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
281 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
282 { ACTION_USB_HID_START, BUTTON_UP|BUTTON_REL, BUTTON_UP },
283 { ACTION_USB_HID_START_LONG, BUTTON_UP|BOTTOM_REPEAT, BUTTON_UP },
284 { ACTION_USB_HID_QUIT, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
285 { ACTION_USB_HID_QUIT_LONG, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME },
286 { ACTION_USB_HID_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
287 { ACTION_USB_HID_LEFT_LONG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
288 { ACTION_USB_HID_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
289 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
290 { ACTION_USB_HID_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
291 { ACTION_USB_HID_SELECT_LONG, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
292 { ACTION_USB_HID_MENU, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
293 { ACTION_USB_HID_MENU_LONG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
294 { ACTION_USB_HID_MODE, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
295 { ACTION_USB_HID_MODE_LONG, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
296 280
297 LAST_ITEM_IN_LIST 281 LAST_ITEM_IN_LIST
298}; /* button_context_usb_hid */ 282}; /* button_context_usb_hid */
299 283
284static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
285 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
286 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
287 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP, BUTTON_NONE },
288 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
289 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
290 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_UP|BUTTON_REL, BUTTON_UP },
291 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
292 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
293 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
294
295 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
296}; /* button_context_usb_hid_mode_multimedia */
297
298static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
299 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_UP|BUTTON_REL, BUTTON_UP },
300 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_HOME|BUTTON_REL, BUTTON_HOME },
301 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
302 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
303 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
304 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
305 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
306 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
307 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_UP, BUTTON_NONE },
308 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
309 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_DOWN, BUTTON_NONE },
310 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
311 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
312 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
313
314 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
315}; /* button_context_usb_hid_mode_presentation */
316
317static const struct button_mapping button_context_usb_hid_mode_browser[] = {
318 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOL_UP, BUTTON_NONE },
319 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
320 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
321 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
322 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_UP|BUTTON_REL, BUTTON_UP },
323 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
324 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
325 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
326 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
327 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_UP|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_UP|BUTTON_DOWN },
328 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
329 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
330 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME },
331 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
332 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
333 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
334
335 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
336}; /* button_context_usb_hid_mode_browser */
337
300#ifdef HAVE_USB_HID_MOUSE 338#ifdef HAVE_USB_HID_MOUSE
301static const struct button_mapping button_context_usb_hid_mouse[] = { 339static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
302 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE }, 340 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE },
303 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 341 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
304 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE }, 342 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE },
@@ -333,7 +371,7 @@ static const struct button_mapping button_context_usb_hid_mouse[] = {
333 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 371 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
334 372
335 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 373 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
336}; /* button_context_usb_hid_mouse */ 374}; /* button_context_usb_hid_mode_mouse */
337#endif 375#endif
338#endif 376#endif
339 377
@@ -387,9 +425,15 @@ const struct button_mapping* get_context_mapping(int context)
387#ifdef USB_ENABLE_HID 425#ifdef USB_ENABLE_HID
388 case CONTEXT_USB_HID: 426 case CONTEXT_USB_HID:
389 return button_context_usb_hid; 427 return button_context_usb_hid;
428 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
429 return button_context_usb_hid_mode_multimedia;
430 case CONTEXT_USB_HID_MODE_PRESENTATION:
431 return button_context_usb_hid_mode_presentation;
432 case CONTEXT_USB_HID_MODE_BROWSER:
433 return button_context_usb_hid_mode_browser;
390#ifdef HAVE_USB_HID_MOUSE 434#ifdef HAVE_USB_HID_MOUSE
391 case CONTEXT_USB_HID_MOUSE: 435 case CONTEXT_USB_HID_MODE_MOUSE:
392 return button_context_usb_hid_mouse; 436 return button_context_usb_hid_mode_mouse;
393#endif 437#endif
394#endif 438#endif
395 default: 439 default:
diff --git a/apps/keymaps/keymap-e200.c b/apps/keymaps/keymap-e200.c
index 23e8dbcf83..487fb11130 100644
--- a/apps/keymaps/keymap-e200.c
+++ b/apps/keymaps/keymap-e200.c
@@ -277,30 +277,68 @@ static const struct button_mapping button_context_bmark[] = {
277 277
278#ifdef USB_ENABLE_HID 278#ifdef USB_ENABLE_HID
279static const struct button_mapping button_context_usb_hid[] = { 279static const struct button_mapping button_context_usb_hid[] = {
280 { ACTION_USB_HID_INC, BUTTON_SCROLL_FWD, BUTTON_NONE }, 280 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_REC|BUTTON_REL, BUTTON_REC },
281 { ACTION_USB_HID_INC, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE }, 281 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC },
282 { ACTION_USB_HID_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE },
283 { ACTION_USB_HID_DEC, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
284 { ACTION_USB_HID_START, BUTTON_UP|BUTTON_REL, BUTTON_UP },
285 { ACTION_USB_HID_START_LONG, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
286 { ACTION_USB_HID_QUIT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
287 { ACTION_USB_HID_QUIT_LONG, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
288 { ACTION_USB_HID_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
289 { ACTION_USB_HID_LEFT_LONG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
290 { ACTION_USB_HID_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
291 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
292 { ACTION_USB_HID_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
293 { ACTION_USB_HID_SELECT_LONG, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
294 { ACTION_USB_HID_MENU, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
295 { ACTION_USB_HID_MENU_LONG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
296 { ACTION_USB_HID_MODE, BUTTON_REC|BUTTON_REL, BUTTON_REC },
297 { ACTION_USB_HID_MODE_LONG, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC },
298 282
299 LAST_ITEM_IN_LIST 283 LAST_ITEM_IN_LIST
300}; /* button_context_usb_hid */ 284}; /* button_context_usb_hid */
301 285
286static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
287 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_SCROLL_BACK, BUTTON_NONE },
288 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
289 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_SCROLL_FWD, BUTTON_NONE },
290 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
291 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
292 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_UP|BUTTON_REL, BUTTON_UP },
293 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
294 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
295 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
296
297 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
298}; /* button_context_usb_hid_mode_multimedia */
299
300static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
301 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_UP|BUTTON_REL, BUTTON_UP },
302 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
303 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
304 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
305 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
306 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
307 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
308 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
309 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_SCROLL_BACK, BUTTON_NONE },
310 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
311 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_SCROLL_FWD, BUTTON_NONE },
312 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
313 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
314 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
315
316 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
317}; /* button_context_usb_hid_mode_presentation */
318
319static const struct button_mapping button_context_usb_hid_mode_browser[] = {
320 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_SCROLL_BACK, BUTTON_NONE },
321 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
322 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_SCROLL_FWD, BUTTON_NONE },
323 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
324 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_UP|BUTTON_REL, BUTTON_UP },
325 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
326 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
327 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
328 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
329 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_UP|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_UP|BUTTON_DOWN },
330 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
331 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
332 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
333 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
334 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
335 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
336
337 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
338}; /* button_context_usb_hid_mode_browser */
339
302#ifdef HAVE_USB_HID_MOUSE 340#ifdef HAVE_USB_HID_MOUSE
303static const struct button_mapping button_context_usb_hid_mouse[] = { 341static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
304 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE }, 342 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE },
305 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 343 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
306 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE }, 344 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE },
@@ -335,7 +373,7 @@ static const struct button_mapping button_context_usb_hid_mouse[] = {
335 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE }, 373 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
336 374
337 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 375 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
338}; /* button_context_usb_hid_mouse */ 376}; /* button_context_usb_hid_mode_mouse */
339#endif 377#endif
340#endif 378#endif
341 379
@@ -389,9 +427,15 @@ const struct button_mapping* get_context_mapping(int context)
389#ifdef USB_ENABLE_HID 427#ifdef USB_ENABLE_HID
390 case CONTEXT_USB_HID: 428 case CONTEXT_USB_HID:
391 return button_context_usb_hid; 429 return button_context_usb_hid;
430 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
431 return button_context_usb_hid_mode_multimedia;
432 case CONTEXT_USB_HID_MODE_PRESENTATION:
433 return button_context_usb_hid_mode_presentation;
434 case CONTEXT_USB_HID_MODE_BROWSER:
435 return button_context_usb_hid_mode_browser;
392#ifdef HAVE_USB_HID_MOUSE 436#ifdef HAVE_USB_HID_MOUSE
393 case CONTEXT_USB_HID_MOUSE: 437 case CONTEXT_USB_HID_MODE_MOUSE:
394 return button_context_usb_hid_mouse; 438 return button_context_usb_hid_mode_mouse;
395#endif 439#endif
396#endif 440#endif
397 default: 441 default:
diff --git a/apps/keymaps/keymap-gigabeat-s.c b/apps/keymaps/keymap-gigabeat-s.c
index c959eb09ba..cf150bb6d9 100644
--- a/apps/keymaps/keymap-gigabeat-s.c
+++ b/apps/keymaps/keymap-gigabeat-s.c
@@ -470,49 +470,86 @@ static const struct button_mapping remote_button_context_right_is_inc[] = {
470 470
471#ifdef USB_ENABLE_HID 471#ifdef USB_ENABLE_HID
472static const struct button_mapping button_context_usb_hid[] = { 472static const struct button_mapping button_context_usb_hid[] = {
473 { ACTION_USB_HID_INC, BUTTON_VOL_UP, BUTTON_NONE }, 473 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
474 { ACTION_USB_HID_INC, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 474 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
475 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
476 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
477 { ACTION_USB_HID_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
478 { ACTION_USB_HID_START_LONG, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
479 { ACTION_USB_HID_QUIT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
480 { ACTION_USB_HID_QUIT_LONG, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
481 { ACTION_USB_HID_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
482 { ACTION_USB_HID_LEFT_LONG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
483 { ACTION_USB_HID_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
484 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
485 { ACTION_USB_HID_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
486 { ACTION_USB_HID_SELECT, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
487 { ACTION_USB_HID_SELECT_LONG, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
488 { ACTION_USB_HID_SELECT_LONG, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
489 { ACTION_USB_HID_MENU, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
490 { ACTION_USB_HID_MENU_LONG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
491 { ACTION_USB_HID_MODE, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
492 { ACTION_USB_HID_MODE_LONG, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
493 475
494 LAST_ITEM_IN_LIST 476 LAST_ITEM_IN_LIST
495}; /* button_context_usb_hid */ 477}; /* button_context_usb_hid */
496 478
497static const struct button_mapping remote_button_context_usb_hid[] = { 479static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
498 { ACTION_USB_HID_INC, BUTTON_RC_VOL_UP, BUTTON_NONE }, 480 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
499 { ACTION_USB_HID_INC, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 481 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
500 { ACTION_USB_HID_DEC, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 482 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP, BUTTON_NONE },
501 { ACTION_USB_HID_DEC, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 483 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
502 { ACTION_USB_HID_START, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY }, 484 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
503 { ACTION_USB_HID_QUIT, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY }, 485 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
504 { ACTION_USB_HID_LEFT, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW }, 486 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
505 { ACTION_USB_HID_RIGHT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF}, 487 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_UP|BUTTON_REL, BUTTON_UP },
506 { ACTION_USB_HID_SELECT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF }, 488 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
507 { ACTION_USB_HID_SELECT_LONG, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW }, 489 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
508 { ACTION_USB_HID_MENU, BUTTON_RC_DSP|BUTTON_REPEAT, BUTTON_RC_DSP }, 490 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
509 { ACTION_USB_HID_MODE, BUTTON_RC_DSP|BUTTON_REL, BUTTON_RC_DSP }, 491 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
492 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
493 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
510 494
511 LAST_ITEM_IN_LIST 495 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
512}; /* remote_button_context_usb_hid */ 496}; /* button_context_usb_hid_mode_multimedia */
497
498static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
499 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
500 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_UP|BUTTON_REL, BUTTON_UP },
501 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
502 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
503 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
504 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
505 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
506 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
507 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
508 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_PREV|BUTTON_REPEAT, BUTTON_PREV },
509 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
510 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NEXT },
511 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
512 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
513 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_UP, BUTTON_NONE },
514 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
515 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_DOWN, BUTTON_NONE },
516 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
517 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
518 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
519 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
520 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
521
522 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
523}; /* button_context_usb_hid_mode_presentation */
524
525static const struct button_mapping button_context_usb_hid_mode_browser[] = {
526 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOL_UP, BUTTON_NONE },
527 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
528 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_PREV, BUTTON_NONE },
529 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
530 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
531 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
532 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_NEXT, BUTTON_NONE },
533 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
534 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_UP|BUTTON_REL, BUTTON_UP },
535 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
536 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
537 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
538 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
539 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_UP|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_UP|BUTTON_DOWN },
540 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
541 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
542 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
543 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
544 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
545 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
546 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
547
548 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
549}; /* button_context_usb_hid_mode_browser */
513 550
514#ifdef HAVE_USB_HID_MOUSE 551#ifdef HAVE_USB_HID_MOUSE
515static const struct button_mapping button_context_usb_hid_mouse[] = { 552static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
516 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE }, 553 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE },
517 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 554 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
518 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE }, 555 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE },
@@ -521,22 +558,22 @@ static const struct button_mapping button_context_usb_hid_mouse[] = {
521 { ACTION_USB_HID_MOUSE_LEFT_REP, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 558 { ACTION_USB_HID_MOUSE_LEFT_REP, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
522 { ACTION_USB_HID_MOUSE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 559 { ACTION_USB_HID_MOUSE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
523 { ACTION_USB_HID_MOUSE_RIGHT_REP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 560 { ACTION_USB_HID_MOUSE_RIGHT_REP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
561 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_SELECT, BUTTON_NONE },
562 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
524 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_SELECT|BUTTON_UP, BUTTON_NONE }, 563 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_SELECT|BUTTON_UP, BUTTON_NONE },
525 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_BACK|BUTTON_UP, BUTTON_NONE },
526 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_SELECT|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 564 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_SELECT|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
527 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_BACK|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
528 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE }, 565 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE },
529 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_BACK|BUTTON_DOWN, BUTTON_NONE },
530 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_SELECT|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 566 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_SELECT|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
531 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_BACK|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
532 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_SELECT, BUTTON_NONE },
533 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
534 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_SELECT|BUTTON_LEFT, BUTTON_NONE }, 567 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_SELECT|BUTTON_LEFT, BUTTON_NONE },
535 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_SELECT|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 568 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_SELECT|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
536 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_SELECT|BUTTON_RIGHT, BUTTON_NONE }, 569 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_SELECT|BUTTON_RIGHT, BUTTON_NONE },
537 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_SELECT|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 570 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_SELECT|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
538 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_BACK, BUTTON_NONE }, 571 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_BACK, BUTTON_NONE },
539 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_BACK|BUTTON_REL, BUTTON_NONE }, 572 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
573 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_BACK|BUTTON_UP, BUTTON_NONE },
574 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_BACK|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
575 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_BACK|BUTTON_DOWN, BUTTON_NONE },
576 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_BACK|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
540 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_BACK|BUTTON_LEFT, BUTTON_NONE }, 577 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_BACK|BUTTON_LEFT, BUTTON_NONE },
541 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_BACK|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 578 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_BACK|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
542 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_BACK|BUTTON_RIGHT, BUTTON_NONE }, 579 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_BACK|BUTTON_RIGHT, BUTTON_NONE },
@@ -553,12 +590,68 @@ static const struct button_mapping button_context_usb_hid_mouse[] = {
553 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT_REP, BUTTON_MENU|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 590 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT_REP, BUTTON_MENU|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
554 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_VOL_UP, BUTTON_NONE }, 591 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_VOL_UP, BUTTON_NONE },
555 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 592 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
593 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_PREV, BUTTON_NONE },
594 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE },
556 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, 595 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
557 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 596 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
597 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_NEXT, BUTTON_NONE },
598 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE },
558 599
559 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 600 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
560}; /* button_context_usb_hid_mouse */ 601}; /* button_context_usb_hid_mode_mouse */
561#endif 602#endif
603
604static const struct button_mapping remote_button_context_usb_hid[] = {
605 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_RC_DSP|BUTTON_REL, BUTTON_RC_DSP },
606 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_RC_DSP|BUTTON_REPEAT, BUTTON_RC_DSP },
607
608 LAST_ITEM_IN_LIST
609}; /* remote_button_context_usb_hid */
610
611static const struct button_mapping remote_button_context_usb_hid_mode_multimedia[] = {
612 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
613 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
614 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_RC_VOL_UP, BUTTON_NONE },
615 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
616 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF },
617 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
618 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
619 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
620 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
621
622 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
623}; /* remote_button_context_usb_hid_mode_multimedia */
624
625static const struct button_mapping remote_button_context_usb_hid_mode_presentation[] = {
626 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
627 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
628 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
629 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
630 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_RC_VOL_UP, BUTTON_NONE },
631 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
632 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
633 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
634 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF },
635 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW },
636
637 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
638}; /* remote_button_context_usb_hid_mode_presentation */
639
640static const struct button_mapping remote_button_context_usb_hid_mode_browser[] = {
641 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_RC_VOL_UP, BUTTON_NONE },
642 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
643 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
644 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
645 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF },
646 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW },
647 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_RC_FF|BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_FF|BUTTON_RC_REW },
648 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
649 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
650 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
651 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
652
653 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
654}; /* remote_button_context_usb_hid_mode_browser */
562#endif 655#endif
563 656
564static const struct button_mapping* get_context_mapping_remote( int context ) 657static const struct button_mapping* get_context_mapping_remote( int context )
@@ -606,7 +699,14 @@ static const struct button_mapping* get_context_mapping_remote( int context )
606#ifdef USB_ENABLE_HID 699#ifdef USB_ENABLE_HID
607 case CONTEXT_USB_HID: 700 case CONTEXT_USB_HID:
608 return remote_button_context_usb_hid; 701 return remote_button_context_usb_hid;
702 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
703 return remote_button_context_usb_hid_mode_multimedia;
704 case CONTEXT_USB_HID_MODE_PRESENTATION:
705 return remote_button_context_usb_hid_mode_presentation;
706 case CONTEXT_USB_HID_MODE_BROWSER:
707 return remote_button_context_usb_hid_mode_browser;
609#endif 708#endif
709
610 default: 710 default:
611 return remote_button_context_standard; 711 return remote_button_context_standard;
612 } 712 }
@@ -677,11 +777,18 @@ const struct button_mapping* get_context_mapping(int context)
677#ifdef USB_ENABLE_HID 777#ifdef USB_ENABLE_HID
678 case CONTEXT_USB_HID: 778 case CONTEXT_USB_HID:
679 return button_context_usb_hid; 779 return button_context_usb_hid;
780 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
781 return button_context_usb_hid_mode_multimedia;
782 case CONTEXT_USB_HID_MODE_PRESENTATION:
783 return button_context_usb_hid_mode_presentation;
784 case CONTEXT_USB_HID_MODE_BROWSER:
785 return button_context_usb_hid_mode_browser;
680#ifdef HAVE_USB_HID_MOUSE 786#ifdef HAVE_USB_HID_MOUSE
681 case CONTEXT_USB_HID_MOUSE: 787 case CONTEXT_USB_HID_MODE_MOUSE:
682 return button_context_usb_hid_mouse; 788 return button_context_usb_hid_mode_mouse;
683#endif 789#endif
684#endif 790#endif
791
685 default: 792 default:
686 return button_context_standard; 793 return button_context_standard;
687 } 794 }
diff --git a/apps/keymaps/keymap-h10.c b/apps/keymaps/keymap-h10.c
index 8ee9a28478..9b7800a3da 100644
--- a/apps/keymaps/keymap-h10.c
+++ b/apps/keymaps/keymap-h10.c
@@ -339,73 +339,65 @@ static const struct button_mapping button_context_radio[] = {
339 339
340#ifdef USB_ENABLE_HID 340#ifdef USB_ENABLE_HID
341static const struct button_mapping button_context_usb_hid[] = { 341static const struct button_mapping button_context_usb_hid[] = {
342 { ACTION_USB_HID_INC, BUTTON_SCROLL_UP, BUTTON_NONE }, 342 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
343 { ACTION_USB_HID_INC, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE }, 343 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
344 { ACTION_USB_HID_DEC, BUTTON_SCROLL_DOWN, BUTTON_NONE },
345 { ACTION_USB_HID_DEC, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
346 { ACTION_USB_HID_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
347 { ACTION_USB_HID_START_LONG, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
348 { ACTION_USB_HID_QUIT, BUTTON_REW|BUTTON_REL, BUTTON_REW },
349 { ACTION_USB_HID_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
350 { ACTION_USB_HID_LEFT_LONG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
351 { ACTION_USB_HID_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
352 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
353 { ACTION_USB_HID_SELECT, BUTTON_FF|BUTTON_REL, BUTTON_FF },
354 { ACTION_USB_HID_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
355 { ACTION_USB_HID_MODE, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
356 344
357 LAST_ITEM_IN_LIST 345 LAST_ITEM_IN_LIST
358}; /* button_context_usb_hid */ 346}; /* button_context_usb_hid */
359 347
360#ifdef HAVE_USB_HID_MOUSE 348static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
361static const struct button_mapping button_context_usb_hid_mouse[] = { 349 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_SCROLL_UP, BUTTON_NONE },
362 { ACTION_USB_HID_MOUSE_UP, BUTTON_SCROLL_UP, BUTTON_NONE }, 350 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
363 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE }, 351 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_SCROLL_DOWN, BUTTON_NONE },
364 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE }, 352 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
365 { ACTION_USB_HID_MOUSE_DOWN_REP, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 353 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
366 { ACTION_USB_HID_MOUSE_LEFT, BUTTON_LEFT, BUTTON_NONE }, 354 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
367 { ACTION_USB_HID_MOUSE_LEFT_REP, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 355 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
368 { ACTION_USB_HID_MOUSE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 356 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
369 { ACTION_USB_HID_MOUSE_RIGHT_REP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 357 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_REW|BUTTON_REL, BUTTON_REW },
370 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_POWER, BUTTON_NONE }, 358 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_FF|BUTTON_REL, BUTTON_FF },
371 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE },
372 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_POWER|BUTTON_SCROLL_UP, BUTTON_NONE },
373 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_POWER|BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
374 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_POWER|BUTTON_SCROLL_DOWN, BUTTON_NONE },
375 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_POWER|BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
376 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_POWER|BUTTON_LEFT, BUTTON_NONE },
377 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_POWER|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
378 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_POWER|BUTTON_RIGHT, BUTTON_NONE },
379 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_POWER|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
380 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT, BUTTON_PLAY, BUTTON_NONE },
381 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
382 { ACTION_USB_HID_MOUSE_RDRAG_UP, BUTTON_PLAY|BUTTON_SCROLL_UP, BUTTON_NONE },
383 { ACTION_USB_HID_MOUSE_RDRAG_UP_REP, BUTTON_PLAY|BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
384 { ACTION_USB_HID_MOUSE_RDRAG_DOWN, BUTTON_PLAY|BUTTON_SCROLL_DOWN, BUTTON_NONE },
385 { ACTION_USB_HID_MOUSE_RDRAG_DOWN_REP, BUTTON_PLAY|BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
386 { ACTION_USB_HID_MOUSE_RDRAG_LEFT, BUTTON_PLAY|BUTTON_LEFT, BUTTON_NONE },
387 { ACTION_USB_HID_MOUSE_RDRAG_LEFT_REP, BUTTON_PLAY|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
388 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_NONE },
389 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT_REP, BUTTON_PLAY|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
390 359
391 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 360 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
392}; /* button_context_usb_hid_mouse */ 361}; /* button_context_usb_hid_mode_multimedia */
393#endif 362
363static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
364 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
365 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
366 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_REW|BUTTON_REL, BUTTON_REW },
367 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_FF|BUTTON_REL, BUTTON_FF },
368 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_REW|BUTTON_REPEAT, BUTTON_REW },
369 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_FF|BUTTON_REPEAT, BUTTON_FF },
370 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
371 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
372 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_SCROLL_UP, BUTTON_NONE },
373 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
374 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_SCROLL_DOWN, BUTTON_NONE },
375 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
376 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
377 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
394 378
395static const struct button_mapping remote_button_context_usb_hid[] = { 379 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
396 { ACTION_USB_HID_INC, BUTTON_RC_VOL_UP, BUTTON_NONE }, 380}; /* button_context_usb_hid_mode_presentation */
397 { ACTION_USB_HID_INC, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 381
398 { ACTION_USB_HID_DEC, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 382static const struct button_mapping button_context_usb_hid_mode_browser[] = {
399 { ACTION_USB_HID_DEC, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 383 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_SCROLL_UP, BUTTON_NONE },
400 { ACTION_USB_HID_START, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY }, 384 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
401 { ACTION_USB_HID_QUIT, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY }, 385 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE },
402 { ACTION_USB_HID_LEFT, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW }, 386 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
403 { ACTION_USB_HID_LEFT_LONG, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW }, 387 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_REW|BUTTON_REL, BUTTON_REW },
404 { ACTION_USB_HID_RIGHT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF }, 388 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_FF|BUTTON_REL, BUTTON_FF },
405 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF }, 389 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_REW|BUTTON_REPEAT, BUTTON_REW },
390 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_FF|BUTTON_REPEAT, BUTTON_FF },
391 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_REW|BUTTON_FF|BUTTON_REPEAT, BUTTON_REW|BUTTON_FF },
392 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
393 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
394 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_LEFT|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_LEFT|BUTTON_RIGHT },
395 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
396 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
397 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
406 398
407 LAST_ITEM_IN_LIST 399 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
408}; /* remote_button_context_usb_hid */ 400}; /* button_context_usb_hid_mode_browser */
409#endif 401#endif
410 402
411static const struct button_mapping* get_context_mapping_remote( int context ) 403static const struct button_mapping* get_context_mapping_remote( int context )
@@ -437,11 +429,6 @@ static const struct button_mapping* get_context_mapping_remote( int context )
437 return remote_button_context_pitchscreen; 429 return remote_button_context_pitchscreen;
438 case CONTEXT_RECSCREEN: 430 case CONTEXT_RECSCREEN:
439 return button_context_recscreen; 431 return button_context_recscreen;
440#ifdef USB_ENABLE_HID
441 case CONTEXT_USB_HID:
442 return remote_button_context_usb_hid;
443#endif
444
445 default: 432 default:
446 return remote_button_context_standard; 433 return remote_button_context_standard;
447 } 434 }
@@ -498,10 +485,6 @@ const struct button_mapping* get_context_mapping(int context)
498#ifdef USB_ENABLE_HID 485#ifdef USB_ENABLE_HID
499 case CONTEXT_USB_HID: 486 case CONTEXT_USB_HID:
500 return button_context_usb_hid; 487 return button_context_usb_hid;
501#ifdef HAVE_USB_HID_MOUSE
502 case CONTEXT_USB_HID_MOUSE:
503 return button_context_usb_hid_mouse;
504#endif
505#endif 488#endif
506 default: 489 default:
507 return button_context_standard; 490 return button_context_standard;
diff --git a/apps/keymaps/keymap-hdd1630.c b/apps/keymaps/keymap-hdd1630.c
index 404d7ecf14..f6f9ab9c8c 100644
--- a/apps/keymaps/keymap-hdd1630.c
+++ b/apps/keymaps/keymap-hdd1630.c
@@ -286,66 +286,116 @@ static const struct button_mapping button_context_radio[] = {
286 286
287#ifdef USB_ENABLE_HID 287#ifdef USB_ENABLE_HID
288static const struct button_mapping button_context_usb_hid[] = { 288static const struct button_mapping button_context_usb_hid[] = {
289 { ACTION_USB_HID_INC, BUTTON_VOL_UP, BUTTON_NONE }, 289 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
290 { ACTION_USB_HID_INC, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 290 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
291 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
292 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
293 { ACTION_USB_HID_START, BUTTON_UP|BUTTON_REL, BUTTON_UP },
294 { ACTION_USB_HID_START_LONG, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
295 { ACTION_USB_HID_QUIT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
296 { ACTION_USB_HID_QUIT_LONG, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
297 { ACTION_USB_HID_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
298 { ACTION_USB_HID_LEFT_LONG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
299 { ACTION_USB_HID_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
300 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
301 { ACTION_USB_HID_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
302 { ACTION_USB_HID_SELECT_LONG, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
303 { ACTION_USB_HID_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
304 { ACTION_USB_HID_MENU_LONG, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
305 { ACTION_USB_HID_MODE, BUTTON_VIEW|BUTTON_REL, BUTTON_VIEW },
306 { ACTION_USB_HID_MODE_LONG, BUTTON_VIEW|BUTTON_REPEAT, BUTTON_VIEW },
307 291
308 LAST_ITEM_IN_LIST 292 LAST_ITEM_IN_LIST
309}; /* button_context_usb_hid */ 293}; /* button_context_usb_hid */
310 294
295static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
296 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
297 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
298 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP, BUTTON_NONE },
299 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
300 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
301 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
302 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
303 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_PLAYLIST|BUTTON_REL, BUTTON_PLAYLIST },
304 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
305 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
306
307 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
308}; /* button_context_usb_hid_mode_multimedia */
309
310static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
311 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
312 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_VIEW|BUTTON_REL, BUTTON_VIEW },
313 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
314 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_VIEW|BUTTON_REPEAT, BUTTON_VIEW },
315 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
316 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
317 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
318 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
319 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_PLAYLIST|BUTTON_REL, BUTTON_PLAYLIST },
320 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_PLAYLIST|BUTTON_REPEAT, BUTTON_PLAYLIST },
321 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_UP|BUTTON_REL, BUTTON_VOL_UP },
322 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_VOL_UP },
323 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_VOL_DOWN },
324 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_VOL_DOWN },
325 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
326 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
327
328 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
329}; /* button_context_usb_hid_mode_presentation */
330
331static const struct button_mapping button_context_usb_hid_mode_browser[] = {
332 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_UP, BUTTON_NONE },
333 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
334 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_DOWN, BUTTON_NONE },
335 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
336 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_VOL_UP|BUTTON_REL, BUTTON_VOL_UP },
337 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_VOL_DOWN },
338 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_VOL_UP },
339 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_VOL_DOWN },
340 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
341 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
342 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
343 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_PLAYLIST|BUTTON_REPEAT, BUTTON_PLAYLIST },
344 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
345 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
346 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_VIEW|BUTTON_REL, BUTTON_VIEW },
347
348 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
349}; /* button_context_usb_hid_mode_browser */
350
311#ifdef HAVE_USB_HID_MOUSE 351#ifdef HAVE_USB_HID_MOUSE
312static const struct button_mapping button_context_usb_hid_mouse[] = { 352static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
313 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE }, 353 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE },
314 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 354 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
315 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE }, 355 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE },
316 { ACTION_USB_HID_MOUSE_DOWN_REP, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 356 { ACTION_USB_HID_MOUSE_DOWN_REP, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
317 { ACTION_USB_HID_MOUSE_LEFT, BUTTON_LEFT, BUTTON_NONE }, 357 { ACTION_USB_HID_MOUSE_LEFT, BUTTON_LEFT, BUTTON_NONE },
318 { ACTION_USB_HID_MOUSE_LEFT_REP, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 358 { ACTION_USB_HID_MOUSE_LEFT_REP, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
319 { ACTION_USB_HID_MOUSE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 359 { ACTION_USB_HID_MOUSE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
320 { ACTION_USB_HID_MOUSE_RIGHT_REP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 360 { ACTION_USB_HID_MOUSE_RIGHT_REP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
321 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_SELECT, BUTTON_NONE }, 361 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_SELECT, BUTTON_NONE },
322 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE }, 362 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
323 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_SELECT|BUTTON_UP, BUTTON_NONE }, 363 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_SELECT|BUTTON_UP, BUTTON_NONE },
324 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_SELECT|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 364 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_SELECT|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
325 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE }, 365 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE },
326 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_SELECT|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 366 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_SELECT|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
327 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_SELECT|BUTTON_LEFT, BUTTON_NONE }, 367 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_SELECT|BUTTON_LEFT, BUTTON_NONE },
328 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_SELECT|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 368 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_SELECT|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
329 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_SELECT|BUTTON_RIGHT, BUTTON_NONE }, 369 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_SELECT|BUTTON_RIGHT, BUTTON_NONE },
330 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_SELECT|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 370 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_SELECT|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
331 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT, BUTTON_POWER, BUTTON_NONE }, 371 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_PLAYLIST, BUTTON_NONE },
332 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT_REL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE }, 372 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_PLAYLIST|BUTTON_REL, BUTTON_NONE },
333 { ACTION_USB_HID_MOUSE_RDRAG_UP, BUTTON_POWER|BUTTON_UP, BUTTON_NONE }, 373 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_PLAYLIST|BUTTON_UP, BUTTON_NONE },
334 { ACTION_USB_HID_MOUSE_RDRAG_UP_REP, BUTTON_POWER|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 374 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_PLAYLIST|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
335 { ACTION_USB_HID_MOUSE_RDRAG_DOWN, BUTTON_POWER|BUTTON_DOWN, BUTTON_NONE }, 375 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_PLAYLIST|BUTTON_DOWN, BUTTON_NONE },
336 { ACTION_USB_HID_MOUSE_RDRAG_DOWN_REP, BUTTON_POWER|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 376 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_PLAYLIST|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
337 { ACTION_USB_HID_MOUSE_RDRAG_LEFT, BUTTON_POWER|BUTTON_LEFT, BUTTON_NONE }, 377 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_PLAYLIST|BUTTON_LEFT, BUTTON_NONE },
338 { ACTION_USB_HID_MOUSE_RDRAG_LEFT_REP, BUTTON_POWER|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 378 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_PLAYLIST|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
339 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT, BUTTON_POWER|BUTTON_RIGHT, BUTTON_NONE }, 379 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_PLAYLIST|BUTTON_RIGHT, BUTTON_NONE },
340 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT_REP, BUTTON_POWER|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 380 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_PLAYLIST|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
341 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_VOL_UP, BUTTON_NONE }, 381 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT, BUTTON_VIEW, BUTTON_NONE },
342 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 382 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT_REL, BUTTON_VIEW|BUTTON_REL, BUTTON_NONE },
343 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, 383 { ACTION_USB_HID_MOUSE_RDRAG_UP, BUTTON_VIEW|BUTTON_UP, BUTTON_NONE },
344 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 384 { ACTION_USB_HID_MOUSE_RDRAG_UP_REP, BUTTON_VIEW|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
385 { ACTION_USB_HID_MOUSE_RDRAG_DOWN, BUTTON_VIEW|BUTTON_DOWN, BUTTON_NONE },
386 { ACTION_USB_HID_MOUSE_RDRAG_DOWN_REP, BUTTON_VIEW|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
387 { ACTION_USB_HID_MOUSE_RDRAG_LEFT, BUTTON_VIEW|BUTTON_LEFT, BUTTON_NONE },
388 { ACTION_USB_HID_MOUSE_RDRAG_LEFT_REP, BUTTON_VIEW|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
389 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT, BUTTON_VIEW|BUTTON_RIGHT, BUTTON_NONE },
390 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT_REP, BUTTON_VIEW|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
391 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_VOL_UP, BUTTON_NONE },
392 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
393 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
394 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
345 395
346 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 396 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
347 397
348}; /* button_context_usb_hid_mouse */ 398}; /* button_context_usb_hid_mode_mouse */
349#endif 399#endif
350#endif 400#endif
351 401
@@ -399,9 +449,15 @@ const struct button_mapping* get_context_mapping(int context)
399#ifdef USB_ENABLE_HID 449#ifdef USB_ENABLE_HID
400 case CONTEXT_USB_HID: 450 case CONTEXT_USB_HID:
401 return button_context_usb_hid; 451 return button_context_usb_hid;
452 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
453 return button_context_usb_hid_mode_multimedia;
454 case CONTEXT_USB_HID_MODE_PRESENTATION:
455 return button_context_usb_hid_mode_presentation;
456 case CONTEXT_USB_HID_MODE_BROWSER:
457 return button_context_usb_hid_mode_browser;
402#ifdef HAVE_USB_HID_MOUSE 458#ifdef HAVE_USB_HID_MOUSE
403 case CONTEXT_USB_HID_MOUSE: 459 case CONTEXT_USB_HID_MODE_MOUSE:
404 return button_context_usb_hid_mouse; 460 return button_context_usb_hid_mode_mouse;
405#endif 461#endif
406#endif 462#endif
407 } 463 }
diff --git a/apps/keymaps/keymap-ipod.c b/apps/keymaps/keymap-ipod.c
index d0e84ef2dc..1a8f7a25ff 100644
--- a/apps/keymaps/keymap-ipod.c
+++ b/apps/keymaps/keymap-ipod.c
@@ -195,30 +195,70 @@ const struct button_mapping button_context_recscreen[] = {
195 195
196#ifdef USB_ENABLE_HID 196#ifdef USB_ENABLE_HID
197static const struct button_mapping button_context_usb_hid[] = { 197static const struct button_mapping button_context_usb_hid[] = {
198 { ACTION_USB_HID_INC, BUTTON_SCROLL_FWD, BUTTON_NONE }, 198 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_SELECT|BUTTON_RIGHT|BUTTON_REL, BUTTON_SELECT|BUTTON_RIGHT },
199 { ACTION_USB_HID_INC, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE }, 199 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_SELECT|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_SELECT|BUTTON_RIGHT },
200 { ACTION_USB_HID_DEC, BUTTON_SCROLL_BACK, BUTTON_NONE }, 200 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_SELECT|BUTTON_LEFT|BUTTON_REL, BUTTON_SELECT|BUTTON_LEFT },
201 { ACTION_USB_HID_DEC, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE }, 201 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_SELECT|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_SELECT|BUTTON_LEFT },
202 { ACTION_USB_HID_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
203 { ACTION_USB_HID_QUIT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
204 { ACTION_USB_HID_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
205 { ACTION_USB_HID_LEFT_LONG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
206 { ACTION_USB_HID_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
207 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
208 { ACTION_USB_HID_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
209 { ACTION_USB_HID_SELECT_LONG, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
210 { ACTION_USB_HID_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
211 { ACTION_USB_HID_MENU_LONG, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
212 { ACTION_USB_HID_MODE, BUTTON_SELECT|BUTTON_RIGHT|BUTTON_REL, BUTTON_SELECT|BUTTON_RIGHT },
213 { ACTION_USB_HID_MODE, BUTTON_SELECT|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_SELECT|BUTTON_RIGHT },
214 { ACTION_USB_HID_MODE_LONG, BUTTON_SELECT|BUTTON_LEFT|BUTTON_REL, BUTTON_SELECT|BUTTON_LEFT },
215 { ACTION_USB_HID_MODE_LONG, BUTTON_SELECT|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_SELECT|BUTTON_LEFT },
216 202
217 LAST_ITEM_IN_LIST 203 LAST_ITEM_IN_LIST
218}; /* button_context_usb_hid */ 204}; /* button_context_usb_hid */
219 205
206static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
207 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_SCROLL_BACK, BUTTON_NONE },
208 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
209 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_SCROLL_FWD, BUTTON_NONE },
210 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
211 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
212 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
213 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
214 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
215 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
216 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
217
218 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
219}; /* button_context_usb_hid_mode_multimedia */
220
221static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
222 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
223 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
224 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
225 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
226 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
227 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
228 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
229 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
230 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_SCROLL_BACK, BUTTON_NONE },
231 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
232 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_SCROLL_FWD, BUTTON_NONE },
233 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
234 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
235 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
236
237 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
238}; /* button_context_usb_hid_mode_presentation */
239
240static const struct button_mapping button_context_usb_hid_mode_browser[] = {
241 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_SCROLL_BACK, BUTTON_NONE },
242 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_SCROLL_BACK|BUTTON_REPEAT, BUTTON_NONE },
243 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_SCROLL_FWD, BUTTON_NONE },
244 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
245 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
246 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
247 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
248 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
249 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_PLAY|BUTTON_MENU|BUTTON_REPEAT, BUTTON_PLAY|BUTTON_MENU },
250 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
251 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
252 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_SELECT|BUTTON_MENU|BUTTON_REPEAT, BUTTON_SELECT|BUTTON_MENU },
253 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
254 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
255 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_SELECT|BUTTON_PLAY|BUTTON_REPEAT, BUTTON_SELECT|BUTTON_PLAY },
256
257 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
258}; /* button_context_usb_hid_mode_browser */
259
220#ifdef HAVE_USB_HID_MOUSE 260#ifdef HAVE_USB_HID_MOUSE
221static const struct button_mapping button_context_usb_hid_mouse[] = { 261static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
222 { ACTION_USB_HID_MOUSE_UP, BUTTON_MENU, BUTTON_NONE }, 262 { ACTION_USB_HID_MOUSE_UP, BUTTON_MENU, BUTTON_NONE },
223 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE }, 263 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
224 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_PLAY, BUTTON_NONE }, 264 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_PLAY, BUTTON_NONE },
@@ -235,7 +275,7 @@ static const struct button_mapping button_context_usb_hid_mouse[] = {
235 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE }, 275 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE },
236 276
237 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 277 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
238}; /* button_context_usb_hid_mouse */ 278}; /* button_context_usb_hid_mode_mouse */
239#endif 279#endif
240#endif 280#endif
241 281
@@ -271,54 +311,6 @@ static const struct button_mapping remote_button_context_wps[] = {
271 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 311 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
272}; /* remote_button_context_wps */ 312}; /* remote_button_context_wps */
273 313
274#ifdef USB_ENABLE_HID
275static const struct button_mapping remote_button_context_usb_hid[] = {
276 { ACTION_USB_HID_INC, BUTTON_RC_VOL_UP, BUTTON_NONE },
277 { ACTION_USB_HID_INC, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
278 { ACTION_USB_HID_DEC, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
279 { ACTION_USB_HID_DEC, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
280 { ACTION_USB_HID_START, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
281 { ACTION_USB_HID_QUIT, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
282 { ACTION_USB_HID_LEFT, BUTTON_RC_LEFT|BUTTON_REL, BUTTON_RC_LEFT },
283 { ACTION_USB_HID_LEFT_LONG, BUTTON_RC_LEFT|BUTTON_REPEAT, BUTTON_RC_LEFT },
284 { ACTION_USB_HID_RIGHT, BUTTON_RC_RIGHT|BUTTON_REL, BUTTON_RC_RIGHT },
285 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RC_RIGHT|BUTTON_REPEAT, BUTTON_RC_RIGHT },
286
287 LAST_ITEM_IN_LIST
288}; /* remote_button_context_usb_hid */
289
290#if 0 /* Pending P#10623: Improved accessory support and detection for Ipod */
291#ifdef HAVE_USB_HID_MOUSE
292static const struct button_mapping remote_button_context_usb_hid_mouse[] = {
293 { ACTION_USB_HID_MOUSE_UP, BUTTON_RC_MENU, BUTTON_NONE },
294 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_NONE },
295 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_RC_PLAY, BUTTON_NONE },
296 { ACTION_USB_HID_MOUSE_DOWN_REP, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_NONE },
297 { ACTION_USB_HID_MOUSE_LEFT, BUTTON_RC_LEFT, BUTTON_NONE },
298 { ACTION_USB_HID_MOUSE_LEFT_REP, BUTTON_RC_LEFT|BUTTON_REPEAT, BUTTON_NONE },
299 { ACTION_USB_HID_MOUSE_RIGHT, BUTTON_RC_RIGHT, BUTTON_NONE },
300 { ACTION_USB_HID_MOUSE_RIGHT_REP, BUTTON_RC_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
301 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_RC_SELECT, BUTTON_NONE },
302 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_RC_SELECT|BUTTON_REL, BUTTON_NONE },
303 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_RC_SELECT|BUTTON_RC_MENU, BUTTON_NONE },
304 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_RC_SELECT|BUTTON_RC_MENU|BUTTON_REPEAT, BUTTON_NONE },
305 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_RC_SELECT|BUTTON_RC_PLAY, BUTTON_NONE },
306 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_RC_SELECT|BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_NONE },
307 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_RC_SELECT|BUTTON_RC_LEFT, BUTTON_NONE },
308 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_RC_SELECT|BUTTON_RC_LEFT|BUTTON_REPEAT, BUTTON_NONE },
309 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_RC_SELECT|BUTTON_RC_RIGHT, BUTTON_NONE },
310 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_RC_SELECT|BUTTON_RC_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
311 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_RC_VOL_UP, BUTTON_NONE },
312 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
313 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
314 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
315
316 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
317}; /* remote_button_context_usb_hid_mouse */
318#endif
319#endif /* if 0 */
320#endif
321
322static const struct button_mapping* get_context_mapping_remote( int context ) 314static const struct button_mapping* get_context_mapping_remote( int context )
323{ 315{
324 context ^= CONTEXT_REMOTE; 316 context ^= CONTEXT_REMOTE;
@@ -327,16 +319,6 @@ static const struct button_mapping* get_context_mapping_remote( int context )
327 { 319 {
328 case CONTEXT_WPS: 320 case CONTEXT_WPS:
329 return remote_button_context_wps; 321 return remote_button_context_wps;
330#ifdef USB_ENABLE_HID
331 case CONTEXT_USB_HID:
332 return remote_button_context_usb_hid;
333#if 0 /* Pending P#10623: Improved accessory support and detection for Ipod */
334#ifdef HAVE_USB_HID_MOUSE
335 case CONTEXT_USB_HID_MOUSE:
336 return remote_button_context_usb_hid_mouse;
337#endif
338#endif /* If 0 */
339#endif
340 default: 322 default:
341 return remote_button_context_standard; 323 return remote_button_context_standard;
342 } 324 }
@@ -392,9 +374,15 @@ const struct button_mapping* get_context_mapping(int context)
392#ifdef USB_ENABLE_HID 374#ifdef USB_ENABLE_HID
393 case CONTEXT_USB_HID: 375 case CONTEXT_USB_HID:
394 return button_context_usb_hid; 376 return button_context_usb_hid;
377 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
378 return button_context_usb_hid_mode_multimedia;
379 case CONTEXT_USB_HID_MODE_PRESENTATION:
380 return button_context_usb_hid_mode_presentation;
381 case CONTEXT_USB_HID_MODE_BROWSER:
382 return button_context_usb_hid_mode_browser;
395#ifdef HAVE_USB_HID_MOUSE 383#ifdef HAVE_USB_HID_MOUSE
396 case CONTEXT_USB_HID_MOUSE: 384 case CONTEXT_USB_HID_MODE_MOUSE:
397 return button_context_usb_hid_mouse; 385 return button_context_usb_hid_mode_mouse;
398#endif 386#endif
399#endif 387#endif
400 default: 388 default:
diff --git a/apps/keymaps/keymap-mr100.c b/apps/keymaps/keymap-mr100.c
index 79a12428f7..9878b6c330 100644
--- a/apps/keymaps/keymap-mr100.c
+++ b/apps/keymaps/keymap-mr100.c
@@ -317,91 +317,196 @@ static const struct button_mapping remote_button_context_tree[] = {
317 317
318#ifdef USB_ENABLE_HID 318#ifdef USB_ENABLE_HID
319static const struct button_mapping button_context_usb_hid[] = { 319static const struct button_mapping button_context_usb_hid[] = {
320 { ACTION_USB_HID_INC, BUTTON_UP, BUTTON_NONE }, 320 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
321 { ACTION_USB_HID_INC, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 321 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
322 { ACTION_USB_HID_DEC, BUTTON_DOWN, BUTTON_NONE },
323 { ACTION_USB_HID_DEC, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
324 { ACTION_USB_HID_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
325 { ACTION_USB_HID_START_LONG, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
326 { ACTION_USB_HID_QUIT, BUTTON_DISPLAY|BUTTON_REL, BUTTON_DISPLAY },
327 { ACTION_USB_HID_QUIT_LONG, BUTTON_DISPLAY|BUTTON_REPEAT, BUTTON_DISPLAY },
328 { ACTION_USB_HID_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
329 { ACTION_USB_HID_LEFT_LONG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
330 { ACTION_USB_HID_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
331 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
332 { ACTION_USB_HID_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
333 { ACTION_USB_HID_SELECT_LONG, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
334 { ACTION_USB_HID_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
335 { ACTION_USB_HID_MENU_LONG, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
336 { ACTION_USB_HID_MODE, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
337 { ACTION_USB_HID_MODE_LONG, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
338 322
339 LAST_ITEM_IN_LIST 323 LAST_ITEM_IN_LIST
340}; /* button_context_usb_hid */ 324}; /* button_context_usb_hid */
341 325
342static const struct button_mapping button_context_usb_hid_mouse[] = { 326static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
343 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE }, 327 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_DOWN, BUTTON_NONE },
344 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 328 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
345 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE }, 329 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_UP, BUTTON_NONE },
346 { ACTION_USB_HID_MOUSE_DOWN_REP, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 330 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
347 { ACTION_USB_HID_MOUSE_LEFT, BUTTON_LEFT, BUTTON_NONE }, 331 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
348 { ACTION_USB_HID_MOUSE_LEFT_REP, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, 332 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
349 { ACTION_USB_HID_MOUSE_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, 333 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_DISPLAY|BUTTON_REL, BUTTON_DISPLAY },
350 { ACTION_USB_HID_MOUSE_RIGHT_REP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, 334 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
351 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_SELECT|BUTTON_UP, BUTTON_NONE }, 335 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
352 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_MENU|BUTTON_UP, BUTTON_NONE }, 336 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
353 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_SELECT|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
354 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_MENU|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
355 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE },
356 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_MENU|BUTTON_DOWN, BUTTON_NONE },
357 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_SELECT|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
358 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_MENU|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
359 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_SELECT, BUTTON_NONE },
360 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
361 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_SELECT|BUTTON_LEFT, BUTTON_NONE },
362 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_SELECT|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
363 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_SELECT|BUTTON_RIGHT, BUTTON_NONE },
364 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_SELECT|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
365 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_MENU, BUTTON_NONE },
366 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_MENU|BUTTON_REL, BUTTON_NONE },
367 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_MENU|BUTTON_LEFT, BUTTON_NONE },
368 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_MENU|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
369 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_MENU|BUTTON_RIGHT, BUTTON_NONE },
370 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_MENU|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
371 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT, BUTTON_PLAY, BUTTON_NONE },
372 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
373 { ACTION_USB_HID_MOUSE_RDRAG_UP, BUTTON_PLAY|BUTTON_UP, BUTTON_NONE },
374 { ACTION_USB_HID_MOUSE_RDRAG_UP_REP, BUTTON_PLAY|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
375 { ACTION_USB_HID_MOUSE_RDRAG_DOWN, BUTTON_PLAY|BUTTON_DOWN, BUTTON_NONE },
376 { ACTION_USB_HID_MOUSE_RDRAG_DOWN_REP, BUTTON_PLAY|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
377 { ACTION_USB_HID_MOUSE_RDRAG_LEFT, BUTTON_PLAY|BUTTON_LEFT, BUTTON_NONE },
378 { ACTION_USB_HID_MOUSE_RDRAG_LEFT_REP, BUTTON_PLAY|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
379 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_NONE },
380 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT_REP, BUTTON_PLAY|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
381 337
382 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 338 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
383}; /* button_context_usb_hid_mouse */ 339}; /* button_context_usb_hid_mode_multimedia */
340
341static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
342 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
343 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_DISPLAY|BUTTON_REL, BUTTON_DISPLAY },
344 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
345 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
346 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
347 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
348 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
349 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
350 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
351 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_UP, BUTTON_NONE },
352 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
353 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_DOWN, BUTTON_NONE },
354 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
355 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
356 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
357
358 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
359}; /* button_context_usb_hid_mode_presentation */
360
361static const struct button_mapping button_context_usb_hid_mode_browser[] = {
362 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_UP, BUTTON_NONE },
363 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
364 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_DOWN, BUTTON_NONE },
365 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
366 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
367 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
368 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
369 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
370 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
371 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_PLAY|BUTTON_MENU|BUTTON_REPEAT, BUTTON_PLAY|BUTTON_MENU },
372 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
373 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
374 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_DISPLAY|BUTTON_REPEAT, BUTTON_DISPLAY },
375 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
376 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
377 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
378
379 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
380}; /* button_context_usb_hid_mode_browser */
381
382#ifdef HAVE_USB_HID_MOUSE
383static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
384 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE },
385 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
386 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE },
387 { ACTION_USB_HID_MOUSE_DOWN_REP, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
388 { ACTION_USB_HID_MOUSE_LEFT, BUTTON_LEFT, BUTTON_NONE },
389 { ACTION_USB_HID_MOUSE_LEFT_REP, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
390 { ACTION_USB_HID_MOUSE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
391 { ACTION_USB_HID_MOUSE_RIGHT_REP, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
392 { ACTION_USB_HID_MOUSE_BUTTON_LEFT, BUTTON_MENU, BUTTON_NONE },
393 { ACTION_USB_HID_MOUSE_BUTTON_LEFT_REL, BUTTON_MENU|BUTTON_REL, BUTTON_NONE },
394 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_MENU|BUTTON_UP, BUTTON_NONE },
395 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_MENU|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
396 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_MENU|BUTTON_DOWN, BUTTON_NONE },
397 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_MENU|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
398 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_MENU|BUTTON_LEFT, BUTTON_NONE },
399 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_MENU|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
400 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_MENU|BUTTON_RIGHT, BUTTON_NONE },
401 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_MENU|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
402 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT, BUTTON_PLAY, BUTTON_NONE },
403 { ACTION_USB_HID_MOUSE_BUTTON_RIGHT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
404 { ACTION_USB_HID_MOUSE_RDRAG_UP, BUTTON_PLAY|BUTTON_UP, BUTTON_NONE },
405 { ACTION_USB_HID_MOUSE_RDRAG_UP_REP, BUTTON_PLAY|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
406 { ACTION_USB_HID_MOUSE_RDRAG_DOWN, BUTTON_PLAY|BUTTON_DOWN, BUTTON_NONE },
407 { ACTION_USB_HID_MOUSE_RDRAG_DOWN_REP, BUTTON_PLAY|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
408 { ACTION_USB_HID_MOUSE_RDRAG_LEFT, BUTTON_PLAY|BUTTON_LEFT, BUTTON_NONE },
409 { ACTION_USB_HID_MOUSE_RDRAG_LEFT_REP, BUTTON_PLAY|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
410 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_NONE },
411 { ACTION_USB_HID_MOUSE_RDRAG_RIGHT_REP, BUTTON_PLAY|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
412 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_UP, BUTTON_NONE },
413 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
414 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_DOWN, BUTTON_NONE },
415 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
416
417 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
418}; /* button_context_usb_hid_mode_mouse */
419#endif
384 420
385static const struct button_mapping remote_button_context_usb_hid[] = { 421static const struct button_mapping remote_button_context_usb_hid[] = {
386 { ACTION_USB_HID_INC, BUTTON_RC_VOL_UP, BUTTON_NONE }, 422 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_RC_HEART|BUTTON_REL, BUTTON_RC_HEART },
387 { ACTION_USB_HID_INC, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 423 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_RC_HEART|BUTTON_REPEAT, BUTTON_RC_HEART },
388 { ACTION_USB_HID_DEC, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
389 { ACTION_USB_HID_DEC, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
390 { ACTION_USB_HID_START, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
391 { ACTION_USB_HID_START_LONG, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
392 { ACTION_USB_HID_QUIT, BUTTON_RC_DOWN|BUTTON_REL, BUTTON_RC_DOWN },
393 { ACTION_USB_HID_QUIT_LONG, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_RC_DOWN },
394 { ACTION_USB_HID_LEFT, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
395 { ACTION_USB_HID_LEFT_LONG, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW },
396 { ACTION_USB_HID_RIGHT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
397 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF },
398 { ACTION_USB_HID_SELECT, BUTTON_RC_HEART|BUTTON_REL, BUTTON_RC_HEART },
399 { ACTION_USB_HID_MENU, BUTTON_RC_HEART|BUTTON_REPEAT, BUTTON_DOWN },
400 { ACTION_USB_HID_MODE, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE },
401 { ACTION_USB_HID_MODE_LONG, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE },
402 424
403 LAST_ITEM_IN_LIST 425 LAST_ITEM_IN_LIST
404}; /* remote_button_context_usb_hid */ 426}; /* remote_button_context_usb_hid */
427
428static const struct button_mapping remote_button_context_usb_hid_mode_multimedia[] = {
429 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
430 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
431 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_RC_VOL_UP, BUTTON_NONE },
432 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
433 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE },
434 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
435 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_RC_DOWN|BUTTON_REL, BUTTON_RC_DOWN },
436 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
437 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
438 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
439
440 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
441}; /* remote_button_context_usb_hid_mode_multimedia */
442
443static const struct button_mapping remote_button_context_usb_hid_mode_presentation[] = {
444 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
445 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_RC_DOWN|BUTTON_REL, BUTTON_RC_DOWN },
446 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
447 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
448 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
449 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW },
450 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF },
451 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_RC_DOWN|BUTTON_REL, BUTTON_RC_DOWN },
452 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_RC_DOWN },
453 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_RC_VOL_UP, BUTTON_NONE },
454 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
455 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
456 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
457 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE },
458 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE },
459
460 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
461}; /* remote_button_context_usb_hid_mode_presentation */
462
463static const struct button_mapping remote_button_context_usb_hid_mode_browser[] = {
464 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_RC_VOL_UP, BUTTON_NONE },
465 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
466 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
467 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
468 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
469 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_RC_DOWN|BUTTON_REL, BUTTON_RC_DOWN },
470 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
471 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_RC_DOWN },
472 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_RC_MODE|BUTTON_REPEAT, BUTTON_RC_MODE },
473 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
474 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
475 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_RC_REW },
476 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF },
477 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_RC_MODE|BUTTON_REL, BUTTON_RC_MODE },
478
479 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
480}; /* remote_button_context_usb_hid_mode_browser */
481
482#ifdef HAVE_USB_HID_MOUSE
483static const struct button_mapping remote_button_context_usb_hid_mode_mouse[] = {
484 { ACTION_USB_HID_MOUSE_UP, BUTTON_RC_PLAY, BUTTON_NONE },
485 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_NONE },
486 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_RC_DOWN, BUTTON_NONE },
487 { ACTION_USB_HID_MOUSE_DOWN_REP, BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_NONE },
488 { ACTION_USB_HID_MOUSE_LEFT, BUTTON_RC_REW, BUTTON_NONE },
489 { ACTION_USB_HID_MOUSE_LEFT_REP, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
490 { ACTION_USB_HID_MOUSE_RIGHT, BUTTON_RC_FF, BUTTON_NONE },
491 { ACTION_USB_HID_MOUSE_RIGHT_REP, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
492 { ACTION_USB_HID_MOUSE_BUTTON_RC_REW, BUTTON_RC_MODE, BUTTON_NONE },
493 { ACTION_USB_HID_MOUSE_BUTTON_RC_REW_REL, BUTTON_RC_MODE|BUTTON_REL, BUTTON_NONE },
494 { ACTION_USB_HID_MOUSE_LDRAG_UP, BUTTON_RC_MODE|BUTTON_RC_PLAY, BUTTON_NONE },
495 { ACTION_USB_HID_MOUSE_LDRAG_UP_REP, BUTTON_RC_MODE|BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_NONE },
496 { ACTION_USB_HID_MOUSE_LDRAG_DOWN, BUTTON_RC_MODE|BUTTON_RC_DOWN, BUTTON_NONE },
497 { ACTION_USB_HID_MOUSE_LDRAG_DOWN_REP, BUTTON_RC_MODE|BUTTON_RC_DOWN|BUTTON_REPEAT, BUTTON_NONE },
498 { ACTION_USB_HID_MOUSE_LDRAG_LEFT, BUTTON_RC_MODE|BUTTON_RC_REW, BUTTON_NONE },
499 { ACTION_USB_HID_MOUSE_LDRAG_LEFT_REP, BUTTON_RC_MODE|BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
500 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT, BUTTON_RC_MODE|BUTTON_RC_FF, BUTTON_NONE },
501 { ACTION_USB_HID_MOUSE_LDRAG_RIGHT_REP, BUTTON_RC_MODE|BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
502 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_RC_VOL_UP, BUTTON_NONE },
503 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_UP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
504 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
505 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
506
507 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
508}; /* remote_button_context_usb_hid_mode_mouse */
509#endif
405#endif 510#endif
406 511
407static const struct button_mapping* get_context_mapping_remote( int context ) 512static const struct button_mapping* get_context_mapping_remote( int context )
@@ -418,6 +523,16 @@ static const struct button_mapping* get_context_mapping_remote( int context )
418#ifdef USB_ENABLE_HID 523#ifdef USB_ENABLE_HID
419 case CONTEXT_USB_HID: 524 case CONTEXT_USB_HID:
420 return remote_button_context_usb_hid; 525 return remote_button_context_usb_hid;
526 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
527 return remote_button_context_usb_hid_mode_multimedia;
528 case CONTEXT_USB_HID_MODE_PRESENTATION:
529 return remote_button_context_usb_hid_mode_presentation;
530 case CONTEXT_USB_HID_MODE_BROWSER:
531 return remote_button_context_usb_hid_mode_browser;
532#ifdef HAVE_USB_HID_MOUSE
533 case CONTEXT_USB_HID_MODE_MOUSE:
534 return remote_button_context_usb_hid_mode_mouse;
535#endif
421#endif 536#endif
422 } 537 }
423 return remote_button_context_standard; 538 return remote_button_context_standard;
@@ -472,6 +587,16 @@ const struct button_mapping* get_context_mapping(int context)
472#ifdef USB_ENABLE_HID 587#ifdef USB_ENABLE_HID
473 case CONTEXT_USB_HID: 588 case CONTEXT_USB_HID:
474 return button_context_usb_hid; 589 return button_context_usb_hid;
590 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
591 return button_context_usb_hid_mode_multimedia;
592 case CONTEXT_USB_HID_MODE_PRESENTATION:
593 return button_context_usb_hid_mode_presentation;
594 case CONTEXT_USB_HID_MODE_BROWSER:
595 return button_context_usb_hid_mode_browser;
596#ifdef HAVE_USB_HID_MOUSE
597 case CONTEXT_USB_HID_MODE_MOUSE:
598 return button_context_usb_hid_mode_mouse;
599#endif
475#endif 600#endif
476 } 601 }
477 return button_context_standard; 602 return button_context_standard;
diff --git a/apps/keymaps/keymap-ondavx747.c b/apps/keymaps/keymap-ondavx747.c
index f2d994d190..56a68e519c 100644
--- a/apps/keymaps/keymap-ondavx747.c
+++ b/apps/keymaps/keymap-ondavx747.c
@@ -169,17 +169,48 @@ static const struct button_mapping button_context_keyboard[] = {
169 169
170#ifdef USB_ENABLE_HID 170#ifdef USB_ENABLE_HID
171static const struct button_mapping button_context_usb_hid[] = { 171static const struct button_mapping button_context_usb_hid[] = {
172 { ACTION_USB_HID_INC, BUTTON_VOL_UP, BUTTON_NONE }, 172 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
173 { ACTION_USB_HID_INC, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 173 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
174 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
175 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
176 { ACTION_USB_HID_QUIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
177 { ACTION_USB_HID_SELECT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
178 { ACTION_USB_HID_MENU, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
179 { ACTION_USB_HID_MODE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
180 174
181 LAST_ITEM_IN_LIST 175 LAST_ITEM_IN_LIST
182}; /* button_context_usb_hid */ 176}; /* button_context_usb_hid */
177
178static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
179 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
180 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
181 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP, BUTTON_NONE },
182 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
183 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_VOL_DOWN|BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_VOL_DOWN|BUTTON_VOL_UP },
184 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
185 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_MENU|BUTTON_LEFT|BUTTON_REL, BUTTON_MENU|BUTTON_LEFT },
186 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_MENU|BUTTON_RIGHT|BUTTON_REL, BUTTON_MENU|BUTTON_RIGHT },
187
188 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
189}; /* button_context_usb_hid_mode_multimedia */
190
191static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
192 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
193 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
194 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_VOL_DOWN },
195 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_VOL_UP|BUTTON_REL, BUTTON_VOL_UP },
196 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_VOL_DOWN },
197 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_VOL_UP },
198 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_VOL_DOWN|BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_VOL_DOWN|BUTTON_VOL_UP },
199
200 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
201}; /* button_context_usb_hid_mode_presentation */
202
203static const struct button_mapping button_context_usb_hid_mode_browser[] = {
204 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOL_DOWN, BUTTON_NONE },
205 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
206 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOL_UP, BUTTON_NONE },
207 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
208 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_MENU|BUTTON_VOL_UP|BUTTON_REL, BUTTON_MENU|BUTTON_VOL_UP },
209 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_MENU|BUTTON_VOL_DOWN|BUTTON_REL, BUTTON_MENU|BUTTON_VOL_DOWN },
210 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
211
212 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
213}; /* button_context_usb_hid_mode_browser */
183#endif 214#endif
184 215
185const struct button_mapping* target_get_context_mapping(int context) 216const struct button_mapping* target_get_context_mapping(int context)
@@ -228,9 +259,15 @@ const struct button_mapping* target_get_context_mapping(int context)
228 return button_context_pitchscreen; 259 return button_context_pitchscreen;
229 case CONTEXT_KEYBOARD: 260 case CONTEXT_KEYBOARD:
230 return button_context_keyboard; 261 return button_context_keyboard;
231#ifdef HAVE_USBSTACK 262#ifdef USB_ENABLE_HID
232 case CONTEXT_USB_HID: 263 case CONTEXT_USB_HID:
233 return button_context_usb_hid; 264 return button_context_usb_hid;
265 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
266 return button_context_usb_hid_mode_multimedia;
267 case CONTEXT_USB_HID_MODE_PRESENTATION:
268 return button_context_usb_hid_mode_presentation;
269 case CONTEXT_USB_HID_MODE_BROWSER:
270 return button_context_usb_hid_mode_browser;
234#endif 271#endif
235 } 272 }
236 return button_context_standard; 273 return button_context_standard;
diff --git a/apps/keymaps/keymap-sa9200.c b/apps/keymaps/keymap-sa9200.c
index 1d14a67147..6df9d6c1ed 100644
--- a/apps/keymaps/keymap-sa9200.c
+++ b/apps/keymaps/keymap-sa9200.c
@@ -278,34 +278,72 @@ static const struct button_mapping button_context_keyboard[] = {
278 278
279#ifdef USB_ENABLE_HID 279#ifdef USB_ENABLE_HID
280static const struct button_mapping button_context_usb_hid[] = { 280static const struct button_mapping button_context_usb_hid[] = {
281 { ACTION_USB_HID_INC, BUTTON_UP, BUTTON_NONE }, 281 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
282 { ACTION_USB_HID_INC, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 282 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
283 { ACTION_USB_HID_INC, BUTTON_VOL_UP, BUTTON_NONE },
284 { ACTION_USB_HID_INC, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
285 { ACTION_USB_HID_DEC, BUTTON_DOWN, BUTTON_NONE },
286 { ACTION_USB_HID_DEC, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
287 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN, BUTTON_NONE },
288 { ACTION_USB_HID_DEC, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
289 { ACTION_USB_HID_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
290 { ACTION_USB_HID_START_LONG, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
291 { ACTION_USB_HID_QUIT, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
292 { ACTION_USB_HID_QUIT_LONG, BUTTON_PREV|BUTTON_REPEAT, BUTTON_PREV },
293 { ACTION_USB_HID_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
294 { ACTION_USB_HID_LEFT_LONG, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
295 { ACTION_USB_HID_RIGHT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
296 { ACTION_USB_HID_RIGHT_LONG, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
297 { ACTION_USB_HID_SELECT, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
298 { ACTION_USB_HID_SELECT_LONG, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NEXT },
299 { ACTION_USB_HID_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
300 { ACTION_USB_HID_MENU_LONG, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
301 { ACTION_USB_HID_MODE, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
302 { ACTION_USB_HID_MODE_LONG, BUTTON_POWER|BUTTON_REPEAT, BUTTON_POWER },
303 283
304 LAST_ITEM_IN_LIST 284 LAST_ITEM_IN_LIST
305}; /* button_context_usb_hid */ 285}; /* button_context_usb_hid */
306 286
287static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
288 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
289 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
290 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_DOWN, BUTTON_NONE },
291 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
292 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP, BUTTON_NONE },
293 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
294 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_UP, BUTTON_NONE },
295 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
296 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
297 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
298 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
299 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
300 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
301
302 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
303}; /* button_context_usb_hid_mode_multimedia */
304
305static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
306 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
307 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_PREV|BUTTON_REL, BUTTON_PREV },
308 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
309 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
310 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
311 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
312 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
313 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
314 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_UP, BUTTON_NONE },
315 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
316 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_DOWN, BUTTON_NONE },
317 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
318 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
319 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NEXT },
320
321 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
322}; /* button_context_usb_hid_mode_presentation */
323
324static const struct button_mapping button_context_usb_hid_mode_browser[] = {
325 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOL_UP, BUTTON_NONE },
326 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
327 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
328 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
329 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_UP, BUTTON_UP|BUTTON_REL, BUTTON_UP },
330 { ACTION_USB_HID_BROWSER_SCROLL_PAGE_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN },
331 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
332 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
333 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NEXT },
334 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_UP|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_UP|BUTTON_DOWN },
335 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
336 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
337 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_LEFT|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_LEFT|BUTTON_RIGHT },
338 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
339 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
340 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT },
341
342 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
343}; /* button_context_usb_hid_mode_browser */
344
307#ifdef HAVE_USB_HID_MOUSE 345#ifdef HAVE_USB_HID_MOUSE
308static const struct button_mapping button_context_usb_hid_mouse[] = { 346static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
309 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE }, 347 { ACTION_USB_HID_MOUSE_UP, BUTTON_UP, BUTTON_NONE },
310 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 348 { ACTION_USB_HID_MOUSE_UP_REP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
311 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE }, 349 { ACTION_USB_HID_MOUSE_DOWN, BUTTON_DOWN, BUTTON_NONE },
@@ -340,7 +378,7 @@ static const struct button_mapping button_context_usb_hid_mouse[] = {
340 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 378 { ACTION_USB_HID_MOUSE_WHEEL_SCROLL_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
341 379
342 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID) 380 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
343}; /* button_context_usb_hid_mouse */ 381}; /* button_context_usb_hid_mode_mouse */
344#endif 382#endif
345#endif 383#endif
346 384
@@ -390,13 +428,18 @@ const struct button_mapping* get_context_mapping(int context)
390 428
391 case CONTEXT_KEYBOARD: 429 case CONTEXT_KEYBOARD:
392 return button_context_keyboard; 430 return button_context_keyboard;
393
394#ifdef USB_ENABLE_HID 431#ifdef USB_ENABLE_HID
395 case CONTEXT_USB_HID: 432 case CONTEXT_USB_HID:
396 return button_context_usb_hid; 433 return button_context_usb_hid;
434 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
435 return button_context_usb_hid_mode_multimedia;
436 case CONTEXT_USB_HID_MODE_PRESENTATION:
437 return button_context_usb_hid_mode_presentation;
438 case CONTEXT_USB_HID_MODE_BROWSER:
439 return button_context_usb_hid_mode_browser;
397#ifdef HAVE_USB_HID_MOUSE 440#ifdef HAVE_USB_HID_MOUSE
398 case CONTEXT_USB_HID_MOUSE: 441 case CONTEXT_USB_HID_MODE_MOUSE:
399 return button_context_usb_hid_mouse; 442 return button_context_usb_hid_mode_mouse;
400#endif 443#endif
401#endif 444#endif
402 } 445 }
diff --git a/apps/keymaps/keymap-touchscreen.c b/apps/keymaps/keymap-touchscreen.c
index 499eb2b562..74673ccb20 100644
--- a/apps/keymaps/keymap-touchscreen.c
+++ b/apps/keymaps/keymap-touchscreen.c
@@ -253,27 +253,63 @@ static const struct button_mapping button_context_radio[] = {
253 253
254#ifdef USB_ENABLE_HID 254#ifdef USB_ENABLE_HID
255static const struct button_mapping button_context_usb_hid[] = { 255static const struct button_mapping button_context_usb_hid[] = {
256 { ACTION_USB_HID_INC, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, 256 { ACTION_USB_HID_MODE_SWITCH_NEXT, BUTTON_TOPLEFT|BUTTON_REL, BUTTON_TOPLEFT },
257 { ACTION_USB_HID_INC, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT }, 257 { ACTION_USB_HID_MODE_SWITCH_PREV, BUTTON_TOPLEFT|BUTTON_REPEAT, BUTTON_TOPLEFT },
258 { ACTION_USB_HID_DEC, BUTTON_BOTTOMMIDDLE|BUTTON_REL, BUTTON_BOTTOMMIDDLE }, 258
259 { ACTION_USB_HID_DEC, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_BOTTOMMIDDLE }, 259 LAST_ITEM_IN_LIST
260 { ACTION_USB_HID_START, BUTTON_TOPMIDDLE|BUTTON_REL, BUTTON_TOPMIDDLE },
261 { ACTION_USB_HID_START_LONG, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_TOPMIDDLE },
262 { ACTION_USB_HID_QUIT, BUTTON_BOTTOMLEFT|BUTTON_REL, BUTTON_BOTTOMLEFT },
263 { ACTION_USB_HID_QUIT_LONG, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_BOTTOMLEFT },
264 { ACTION_USB_HID_LEFT, BUTTON_MIDLEFT|BUTTON_REL, BUTTON_MIDLEFT },
265 { ACTION_USB_HID_LEFT_LONG, BUTTON_MIDLEFT|BUTTON_REPEAT, BUTTON_MIDLEFT },
266 { ACTION_USB_HID_RIGHT, BUTTON_MIDRIGHT|BUTTON_REL, BUTTON_MIDRIGHT },
267 { ACTION_USB_HID_RIGHT_LONG, BUTTON_MIDRIGHT|BUTTON_REPEAT, BUTTON_MIDRIGHT },
268 { ACTION_USB_HID_SELECT, BUTTON_CENTER|BUTTON_REL, BUTTON_CENTER },
269 { ACTION_USB_HID_SELECT_LONG, BUTTON_CENTER|BUTTON_REPEAT, BUTTON_CENTER },
270 { ACTION_USB_HID_MENU, BUTTON_TOPRIGHT|BUTTON_REL, BUTTON_TOPRIGHT },
271 { ACTION_USB_HID_MENU_LONG, BUTTON_TOPRIGHT|BUTTON_REPEAT, BUTTON_TOPRIGHT },
272 { ACTION_USB_HID_MODE, BUTTON_TOPLEFT|BUTTON_REL, BUTTON_TOPLEFT },
273 { ACTION_USB_HID_MODE_LONG, BUTTON_TOPLEFT|BUTTON_REPEAT, BUTTON_TOPLEFT },
274
275 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM2|CONTEXT_USB_HID)
276}; /* button_context_usb_hid */ 260}; /* button_context_usb_hid */
261
262static const struct button_mapping button_context_usb_hid_mode_multimedia[] = {
263 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_BOTTOMMIDDLE, BUTTON_NONE },
264 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_NONE },
265 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_TOPMIDDLE, BUTTON_NONE },
266 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_NONE },
267 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, BUTTON_CENTER|BUTTON_REL, BUTTON_CENTER },
268 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, BUTTON_TOPRIGHT|BUTTON_REL, BUTTON_TOPRIGHT },
269 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, BUTTON_TOPRIGHT|BUTTON_REPEAT, BUTTON_TOPRIGHT },
270 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, BUTTON_BOTTOMLEFT|BUTTON_REL, BUTTON_BOTTOMLEFT },
271 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT },
272
273 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
274}; /* button_context_usb_hid_mode_multimedia */
275
276static const struct button_mapping button_context_usb_hid_mode_presentation[] = {
277 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, BUTTON_TOPRIGHT|BUTTON_REL, BUTTON_TOPRIGHT },
278 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, BUTTON_TOPRIGHT|BUTTON_REPEAT, BUTTON_TOPRIGHT },
279 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, BUTTON_MIDLEFT|BUTTON_REL, BUTTON_MIDLEFT },
280 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, BUTTON_MIDRIGHT|BUTTON_REL, BUTTON_MIDRIGHT },
281 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, BUTTON_MIDLEFT|BUTTON_REPEAT, BUTTON_MIDLEFT },
282 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, BUTTON_MIDRIGHT|BUTTON_REPEAT, BUTTON_MIDRIGHT },
283 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT },
284 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT },
285 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_TOPMIDDLE|BUTTON_REL, BUTTON_TOPMIDDLE },
286 { ACTION_USB_HID_PRESENTATION_LINK_PREV, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_TOPMIDDLE },
287 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_BOTTOMMIDDLE|BUTTON_REL, BUTTON_BOTTOMMIDDLE },
288 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_BOTTOMMIDDLE },
289 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, BUTTON_CENTER|BUTTON_REL, BUTTON_CENTER },
290 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, BUTTON_CENTER|BUTTON_REPEAT, BUTTON_CENTER },
291
292 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
293}; /* button_context_usb_hid_mode_presentation */
294
295static const struct button_mapping button_context_usb_hid_mode_browser[] = {
296 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_TOPMIDDLE, BUTTON_NONE },
297 { ACTION_USB_HID_BROWSER_SCROLL_UP, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_NONE },
298 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_BOTTOMMIDDLE, BUTTON_NONE },
299 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_NONE },
300 { ACTION_USB_HID_BROWSER_ZOOM_IN, BUTTON_TOPRIGHT|BUTTON_REPEAT, BUTTON_TOPRIGHT },
301 { ACTION_USB_HID_BROWSER_ZOOM_OUT, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT },
302 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_CENTER|BUTTON_REPEAT, BUTTON_CENTER },
303 { ACTION_USB_HID_BROWSER_ZOOM_RESET, BUTTON_TOPRIGHT|BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_TOPRIGHT|BUTTON_BOTTOMRIGHT },
304 { ACTION_USB_HID_BROWSER_TAB_PREV, BUTTON_MIDLEFT|BUTTON_REL, BUTTON_MIDLEFT },
305 { ACTION_USB_HID_BROWSER_TAB_NEXT, BUTTON_MIDRIGHT|BUTTON_REL, BUTTON_MIDRIGHT },
306 { ACTION_USB_HID_BROWSER_TAB_CLOSE, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_BOTTOMLEFT },
307 { ACTION_USB_HID_BROWSER_HISTORY_BACK, BUTTON_MIDLEFT|BUTTON_REPEAT, BUTTON_MIDLEFT },
308 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, BUTTON_MIDRIGHT|BUTTON_REPEAT, BUTTON_MIDRIGHT },
309 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, BUTTON_CENTER|BUTTON_REL, BUTTON_CENTER },
310
311 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_USB_HID)
312}; /* button_context_usb_hid_mode_browser */
277#endif 313#endif
278 314
279const struct button_mapping* get_context_mapping(int context) 315const struct button_mapping* get_context_mapping(int context)
@@ -331,7 +367,14 @@ const struct button_mapping* get_context_mapping(int context)
331#ifdef USB_ENABLE_HID 367#ifdef USB_ENABLE_HID
332 case CONTEXT_USB_HID: 368 case CONTEXT_USB_HID:
333 return button_context_usb_hid; 369 return button_context_usb_hid;
370 case CONTEXT_USB_HID_MODE_MULTIMEDIA:
371 return button_context_usb_hid_mode_multimedia;
372 case CONTEXT_USB_HID_MODE_PRESENTATION:
373 return button_context_usb_hid_mode_presentation;
374 case CONTEXT_USB_HID_MODE_BROWSER:
375 return button_context_usb_hid_mode_browser;
334#endif 376#endif
377
335 } 378 }
336 return button_context_standard; 379 return button_context_standard;
337} 380}
diff --git a/apps/screens.c b/apps/screens.c
index 3917f31a96..eb34103a4a 100644
--- a/apps/screens.c
+++ b/apps/screens.c
@@ -115,8 +115,8 @@ static int handle_usb_events(void)
115 button = get_hid_usb_action(); 115 button = get_hid_usb_action();
116 116
117 /* On mode change, we need to refresh the screen */ 117 /* On mode change, we need to refresh the screen */
118 if (button == ACTION_USB_HID_MODE || 118 if (button == ACTION_USB_HID_MODE_SWITCH_NEXT ||
119 button == ACTION_USB_HID_MODE_LONG) 119 button == ACTION_USB_HID_MODE_SWITCH_PREV)
120 { 120 {
121 break; 121 break;
122 } 122 }
diff --git a/apps/usb_keymaps.c b/apps/usb_keymaps.c
index 41387a1005..f787de692f 100644
--- a/apps/usb_keymaps.c
+++ b/apps/usb_keymaps.c
@@ -45,94 +45,66 @@ typedef struct
45typedef struct 45typedef struct
46{ 46{
47 int lang_name; 47 int lang_name;
48 int context;
48 usage_page_t usage_page; 49 usage_page_t usage_page;
49 mapping_t mapping[]; 50 mapping_t mapping[];
50} hid_key_mapping_t; 51} hid_key_mapping_t;
51 52
52static const hid_key_mapping_t hid_key_mapping_multimedia = { 53static const hid_key_mapping_t hid_key_mapping_multimedia = {
53 LANG_MULTIMEDIA_MODE, 54 LANG_MULTIMEDIA_MODE,
55 CONTEXT_USB_HID_MODE_MULTIMEDIA,
54 HID_USAGE_PAGE_CONSUMER, 56 HID_USAGE_PAGE_CONSUMER,
55 { 57 {
56 /* Volume up */ 58 { ACTION_USB_HID_MULTIMEDIA_VOLUME_UP, HID_CONSUMER_USAGE_VOLUME_INCREMENT },
57 { ACTION_USB_HID_DEC, HID_CONSUMER_USAGE_VOLUME_DECREMENT }, 59 { ACTION_USB_HID_MULTIMEDIA_VOLUME_DOWN, HID_CONSUMER_USAGE_VOLUME_DECREMENT },
58 /* Volume down */ 60 { ACTION_USB_HID_MULTIMEDIA_VOLUME_MUTE, HID_CONSUMER_USAGE_MUTE },
59 { ACTION_USB_HID_INC, HID_CONSUMER_USAGE_VOLUME_INCREMENT }, 61 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_PLAY_PAUSE, HID_CONSUMER_USAGE_PLAY_PAUSE },
60 /* Volume mute */ 62 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_STOP, HID_CONSUMER_USAGE_STOP },
61 { ACTION_USB_HID_SELECT, HID_CONSUMER_USAGE_MUTE }, 63 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_PREV, HID_CONSUMER_USAGE_SCAN_PREVIOUS_TRACK },
62 /* Playback play / pause */ 64 { ACTION_USB_HID_MULTIMEDIA_PLAYBACK_TRACK_NEXT, HID_CONSUMER_USAGE_SCAN_NEXT_TRACK },
63 { ACTION_USB_HID_START, HID_CONSUMER_USAGE_PLAY_PAUSE },
64 /* Playback stop */
65 { ACTION_USB_HID_QUIT, HID_CONSUMER_USAGE_STOP },
66 /* Scan previous track */
67 { ACTION_USB_HID_LEFT, HID_CONSUMER_USAGE_SCAN_PREVIOUS_TRACK },
68 /* Scan next track */
69 { ACTION_USB_HID_RIGHT, HID_CONSUMER_USAGE_SCAN_NEXT_TRACK },
70 { 0, 0 }, 65 { 0, 0 },
71 } 66 }
72}; 67};
73 68
74static const hid_key_mapping_t hid_key_mapping_presentation = { 69static const hid_key_mapping_t hid_key_mapping_presentation = {
75 LANG_PRESENTATION_MODE, 70 LANG_PRESENTATION_MODE,
71 CONTEXT_USB_HID_MODE_PRESENTATION,
76 HID_USAGE_PAGE_KEYBOARD_KEYPAD, 72 HID_USAGE_PAGE_KEYBOARD_KEYPAD,
77 { 73 {
78 /* Slideshow start */ 74 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_START, HID_KEYBOARD_F5 },
79 { ACTION_USB_HID_START, HID_KEYBOARD_F5 }, 75 { ACTION_USB_HID_PRESENTATION_SLIDESHOW_LEAVE, HID_KEYBOARD_ESCAPE },
80 /* Slideshow leave */ 76 { ACTION_USB_HID_PRESENTATION_SLIDE_PREV, HID_KEYBOARD_P },
81 { ACTION_USB_HID_QUIT, HID_KEYBOARD_ESCAPE }, 77 { ACTION_USB_HID_PRESENTATION_SLIDE_NEXT, HID_KEYBOARD_N },
82 /* Slide previous */ 78 { ACTION_USB_HID_PRESENTATION_SLIDE_FIRST, HID_KEYBOARD_HOME },
83 { ACTION_USB_HID_LEFT, HID_KEYBOARD_P }, 79 { ACTION_USB_HID_PRESENTATION_SLIDE_LAST, HID_KEYBOARD_END },
84 /* Slide next */ 80 { ACTION_USB_HID_PRESENTATION_SCREEN_BLACK, HID_KEYBOARD_DOT },
85 { ACTION_USB_HID_RIGHT, HID_KEYBOARD_N }, 81 { ACTION_USB_HID_PRESENTATION_SCREEN_WHITE, HID_KEYBOARD_COMMA },
86 /* Slide first */ 82 { ACTION_USB_HID_PRESENTATION_LINK_PREV, SHIFT(HID_KEYBOARD_TAB) },
87 { ACTION_USB_HID_LEFT_LONG, HID_KEYBOARD_HOME }, 83 { ACTION_USB_HID_PRESENTATION_LINK_NEXT, HID_KEYBOARD_TAB },
88 /* Slide last */ 84 { ACTION_USB_HID_PRESENTATION_MOUSE_CLICK, HID_KEYBOARD_RETURN },
89 { ACTION_USB_HID_RIGHT_LONG, HID_KEYBOARD_END }, 85 { ACTION_USB_HID_PRESENTATION_MOUSE_OVER, SHIFT(HID_KEYBOARD_RETURN) },
90 /* Screen black */
91 { ACTION_USB_HID_MENU, HID_KEYBOARD_DOT },
92 /* Screen white*/
93 { ACTION_USB_HID_MENU_LONG, HID_KEYBOARD_COMMA },
94 /* Link previous */
95 { ACTION_USB_HID_DEC, SHIFT(HID_KEYBOARD_TAB) },
96 /* Link next */
97 { ACTION_USB_HID_INC, HID_KEYBOARD_TAB },
98 /* Mouse click */
99 { ACTION_USB_HID_SELECT, HID_KEYBOARD_RETURN },
100 /* Mouse over */
101 { ACTION_USB_HID_SELECT_LONG, SHIFT(HID_KEYBOARD_RETURN) },
102 { 0, 0 }, 86 { 0, 0 },
103 } 87 }
104}; 88};
105 89
106static const hid_key_mapping_t hid_key_mapping_browser = { 90static const hid_key_mapping_t hid_key_mapping_browser = {
107 LANG_BROWSER_MODE, 91 LANG_BROWSER_MODE,
92 CONTEXT_USB_HID_MODE_BROWSER,
108 HID_USAGE_PAGE_KEYBOARD_KEYPAD, 93 HID_USAGE_PAGE_KEYBOARD_KEYPAD,
109 { 94 {
110 /* Scroll up */ 95 { ACTION_USB_HID_BROWSER_SCROLL_UP, HID_KEYBOARD_UP_ARROW },
111 { ACTION_USB_HID_DEC, HID_KEYBOARD_UP_ARROW }, 96 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, HID_KEYBOARD_DOWN_ARROW },
112 /* Scroll down */ 97 { ACTION_USB_HID_BROWSER_SCROLL_UP, HID_KEYBOARD_PAGE_UP },
113 { ACTION_USB_HID_INC, HID_KEYBOARD_DOWN_ARROW }, 98 { ACTION_USB_HID_BROWSER_SCROLL_DOWN, HID_KEYBOARD_PAGE_DOWN },
114 /* Scroll page up */ 99 { ACTION_USB_HID_BROWSER_ZOOM_IN, CTRL(HID_KEYPAD_PLUS) },
115 { ACTION_USB_HID_START, HID_KEYBOARD_PAGE_UP }, 100 { ACTION_USB_HID_BROWSER_ZOOM_OUT, CTRL(HID_KEYPAD_MINUS) },
116 /* Scroll page down */ 101 { ACTION_USB_HID_BROWSER_ZOOM_RESET, CTRL(HID_KEYPAD_0_AND_INSERT) },
117 { ACTION_USB_HID_MENU, HID_KEYBOARD_PAGE_DOWN }, 102 { ACTION_USB_HID_BROWSER_TAB_PREV, CTRL(HID_KEYBOARD_PAGE_UP) },
118 /* Zoom in */ 103 { ACTION_USB_HID_BROWSER_TAB_NEXT, CTRL(HID_KEYBOARD_PAGE_DOWN) },
119 { ACTION_USB_HID_START_LONG, CTRL(HID_KEYPAD_PLUS) }, 104 { ACTION_USB_HID_BROWSER_TAB_CLOSE, CTRL(HID_KEYBOARD_W) },
120 /* Zoom out */ 105 { ACTION_USB_HID_BROWSER_HISTORY_BACK, ALT(HID_KEYBOARD_LEFT_ARROW) },
121 { ACTION_USB_HID_MENU_LONG, CTRL(HID_KEYPAD_MINUS) }, 106 { ACTION_USB_HID_BROWSER_HISTORY_FORWARD, ALT(HID_KEYBOARD_RIGHT_ARROW) },
122 /* Zoom reset */ 107 { ACTION_USB_HID_BROWSER_VIEW_FULL_SCREEN, HID_KEYBOARD_F11 },
123 { ACTION_USB_HID_SELECT_LONG, CTRL(HID_KEYPAD_0_AND_INSERT) },
124 /* Tab previous */
125 { ACTION_USB_HID_LEFT, CTRL(HID_KEYBOARD_PAGE_UP) },
126 /* Tab next */
127 { ACTION_USB_HID_RIGHT, CTRL(HID_KEYBOARD_PAGE_DOWN) },
128 /* Tab close */
129 { ACTION_USB_HID_QUIT_LONG, CTRL(HID_KEYBOARD_W) },
130 /* History back */
131 { ACTION_USB_HID_LEFT_LONG, ALT(HID_KEYBOARD_LEFT_ARROW) },
132 /* History forward */
133 { ACTION_USB_HID_RIGHT_LONG, ALT(HID_KEYBOARD_RIGHT_ARROW) },
134 /* View full-screen */
135 { ACTION_USB_HID_SELECT, HID_KEYBOARD_F11 },
136 { 0, 0 }, 108 { 0, 0 },
137 } 109 }
138}; 110};
@@ -140,6 +112,7 @@ static const hid_key_mapping_t hid_key_mapping_browser = {
140#ifdef HAVE_USB_HID_MOUSE 112#ifdef HAVE_USB_HID_MOUSE
141static const hid_key_mapping_t hid_key_mapping_mouse = { 113static const hid_key_mapping_t hid_key_mapping_mouse = {
142 LANG_MOUSE_MODE, 114 LANG_MOUSE_MODE,
115 CONTEXT_USB_HID_MODE_MOUSE,
143 HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS, 116 HID_USAGE_PAGE_GENERIC_DESKTOP_CONTROLS,
144 { 117 {
145 /* Cursor move up */ 118 /* Cursor move up */
@@ -201,21 +174,19 @@ extern int usb_keypad_mode;
201 174
202int get_hid_usb_action(void) 175int get_hid_usb_action(void)
203{ 176{
204 int action, context = CONTEXT_USB_HID; 177 int action;
205 178 const hid_key_mapping_t *key_mapping = hid_key_mappings[usb_keypad_mode];
206#ifdef HAVE_USB_HID_MOUSE
207 if (usb_keypad_mode == USB_KEYPAD_MODE_MOUSE)
208 context = CONTEXT_USB_HID_MOUSE;
209#endif
210 179
211 action = get_action(context, HZ/4); 180 action = get_action(key_mapping->context, HZ/4);
212 /* Skip key mappings in a cyclic way */ 181 /* Skip key mappings in a cyclic way */
213 if (action == ACTION_USB_HID_MODE) 182 if (action == ACTION_USB_HID_MODE_SWITCH_NEXT)
214 { 183 {
184 /* TODO: Use clamp_value_wrap() */
215 usb_keypad_mode = (usb_keypad_mode + 1) % NUM_KEY_MAPPINGS; 185 usb_keypad_mode = (usb_keypad_mode + 1) % NUM_KEY_MAPPINGS;
216 } 186 }
217 else if (action == ACTION_USB_HID_MODE_LONG) 187 else if (action == ACTION_USB_HID_MODE_SWITCH_PREV)
218 { 188 {
189 /* TODO: Use clamp_value_wrap() */
219 usb_keypad_mode = (usb_keypad_mode - 1) % NUM_KEY_MAPPINGS; 190 usb_keypad_mode = (usb_keypad_mode - 1) % NUM_KEY_MAPPINGS;
220 } 191 }
221 else if (action > ACTION_USB_HID_FIRST && action < ACTION_USB_HID_LAST) 192 else if (action > ACTION_USB_HID_FIRST && action < ACTION_USB_HID_LAST)
diff --git a/firmware/export/config-h10.h b/firmware/export/config-h10.h
index 5ac12af3fc..0dc845c23b 100644
--- a/firmware/export/config-h10.h
+++ b/firmware/export/config-h10.h
@@ -173,7 +173,6 @@
173#define USE_ROCKBOX_USB 173#define USE_ROCKBOX_USB
174#define USB_VENDOR_ID 0x0B70 174#define USB_VENDOR_ID 0x0B70
175#define USB_PRODUCT_ID 0x00BA 175#define USB_PRODUCT_ID 0x00BA
176#define HAVE_USB_HID_MOUSE
177 176
178/* Define this if you have adjustable CPU frequency */ 177/* Define this if you have adjustable CPU frequency */
179#define HAVE_ADJUSTABLE_CPU_FREQ 178#define HAVE_ADJUSTABLE_CPU_FREQ
diff --git a/firmware/export/config-h10_5gb.h b/firmware/export/config-h10_5gb.h
index e39c6a6bbf..8275e50dc6 100644
--- a/firmware/export/config-h10_5gb.h
+++ b/firmware/export/config-h10_5gb.h
@@ -153,7 +153,6 @@
153#define USE_ROCKBOX_USB 153#define USE_ROCKBOX_USB
154#define USB_VENDOR_ID 0x0B70 154#define USB_VENDOR_ID 0x0B70
155#define USB_PRODUCT_ID 0x00BA 155#define USB_PRODUCT_ID 0x00BA
156#define HAVE_USB_HID_MOUSE
157 156
158/* Define this if you have adjustable CPU frequency */ 157/* Define this if you have adjustable CPU frequency */
159#define HAVE_ADJUSTABLE_CPU_FREQ 158#define HAVE_ADJUSTABLE_CPU_FREQ
diff --git a/firmware/export/config-mrobe100.h b/firmware/export/config-mrobe100.h
index 4fdea149ae..c348770188 100644
--- a/firmware/export/config-mrobe100.h
+++ b/firmware/export/config-mrobe100.h
@@ -178,6 +178,7 @@
178#define USE_ROCKBOX_USB 178#define USE_ROCKBOX_USB
179#define USB_VENDOR_ID 0x07B4 179#define USB_VENDOR_ID 0x07B4
180#define USB_PRODUCT_ID 0x0280 180#define USB_PRODUCT_ID 0x0280
181#define HAVE_USB_HID_MOUSE
181 182
182/* Define this if you have adjustable CPU frequency */ 183/* Define this if you have adjustable CPU frequency */
183#define HAVE_ADJUSTABLE_CPU_FREQ 184#define HAVE_ADJUSTABLE_CPU_FREQ
diff --git a/manual/configure_rockbox/system_options.tex b/manual/configure_rockbox/system_options.tex
index 854fadaf0f..5ff5dd05b9 100644
--- a/manual/configure_rockbox/system_options.tex
+++ b/manual/configure_rockbox/system_options.tex
@@ -190,28 +190,23 @@ this option \setting{On}. If it is not required, then turning this setting
190 keypad mode. There are different modes which provide different 190 keypad mode. There are different modes which provide different
191 functionality. 191 functionality.
192 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD% 192 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD%
193 ,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}{% 193 ,IRIVER_H10_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}{%
194 Switching modes back and forth is done by pressing the 194 Switching modes back and forth is done by pressing the
195 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonRec} % 195 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonRec}%
196 \opt{GIGABEAT_S_PAD,SANSA_CLIP_PAD,MROBE100_PAD}{\ButtonPower} % 196 \opt{GIGABEAT_S_PAD,SANSA_CLIP_PAD,MROBE100_PAD,IRIVER_H10_PAD}%
197 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}{\ButtonSelect+\ButtonRight} % 197 {\ButtonPower}%
198 and % 198 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}{\ButtonSelect+\ButtonRight}%
199 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{Long \ButtonRec} % 199 { }and %
200 \opt{GIGABEAT_S_PAD,SANSA_CLIP_PAD,MROBE100_PAD}{Long \ButtonPower} % 200 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{Long \ButtonRec}%
201 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}{\ButtonSelect+\ButtonLeft} % 201 \opt{GIGABEAT_S_PAD,SANSA_CLIP_PAD,MROBE100_PAD,IRIVER_H10_PAD}%
202 keys, respectively.% 202 {Long \ButtonPower}%
203 }% 203 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}{\ButtonSelect+\ButtonLeft}%
204 \opt{IRIVER_H10_PAD}{% 204 { }keys, respectively.%
205 Switching modes is done by pressing the
206 \opt{IRIVER_H10_PAD}{Long \ButtonPower} %
207 key.%
208 }% 205 }%
209 \opt{HAVEREMOTEKEYMAP}{ 206 \opt{HAVEREMOTEKEYMAP}{
210 Remote % 207 Remote %
211 \opt{GIGABEAT_S_PAD}{\ButtonRCDsp} % 208 \opt{GIGABEAT_RC_PAD}{\ButtonRCDsp / Long \ButtonRCDsp}%
212 % XXX: mr100 doesn't have manual/platform/remote-keymap-mrobe100.tex 209 { }can also be used to switch modes.%
213 \opt{MROBE100_PAD}{\btnfnt{Mode} and Long \btnfnt{Mode}} %
214 can also be used to switch modes.%
215 }% 210 }%
216 \newline\newline 211 \newline\newline
217 The following modes are available: 212 The following modes are available:
@@ -225,7 +220,7 @@ this option \setting{On}. If it is not required, then turning this setting
225 % 220 %
226 % Volume up / down 221 % Volume up / down
227 \opt{SANSA_E200_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD} 222 \opt{SANSA_E200_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}
228 {\ButtonScrollBack / \ButtonScrollFwd} 223 {\ButtonScrollFwd / \ButtonScrollBack}
229 \opt{GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD} 224 \opt{GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}
230 {\ButtonVolUp / \ButtonVolDown} 225 {\ButtonVolUp / \ButtonVolDown}
231 \opt{IRIVER_H10_PAD}{\ButtonScrollUp / \ButtonScrollDown} 226 \opt{IRIVER_H10_PAD}{\ButtonScrollUp / \ButtonScrollDown}
@@ -238,8 +233,7 @@ this option \setting{On}. If it is not required, then turning this setting
238 % 233 %
239 % Volume mute 234 % Volume mute
240 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,IPOD_4G_PAD% 235 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,IPOD_4G_PAD%
241 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD} 236 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}{\ButtonSelect}
242 {\ButtonSelect}
243 \opt{GIGABEAT_S_PAD}{\ButtonSelect; \ButtonBack} 237 \opt{GIGABEAT_S_PAD}{\ButtonSelect; \ButtonBack}
244 \opt{IRIVER_H10_PAD}{\ButtonFF} 238 \opt{IRIVER_H10_PAD}{\ButtonFF}
245 \opt{HAVEREMOTEKEYMAP}{ 239 \opt{HAVEREMOTEKEYMAP}{
@@ -250,9 +244,9 @@ this option \setting{On}. If it is not required, then turning this setting
250 % 244 %
251 % Playback play / pause 245 % Playback play / pause
252 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonUp} 246 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonUp}
253 \opt{GIGABEAT_S_PAD,IRIVER_H10_PAD,IPOD_4G_PAD,IPOD_3G_PAD% 247 \opt{IRIVER_H10_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD%
254 ,IPOD_1G2G_PAD,MROBE100_PAD} 248 ,MROBE100_PAD}{\ButtonPlay}
255 {\ButtonPlay} 249 \opt{GIGABEAT_S_PAD}{\ButtonPlay; \ButtonUp}
256 \opt{HAVEREMOTEKEYMAP}{ 250 \opt{HAVEREMOTEKEYMAP}{
257 & 251 &
258 \opt{GIGABEAT_RC_PAD}{\ButtonRCPlay}% 252 \opt{GIGABEAT_RC_PAD}{\ButtonRCPlay}%
@@ -261,27 +255,38 @@ this option \setting{On}. If it is not required, then turning this setting
261 % 255 %
262 % Playback stop 256 % Playback stop
263 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonPower} 257 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonPower}
264 \opt{GIGABEAT_S_PAD}{\ButtonMenu} 258 \opt{GIGABEAT_S_PAD}{\ButtonMenu; \ButtonDown}
265 \opt{SANSA_CLIP_PAD}{\ButtonHome} 259 \opt{SANSA_CLIP_PAD}{\ButtonHome}
266 \opt{IRIVER_H10_PAD}{\ButtonRew} 260 \opt{IRIVER_H10_PAD}{\ButtonRew; Long \ButtonPlay}
267 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}{Long \ButtonPlay} 261 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}
268 \opt{MROBE100_PAD}{\ButtonDisplay} 262 {\ButtonMenu; Long \ButtonPlay}
263 \opt{MROBE100_PAD}{\ButtonDisplay; Long {\ButtonPlay}}
269 \opt{HAVEREMOTEKEYMAP}{ 264 \opt{HAVEREMOTEKEYMAP}{
270 & 265 &
271 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCPlay}% 266 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCPlay}%
272 } 267 }
273 & Stop \\ 268 & Stop \\
274 % 269 %
275 % Scan previous / next track 270 % Scan previous track
276 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD% 271 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,IRIVER_H10_PAD%
277 ,IRIVER_H10_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD% 272 ,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}
278 ,MROBE100_PAD} 273 {\ButtonLeft}
279 {\ButtonLeft / \ButtonRight} 274 \opt{GIGABEAT_RC_PAD}{\ButtonPrev; \ButtonLeft}%
275 \opt{HAVEREMOTEKEYMAP}{
276 &
277 }
278 & Scan previous track \\
279 %
280 % Scan next track
281 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,IRIVER_H10_PAD%
282 ,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}
283 {\ButtonRight}
284 \opt{GIGABEAT_RC_PAD}{\ButtonNext; \ButtonRight}%
280 \opt{HAVEREMOTEKEYMAP}{ 285 \opt{HAVEREMOTEKEYMAP}{
281 & 286 &
282 \opt{GIGABEAT_RC_PAD}{\ButtonRCRew / \ButtonRCFF}% 287 \opt{GIGABEAT_RC_PAD}{\ButtonRCFF}%
283 } 288 }
284 & Scan previous / next track \\ 289 & Scan next track \\
285 \end{btnmap} 290 \end{btnmap}
286 \end{table} 291 \end{table}
287 292
@@ -293,51 +298,92 @@ this option \setting{On}. If it is not required, then turning this setting
293 \begin{table} 298 \begin{table}
294 \begin{btnmap}{}{} 299 \begin{btnmap}{}{}
295 % 300 %
296 % Slideshow start / leave 301 % Slideshow start
297 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonUp / \ButtonPower} 302 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonUp}
298 \opt{GIGABEAT_S_PADIRIVER_H10_PAD}{\ButtonPlay / \ButtonMenu} 303 \opt{GIGABEAT_S_PAD}{\ButtonPlay; \ButtonUp}
299 \opt{SANSA_CLIP_PAD}{\ButtonUp / \ButtonHome} 304 \opt{IRIVER_H10_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD%
300 \opt{IRIVER_H10_PAD}{\ButtonPlay / \ButtonRew} 305 ,MROBE100_PAD}{\ButtonPlay}
301 \opt{GIGABEAT_S_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}
302 {\ButtonPlay / Long \ButtonPlay}
303 \opt{MROBE100_PAD}{\ButtonPlay / \ButtonDisplay}
304 \opt{HAVEREMOTEKEYMAP}{ 306 \opt{HAVEREMOTEKEYMAP}{
305 & 307 &
306 \opt{GIGABEAT_RC_PAD}{\ButtonRCPlay / Long \ButtonRCPlay}% 308 \opt{GIGABEAT_RC_PAD}{\ButtonRCPlay}%
307 } 309 }
308 & Slideshow start / leave, respectively \\ 310 & Slideshow start \\
309 % 311 %
310 % Slide previous / next 312 % Slideshow leave
311 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD% 313 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonPower}
312 ,IRIVER_H10_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD} 314 \opt{GIGABEAT_S_PAD}{Long \ButtonPlay; Long \ButtonUp}
313 {\ButtonLeft / \ButtonRight} 315 \opt{SANSA_CLIP_PAD}{\ButtonHome}
316 \opt{IRIVER_H10_PAD}{Long \ButtonPlay}
317 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}{Long \ButtonPlay}
318 \opt{MROBE100_PAD}{\ButtonDisplay; Long \ButtonPlay}
314 \opt{HAVEREMOTEKEYMAP}{ 319 \opt{HAVEREMOTEKEYMAP}{
315 & 320 &
316 \opt{GIGABEAT_RC_PAD}{\ButtonRCRew / \ButtonRCFF}% 321 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCPlay}%
317 } 322 }
318 & Slide previous / next, respectively \\ 323 & Slideshow leave \\
319 % 324 %
320 % Slide first / last 325 % Slide previous
321 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD% 326 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,IPOD_4G_PAD%
322 ,IRIVER_H10_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD} 327 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}{\ButtonLeft}
323 {Long \ButtonLeft / Long \ButtonRight} 328 \opt{GIGABEAT_S_PAD}{\ButtonPrev; \ButtonLeft}
324 \opt{HAVEREMOTEKEYMAP}{& } 329 \opt{IRIVER_H10_PAD}{\ButtonRew}
325 & Slide first / last, respectively \\ 330 \opt{HAVEREMOTEKEYMAP}{
331 &
332 \opt{GIGABEAT_RC_PAD}{\ButtonRCRew}%
333 }
334 & Slide previous \\
335 %
336 % Slide next
337 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,IPOD_4G_PAD%
338 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}{\ButtonRight}
339 \opt{GIGABEAT_S_PAD}{\ButtonNext; \ButtonRight}
340 \opt{IRIVER_H10_PAD}{\ButtonFF}
341 \opt{HAVEREMOTEKEYMAP}{
342 &
343 \opt{GIGABEAT_RC_PAD}{\ButtonRCFF}%
344 }
345 & Slide next \\
346 %
347 % Slide first
348 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,IPOD_4G_PAD%
349 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}{Long \ButtonLeft}
350 \opt{GIGABEAT_S_PAD}{Long \ButtonPrev; Long \ButtonLeft}
351 \opt{IRIVER_H10_PAD}{Long \ButtonRew}
352 \opt{HAVEREMOTEKEYMAP}{
353 &
354 }
355 & Slide first \\
356 %
357 % Slide last
358 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,IPOD_4G_PAD%
359 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}{Long \ButtonRight}
360 \opt{GIGABEAT_S_PAD}{Long \ButtonNext; Long \ButtonRight}
361 \opt{IRIVER_H10_PAD}{Long \ButtonFF}
362 \opt{HAVEREMOTEKEYMAP}{
363 &
364 }
365 & Slide last \\
326 % 366 %
327 % Screen black 367 % Screen black
328 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD} 368 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}
329 {\ButtonDown} 369 {\ButtonDown}
330 \opt{IRIVER_H10_PAD}{\ButtonPower} 370 \opt{IRIVER_H10_PAD}{\ButtonLeft}
331 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}{\ButtonMenu} 371 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}
332 \opt{HAVEREMOTEKEYMAP}{& } 372 {\ButtonMenu}
373 \opt{HAVEREMOTEKEYMAP}{
374 &
375 }
333 & Blank screen \\ 376 & Blank screen \\
334 % 377 %
335 % Screen white 378 % Screen white
336 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD} 379 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}
337 {Long \ButtonDown} 380 {Long \ButtonDown}
381 \opt{IRIVER_H10_PAD}{Long \ButtonLeft}
338 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD} 382 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}
339 {Long \ButtonMenu} 383 {Long \ButtonMenu}
340 \opt{HAVEREMOTEKEYMAP}{& } 384 \opt{HAVEREMOTEKEYMAP}{
385 &
386 }
341 & White screen \\ 387 & White screen \\
342 % 388 %
343 % Link previous / next 389 % Link previous / next
@@ -358,7 +404,7 @@ this option \setting{On}. If it is not required, then turning this setting
358 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD} 404 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}
359 {\ButtonSelect} 405 {\ButtonSelect}
360 \opt{GIGABEAT_S_PAD}{\ButtonSelect; \ButtonBack} 406 \opt{GIGABEAT_S_PAD}{\ButtonSelect; \ButtonBack}
361 \opt{IRIVER_H10_PAD}{\ButtonFF} 407 \opt{IRIVER_H10_PAD}{\ButtonRight}
362 \opt{HAVEREMOTEKEYMAP}{ 408 \opt{HAVEREMOTEKEYMAP}{
363 & 409 &
364 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCFF}% 410 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCFF}%
@@ -370,6 +416,7 @@ this option \setting{On}. If it is not required, then turning this setting
370 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD} 416 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}
371 {Long \ButtonSelect} 417 {Long \ButtonSelect}
372 \opt{GIGABEAT_S_PAD}{Long \ButtonSelect; Long \ButtonBack} 418 \opt{GIGABEAT_S_PAD}{Long \ButtonSelect; Long \ButtonBack}
419 \opt{IRIVER_H10_PAD}{Long \ButtonRight}
373 \opt{HAVEREMOTEKEYMAP}{ 420 \opt{HAVEREMOTEKEYMAP}{
374 & 421 &
375 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCRew}% 422 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCRew}%
@@ -387,8 +434,9 @@ this option \setting{On}. If it is not required, then turning this setting
387 % Scroll up / down 434 % Scroll up / down
388 \opt{SANSA_E200_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD} 435 \opt{SANSA_E200_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}
389 {\ButtonScrollBack / \ButtonScrollFwd} 436 {\ButtonScrollBack / \ButtonScrollFwd}
390 \opt{GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD} 437 \opt{SANSA_C200_PAD,SANSA_CLIP_PAD}{\ButtonVolUp / \ButtonVolDown}
391 {\ButtonVolUp / \ButtonVolDown} 438 \opt{GIGABEAT_S_PAD}
439 {\ButtonPrev; \ButtonVolUp / \ButtonNext; \ButtonVolDown}
392 \opt{IRIVER_H10_PAD}{\ButtonScrollUp / \ButtonScrollDown} 440 \opt{IRIVER_H10_PAD}{\ButtonScrollUp / \ButtonScrollDown}
393 \opt{MROBE100_PAD}{\ButtonUp / \ButtonDown} 441 \opt{MROBE100_PAD}{\ButtonUp / \ButtonDown}
394 \opt{HAVEREMOTEKEYMAP}{ 442 \opt{HAVEREMOTEKEYMAP}{
@@ -400,48 +448,66 @@ this option \setting{On}. If it is not required, then turning this setting
400 % Scroll page up / page down 448 % Scroll page up / page down
401 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD} 449 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}
402 {\ButtonUp / \ButtonDown} 450 {\ButtonUp / \ButtonDown}
403 \opt{GIGABEAT_S_PAD}{\ButtonPlay / \ButtonDown} 451 \opt{GIGABEAT_S_PAD}{\ButtonUp / \ButtonDown}
404 \opt{IRIVER_H10_PAD}{\ButtonPlay / \ButtonPower} 452 \opt{IRIVER_H10_PAD}{\ButtonRew / \ButtonFF}
405 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD} 453 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}
406 {\ButtonPlay / \ButtonMenu} 454 {\ButtonPlay / \ButtonMenu}
407 \opt{HAVEREMOTEKEYMAP}{ 455 \opt{HAVEREMOTEKEYMAP}{
408 & 456 &
409 \opt{GIGABEAT_RC_PAD}{\ButtonRCPlay / Long \ButtonRCDsp}%
410 } 457 }
411 & Scroll page up / page down, respectively \\ 458 & Scroll page up / page down, respectively \\
412 % 459 %
413 % Zoom in / out 460 % Zoom in / out
414 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD} 461 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD}
415 {Long \ButtonUp / Long \ButtonDown} 462 {Long \ButtonUp / Long \ButtonDown}
416 \opt{GIGABEAT_S_PAD}{Long \ButtonPlay / Long \ButtonPower} 463 \opt{GIGABEAT_S_PAD}{Long \ButtonUp / Long \ButtonDown}
417 \opt{MROBE100_PAD}{Long \ButtonPlay / Long \ButtonMenu} 464 \opt{IRIVER_H10_PAD}{Long \ButtonRew / Long \ButtonFF}
418 \opt{HAVEREMOTEKEYMAP}{& } 465 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD}
466 {Long \ButtonPlay / Long \ButtonMenu}
467 \opt{HAVEREMOTEKEYMAP}{
468 &
469 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCFF / Long \ButtonRCRew}%
470 }
419 & Zoom in / out, respectively \\ 471 & Zoom in / out, respectively \\
420 % 472 %
421 % Zoom reset 473 % Zoom reset
422 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,MROBE100_PAD} 474 \opt{SANSA_E200_PAD}{Long \ButtonSelect; Long \ButtonUp+\ButtonDown}
423 {Long \ButtonSelect} 475 \opt{MROBE100_PAD}{Long \ButtonSelect; Long \ButtonPlay+\ButtonMenu}
424 \opt{GIGABEAT_S_PAD}{Long \ButtonSelect; Long \ButtonBack} 476 \opt{SANSA_CLIP_PAD,SANSA_C200_PAD}
477 {Long \ButtonSelect; Long \ButtonUp+\ButtonDown}
478 \opt{GIGABEAT_S_PAD}{Long \ButtonSelect; Long \ButtonUp+\ButtonDown}
479 \opt{IRIVER_H10_PAD}{Long \ButtonRew+\ButtonFF}
480 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}
481 {Long \ButtonPlay+\ButtonMenu}
425 \opt{HAVEREMOTEKEYMAP}{ 482 \opt{HAVEREMOTEKEYMAP}{
426 & 483 &
427 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCRew}% 484 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCFF+\ButtonRCRew}%
428 } 485 }
429 & Zoom reset \\ 486 & Zoom reset \\
430 % 487 %
431 % Tab previous / next 488 % Tab previous / next
432 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD% 489 \opt{SANSA_E200_PAD,GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD%
433 ,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD} 490 ,IRIVER_H10_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD%
491 ,MROBE100_PAD}
434 {\ButtonLeft / \ButtonRight} 492 {\ButtonLeft / \ButtonRight}
435 \opt{IRIVER_H10_PAD}{\ButtonRew / \ButtonFF} 493 \opt{HAVEREMOTEKEYMAP}{
436 \opt{HAVEREMOTEKEYMAP}{& } 494 &
495 \opt{GIGABEAT_RC_PAD}{\ButtonRCRew / \ButtonRCFF}%
496 }
437 & Tab previous / next, respectively \\ 497 & Tab previous / next, respectively \\
438 % 498 %
439 % Tab close 499 % Tab close
440 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{Long \ButtonPower} 500 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{Long \ButtonPower}
441 \opt{GIGABEAT_S_PAD}{Long \ButtonMenu} 501 \opt{GIGABEAT_S_PAD}{Long \ButtonPlay; Long \ButtonBack}
442 \opt{SANSA_CLIP_PAD}{Long \ButtonHome} 502 \opt{SANSA_CLIP_PAD}{Long \ButtonHome}
503 \opt{IRIVER_H10_PAD}{Long \ButtonLeft+\ButtonRight}
443 \opt{MROBE100_PAD}{Long \ButtonDisplay} 504 \opt{MROBE100_PAD}{Long \ButtonDisplay}
444 \opt{HAVEREMOTEKEYMAP}{& } 505 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}
506 {Long \ButtonSelect+\ButtonMenu}
507 \opt{HAVEREMOTEKEYMAP}{
508 &
509 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCPlay}%
510 }
445 & Tab close \\ 511 & Tab close \\
446 % 512 %
447 % History back / forward 513 % History back / forward
@@ -450,19 +516,19 @@ this option \setting{On}. If it is not required, then turning this setting
450 {Long \ButtonLeft / Long \ButtonRight} 516 {Long \ButtonLeft / Long \ButtonRight}
451 \opt{HAVEREMOTEKEYMAP}{ 517 \opt{HAVEREMOTEKEYMAP}{
452 & 518 &
453 \opt{GIGABEAT_RC_PAD}{\ButtonRCRew / \ButtonRCFF}%
454 } 519 }
455 & History back / forward \\ 520 & History back / forward \\
456 % 521 %
457 % View full-screen 522 % View full-screen
458 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,IPOD_4G_PAD% 523 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,GIGABEAT_S_PAD%
459 ,IPOD_3G_PAD,IPOD_1G2G_PAD,MROBE100_PAD} 524 ,MROBE100_PAD}
460 {\ButtonSelect} 525 {\ButtonSelect}
461 \opt{GIGABEAT_S_PAD}{Long \ButtonSelect; Long \ButtonBack} 526 \opt{IRIVER_H10_PAD}{\ButtonPlay}
462 \opt{IRIVER_H10_PAD}{\ButtonFF} 527 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}
528 {Long \ButtonSelect+\ButtonPlay}
463 \opt{HAVEREMOTEKEYMAP}{ 529 \opt{HAVEREMOTEKEYMAP}{
464 & 530 &
465 \opt{GIGABEAT_RC_PAD}{Long \ButtonRCRew}% 531 \opt{GIGABEAT_RC_PAD}{\ButtonRCPlay}%
466 } 532 }
467 & View full-screen toggle \\ 533 & View full-screen toggle \\
468 \end{btnmap} 534 \end{btnmap}
@@ -480,9 +546,9 @@ this option \setting{On}. If it is not required, then turning this setting
480 {\ButtonUp / \ButtonDown / \ButtonLeft / \ButtonRight} 546 {\ButtonUp / \ButtonDown / \ButtonLeft / \ButtonRight}
481 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD} 547 \opt{IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}
482 {\ButtonMenu / \ButtonPlay / \ButtonLeft / \ButtonRight} 548 {\ButtonMenu / \ButtonPlay / \ButtonLeft / \ButtonRight}
483 \opt{IRIVER_H10_PAD} 549 \opt{HAVEREMOTEKEYMAP}{
484 {\ButtonScrollUp / \ButtonScrollDown / \ButtonLeft / \ButtonRight} 550 &
485 \opt{HAVEREMOTEKEYMAP}{& } 551 }
486 & Cursor move up / down / left / right, respectively \\ 552 & Cursor move up / down / left / right, respectively \\
487 % 553 %
488 % Mouse button left-click 554 % Mouse button left-click
@@ -490,25 +556,31 @@ this option \setting{On}. If it is not required, then turning this setting
490 ,IPOD_3G_PAD,IPOD_1G2G_PAD} 556 ,IPOD_3G_PAD,IPOD_1G2G_PAD}
491 {\ButtonSelect} 557 {\ButtonSelect}
492 \opt{GIGABEAT_S_PAD}{\ButtonSelect; \ButtonBack} 558 \opt{GIGABEAT_S_PAD}{\ButtonSelect; \ButtonBack}
493 \opt{MROBE100_PAD}{\ButtonSelect; \ButtonMenu} 559 \opt{MROBE100_PAD}{\ButtonMenu}
494 \opt{IRIVER_H10_PAD}{\ButtonPower} 560 \opt{HAVEREMOTEKEYMAP}{
495 \opt{HAVEREMOTEKEYMAP}{& } 561 &
562 }
496 & Left mouse button click \\ 563 & Left mouse button click \\
497 % 564 %
498 % Mouse button right-click 565 % Mouse button right-click
499 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonPower} 566 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonPower}
500 \opt{GIGABEAT_S_PAD}{\ButtonMenu} 567 \opt{GIGABEAT_S_PAD}{\ButtonMenu}
501 \opt{SANSA_CLIP_PAD}{\ButtonHome} 568 \opt{SANSA_CLIP_PAD}{\ButtonHome}
502 \opt{MROBE100_PAD,IRIVER_H10_PAD}{\ButtonPlay} 569 \opt{MROBE100_PAD}{\ButtonPlay}
503 \opt{HAVEREMOTEKEYMAP}{& } 570 \opt{HAVEREMOTEKEYMAP}{
571 &
572 }
504 & Right mouse button click \\ 573 & Right mouse button click \\
505 % Mouse wheel scroll up / down 574 % Mouse wheel scroll up / down
506 \opt{SANSA_E200_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD} 575 \opt{SANSA_E200_PAD,IPOD_4G_PAD,IPOD_3G_PAD,IPOD_1G2G_PAD}
507 {\ButtonScrollBack / \ButtonScrollFwd} 576 {\ButtonScrollBack / \ButtonScrollFwd}
508 \opt{GIGABEAT_S_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD} 577 \opt{GIGABEAT_S_PAD}
578 {\ButtonVolUp; \ButtonPrev / \ButtonVolDown; \ButtonNext}
579 \opt{SANSA_C200_PAD,SANSA_CLIP_PAD,MROBE100_PAD}
509 {\ButtonVolUp / \ButtonVolDown} 580 {\ButtonVolUp / \ButtonVolDown}
510 \opt{IRIVER_H10_PAD}{\ButtonRew / \ButtonFF} 581 \opt{HAVEREMOTEKEYMAP}{
511 \opt{HAVEREMOTEKEYMAP}{& } 582 &
583 }
512 & Mouse wheel scroll up / down, respectively \\ 584 & Mouse wheel scroll up / down, respectively \\
513 \end{btnmap} 585 \end{btnmap}
514 \end{table} 586 \end{table}