diff --git a/apps/action.h b/apps/action.h index 63ec905e51..ec9727c120 100644 --- a/apps/action.h +++ b/apps/action.h @@ -136,6 +136,7 @@ enum { ACTION_WPS_ABSETA_PREVDIR, /* these should be safe to put together seen as */ ACTION_WPS_ABSETB_NEXTDIR, /* you shouldnt want to change dir in ab-mode */ ACTION_WPS_ABRESET, + ACTION_WPS_HOTKEY, /* list and tree page up/down */ ACTION_LISTTREE_PGUP,/* optional */ @@ -151,6 +152,7 @@ enum { ACTION_TREE_PGRIGHT,/* optional */ ACTION_TREE_STOP, ACTION_TREE_WPS, + ACTION_TREE_HOTKEY, /* radio */ ACTION_FM_MENU, diff --git a/apps/features.txt b/apps/features.txt index af0da5b355..0bfe695aeb 100644 --- a/apps/features.txt +++ b/apps/features.txt @@ -70,6 +70,10 @@ hold_button remote_button_hold #endif +#if defined(HAVE_HOTKEY) +hotkey +#endif + #if defined(HAVE_LCD_BITMAP) lcd_bitmap #endif diff --git a/apps/gui/wps.c b/apps/gui/wps.c index b6a42769fe..afd7f3f2d0 100644 --- a/apps/gui/wps.c +++ b/apps/gui/wps.c @@ -888,10 +888,12 @@ long gui_wps_show(void) switch(button) { case ACTION_WPS_CONTEXT: + case ACTION_WPS_HOTKEY: { + bool hotkey = button == ACTION_WPS_HOTKEY; gwps_leave_wps(); int retval = onplay(wps_state.id3->path, - FILE_ATTR_AUDIO, CONTEXT_WPS); + FILE_ATTR_AUDIO, CONTEXT_WPS, hotkey); /* if music is stopped in the context menu we want to exit the wps */ if (retval == ONPLAY_MAINMENU || !audio_status()) diff --git a/apps/keymaps/keymap-av300.c b/apps/keymaps/keymap-av300.c index 7d66921c3a..b80219f232 100644 --- a/apps/keymaps/keymap-av300.c +++ b/apps/keymaps/keymap-av300.c @@ -75,7 +75,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_MENU, BUTTON_F1|BUTTON_REL, BUTTON_F1 }, { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT }, { ACTION_WPS_QUICKSCREEN, BUTTON_F2|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_WPS_VIEW_PLAYLIST, BUTTON_F2|BUTTON_REL, BUTTON_F2 }, + { ACTION_WPS_HOTKEY, BUTTON_F2|BUTTON_REL, BUTTON_F2 }, { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON }, { ACTION_WPS_ID3SCREEN, BUTTON_F1|BUTTON_ON, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_UP, BUTTON_ON }, @@ -106,6 +106,7 @@ static const struct button_mapping button_context_settings[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, + { ACTION_TREE_HOTKEY, BUTTON_F2|BUTTON_REL, BUTTON_F2 }, { ACTION_NONE, BUTTON_ON, BUTTON_NONE }, { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON }, { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_ON|BUTTON_UP }, diff --git a/apps/keymaps/keymap-c100.c b/apps/keymaps/keymap-c100.c index 3312da3e1d..58f1f5f42b 100644 --- a/apps/keymaps/keymap-c100.c +++ b/apps/keymaps/keymap-c100.c @@ -69,7 +69,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_VOLUP, BUTTON_SELECT }, { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_VOLDOWN, BUTTON_SELECT }, { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, - { ACTION_WPS_VIEW_PLAYLIST, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE }, + { ACTION_WPS_HOTKEY, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE }, { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, LAST_ITEM_IN_LIST @@ -104,6 +104,7 @@ static const struct button_mapping button_context_list[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REL, BUTTON_UP }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, + { ACTION_TREE_HOTKEY, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-c200.c b/apps/keymaps/keymap-c200.c index 487a2db1a7..f19440019c 100644 --- a/apps/keymaps/keymap-c200.c +++ b/apps/keymaps/keymap-c200.c @@ -81,7 +81,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN, BUTTON_NONE }, { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_WPS_VIEW_PLAYLIST, BUTTON_REC|BUTTON_REL, BUTTON_REC }, + { ACTION_WPS_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, LAST_ITEM_IN_LIST }; /* button_context_wps */ @@ -123,6 +123,7 @@ static const struct button_mapping button_context_list[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, + { ACTION_TREE_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-clip.c b/apps/keymaps/keymap-clip.c index afef805681..942968b20f 100644 --- a/apps/keymaps/keymap-clip.c +++ b/apps/keymaps/keymap-clip.c @@ -82,7 +82,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT }, { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_SELECT }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, +#endif #ifndef HAS_BUTTON_HOLD /* Clip+ */ { ACTION_STD_KEYLOCK, BUTTON_HOME|BUTTON_SELECT, BUTTON_NONE }, @@ -131,6 +135,9 @@ static const struct button_mapping button_context_list[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_HOME|BUTTON_SELECT, BUTTON_HOME }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-creativezv.c b/apps/keymaps/keymap-creativezv.c index fb8e542520..4108980720 100644 --- a/apps/keymaps/keymap-creativezv.c +++ b/apps/keymaps/keymap-creativezv.c @@ -92,7 +92,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_POWER, BUTTON_NONE }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE }, +#endif { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, { ACTION_WPS_ID3SCREEN, BUTTON_BACK|BUTTON_REL, BUTTON_NONE }, @@ -109,6 +113,9 @@ static const struct button_mapping button_context_tree[] = { { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-creativezvm.c b/apps/keymaps/keymap-creativezvm.c index 37563248a1..5d1b25aa8d 100644 --- a/apps/keymaps/keymap-creativezvm.c +++ b/apps/keymaps/keymap-creativezvm.c @@ -91,7 +91,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_POWER, BUTTON_NONE }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE }, +#endif { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, { ACTION_WPS_ID3SCREEN, BUTTON_BACK|BUTTON_REL, BUTTON_NONE }, @@ -108,6 +112,9 @@ static const struct button_mapping button_context_tree[] = { { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-e200.c b/apps/keymaps/keymap-e200.c index 367fdcb88f..aca8a9d7e3 100644 --- a/apps/keymaps/keymap-e200.c +++ b/apps/keymaps/keymap-e200.c @@ -80,7 +80,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, { ACTION_WPS_MENU, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, - { ACTION_WPS_VIEW_PLAYLIST, BUTTON_REC|BUTTON_REL, BUTTON_REC }, + { ACTION_WPS_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT }, @@ -115,6 +115,7 @@ static const struct button_mapping button_context_list[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REL, BUTTON_UP }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, + { ACTION_TREE_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-fuze.c b/apps/keymaps/keymap-fuze.c index 416674f814..7463b5d3bb 100644 --- a/apps/keymaps/keymap-fuze.c +++ b/apps/keymaps/keymap-fuze.c @@ -83,7 +83,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT }, { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_SELECT }, - { ACTION_WPS_VIEW_PLAYLIST, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, + { ACTION_WPS_HOTKEY, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, LAST_ITEM_IN_LIST }; /* button_context_wps */ @@ -114,6 +114,7 @@ static const struct button_mapping button_context_list[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REL, BUTTON_UP }, { ACTION_TREE_STOP, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME }, + { ACTION_TREE_HOTKEY, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-gigabeat-s.c b/apps/keymaps/keymap-gigabeat-s.c index d690b24e77..343d6b4f9c 100644 --- a/apps/keymaps/keymap-gigabeat-s.c +++ b/apps/keymaps/keymap-gigabeat-s.c @@ -100,7 +100,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_BACK|BUTTON_UP, BUTTON_BACK }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_BACK|BUTTON_DOWN, BUTTON_NONE }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_BACK|BUTTON_DOWN, BUTTON_NONE }, +#endif { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, @@ -134,6 +138,9 @@ static const struct button_mapping button_context_tree[] = { { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY,BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-gigabeat.c b/apps/keymaps/keymap-gigabeat.c index ccb6084ada..61d0a593c8 100644 --- a/apps/keymaps/keymap-gigabeat.c +++ b/apps/keymaps/keymap-gigabeat.c @@ -93,7 +93,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_A|BUTTON_UP, BUTTON_A }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_A|BUTTON_DOWN, BUTTON_NONE }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_A|BUTTON_DOWN, BUTTON_NONE }, +#endif { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, @@ -127,6 +131,9 @@ static const struct button_mapping button_context_tree[] = { { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-h10.c b/apps/keymaps/keymap-h10.c index 8597e24023..ffda90c4e8 100644 --- a/apps/keymaps/keymap-h10.c +++ b/apps/keymaps/keymap-h10.c @@ -87,7 +87,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_CONTEXT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, { ACTION_WPS_QUICKSCREEN, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, { ACTION_WPS_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, - { ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER|BUTTON_PLAY, BUTTON_NONE }, + { ACTION_WPS_HOTKEY, BUTTON_POWER|BUTTON_PLAY, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_PLAY|BUTTON_LEFT, BUTTON_PLAY }, { ACTION_WPS_ID3SCREEN, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_PLAY }, @@ -146,6 +146,7 @@ static const struct button_mapping remote_button_context_list[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, + { ACTION_TREE_HOTKEY, BUTTON_POWER|BUTTON_PLAY, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-h1x0_h3x0.c b/apps/keymaps/keymap-h1x0_h3x0.c index 64d0f30b8e..31e38533f3 100644 --- a/apps/keymaps/keymap-h1x0_h3x0.c +++ b/apps/keymaps/keymap-h1x0_h3x0.c @@ -92,7 +92,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_ABRESET, BUTTON_ON|BUTTON_SELECT, BUTTON_ON }, { ACTION_WPS_ID3SCREEN, BUTTON_ON|BUTTON_MODE, BUTTON_NONE }, { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_WPS_VIEW_PLAYLIST, BUTTON_REC|BUTTON_REL, BUTTON_REC }, + { ACTION_WPS_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, LAST_ITEM_IN_LIST }; /* button_context_wps */ @@ -112,6 +112,7 @@ static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, { ACTION_TREE_STOP, BUTTON_OFF|BUTTON_REPEAT, BUTTON_NONE }, + { ACTION_TREE_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-hdd1630.c b/apps/keymaps/keymap-hdd1630.c index d43fcd837d..b8de5eb84b 100644 --- a/apps/keymaps/keymap-hdd1630.c +++ b/apps/keymaps/keymap-hdd1630.c @@ -93,7 +93,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_VIEW|BUTTON_UP, BUTTON_VIEW }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_VIEW|BUTTON_DOWN, BUTTON_VIEW }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_VIEW|BUTTON_DOWN, BUTTON_VIEW }, +#endif { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, @@ -127,6 +131,9 @@ static const struct button_mapping button_context_tree[] = { { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-hdd6330.c b/apps/keymaps/keymap-hdd6330.c index d43fcd837d..b8de5eb84b 100644 --- a/apps/keymaps/keymap-hdd6330.c +++ b/apps/keymaps/keymap-hdd6330.c @@ -93,7 +93,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_VIEW|BUTTON_UP, BUTTON_VIEW }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_VIEW|BUTTON_DOWN, BUTTON_VIEW }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_VIEW|BUTTON_DOWN, BUTTON_VIEW }, +#endif { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, @@ -127,6 +131,9 @@ static const struct button_mapping button_context_tree[] = { { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-iaudio67.c b/apps/keymaps/keymap-iaudio67.c index ec700c5411..45e85d439b 100644 --- a/apps/keymaps/keymap-iaudio67.c +++ b/apps/keymaps/keymap-iaudio67.c @@ -71,7 +71,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, +#endif { ACTION_WPS_STOP, BUTTON_STOP, BUTTON_NONE }, LAST_ITEM_IN_LIST @@ -111,6 +115,9 @@ static const struct button_mapping button_context_list[] = { static const struct button_mapping button_context_tree[] = { // { ACTION_TREE_WPS, BUTTON_REC|BUTTON_VOLUP, BUTTON_REC }, // { ACTION_TREE_STOP, BUTTON_REC|BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_REC|BUTTON_VOLUP }, +#ifdef HAVE_HOTKEY + // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-ipod.c b/apps/keymaps/keymap-ipod.c index 751c6d89aa..8b65f96130 100644 --- a/apps/keymaps/keymap-ipod.c +++ b/apps/keymaps/keymap-ipod.c @@ -59,6 +59,7 @@ static const struct button_mapping button_context_standard[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, + { ACTION_TREE_HOTKEY, BUTTON_SELECT|BUTTON_PLAY, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_tree */ @@ -91,7 +92,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, - { ACTION_WPS_VIEW_PLAYLIST, BUTTON_SELECT|BUTTON_PLAY, BUTTON_NONE }, + { ACTION_WPS_HOTKEY, BUTTON_SELECT|BUTTON_PLAY, BUTTON_NONE }, { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, diff --git a/apps/keymaps/keymap-m3.c b/apps/keymaps/keymap-m3.c index 4449d77068..b6968e6ff0 100644 --- a/apps/keymaps/keymap-m3.c +++ b/apps/keymaps/keymap-m3.c @@ -292,6 +292,7 @@ static const struct button_mapping button_context_tree[] = { { ACTION_NONE, BUTTON_PLAY, BUTTON_NONE }, { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, + { ACTION_TREE_HOTKEY, BUTTON_REC|BUTTON_MODE, BUTTON_REC }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_tree */ @@ -352,7 +353,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_CONTEXT, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE }, { ACTION_WPS_MENU, BUTTON_REC|BUTTON_REL, BUTTON_REC }, { ACTION_WPS_QUICKSCREEN, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC }, - { ACTION_WPS_VIEW_PLAYLIST,BUTTON_REC|BUTTON_MODE, BUTTON_REC }, + { ACTION_WPS_HOTKEY, BUTTON_REC|BUTTON_MODE, BUTTON_REC }, LAST_ITEM_IN_LIST }; /* button_context_wps */ diff --git a/apps/keymaps/keymap-meizu-m6sl.c b/apps/keymaps/keymap-meizu-m6sl.c index 2dcb81bec0..c81b25729c 100644 --- a/apps/keymaps/keymap-meizu-m6sl.c +++ b/apps/keymaps/keymap-meizu-m6sl.c @@ -88,7 +88,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_PLAY|BUTTON_UP, BUTTON_PLAY }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_PLAY|BUTTON_DOWN, BUTTON_PLAY }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_PLAY|BUTTON_DOWN, BUTTON_PLAY }, +#endif { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, @@ -114,6 +118,9 @@ static const struct button_mapping button_context_list[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-mini2440.c b/apps/keymaps/keymap-mini2440.c index c53b9ae1c9..db145aa480 100644 --- a/apps/keymaps/keymap-mini2440.c +++ b/apps/keymaps/keymap-mini2440.c @@ -95,7 +95,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_A|BUTTON_UP, BUTTON_A }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_A|BUTTON_DOWN, BUTTON_NONE }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_A|BUTTON_DOWN, BUTTON_NONE }, +#endif { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, @@ -129,6 +133,9 @@ static const struct button_mapping button_context_tree[] = { { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-mr100.c b/apps/keymaps/keymap-mr100.c index dd2539f381..5a13f31402 100644 --- a/apps/keymaps/keymap-mr100.c +++ b/apps/keymaps/keymap-mr100.c @@ -94,7 +94,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_ABSETA_PREVDIR,BUTTON_DISPLAY|BUTTON_LEFT, BUTTON_NONE }, { ACTION_WPS_ABRESET, BUTTON_DISPLAY|BUTTON_SELECT, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_DISPLAY|BUTTON_UP, BUTTON_DISPLAY }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_DISPLAY|BUTTON_DOWN, BUTTON_DISPLAY }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_DISPLAY|BUTTON_DOWN, BUTTON_DISPLAY }, +#endif { ACTION_WPS_ID3SCREEN, BUTTON_DISPLAY|BUTTON_MENU, BUTTON_NONE }, { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, @@ -119,6 +123,9 @@ static const struct button_mapping button_context_tree[] = { { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-player.c b/apps/keymaps/keymap-player.c index 5fce6be83e..193413e473 100644 --- a/apps/keymaps/keymap-player.c +++ b/apps/keymaps/keymap-player.c @@ -63,7 +63,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, { ACTION_WPS_ID3SCREEN, BUTTON_MENU|BUTTON_ON, BUTTON_NONE }, { ACTION_STD_KEYLOCK, BUTTON_MENU|BUTTON_STOP, BUTTON_NONE }, - { ACTION_WPS_VIEW_PLAYLIST,BUTTON_MENU|BUTTON_ON, BUTTON_NONE }, + { ACTION_WPS_HOTKEY, BUTTON_MENU|BUTTON_ON, BUTTON_NONE }, LAST_ITEM_IN_LIST }; @@ -79,6 +79,7 @@ static const struct button_mapping button_context_settings[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_ON, BUTTON_NONE }, + { ACTION_TREE_HOTKEY, BUTTON_MENU|BUTTON_ON, BUTTON_NONE }, LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_listtree */ diff --git a/apps/keymaps/keymap-recorder.c b/apps/keymaps/keymap-recorder.c index c2ac45e0d6..8b395e2700 100644 --- a/apps/keymaps/keymap-recorder.c +++ b/apps/keymaps/keymap-recorder.c @@ -76,7 +76,7 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_MENU, BUTTON_F1|BUTTON_REL, BUTTON_F1 }, { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, { ACTION_WPS_QUICKSCREEN, BUTTON_F2|BUTTON_REPEAT, BUTTON_NONE }, - { ACTION_WPS_VIEW_PLAYLIST,BUTTON_F2|BUTTON_REL, BUTTON_F2 }, + { ACTION_WPS_HOTKEY, BUTTON_F2|BUTTON_REL, BUTTON_F2 }, { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON }, { ACTION_WPS_ID3SCREEN, BUTTON_F1|BUTTON_ON, BUTTON_NONE }, { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_UP, BUTTON_ON }, @@ -107,6 +107,7 @@ static const struct button_mapping button_context_settings[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, + { ACTION_TREE_HOTKEY, BUTTON_F2|BUTTON_REL, BUTTON_F2 }, { ACTION_NONE, BUTTON_ON, BUTTON_NONE }, { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON }, { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_ON|BUTTON_UP }, diff --git a/apps/keymaps/keymap-sa9200.c b/apps/keymaps/keymap-sa9200.c index d7405588b5..3c98484b26 100644 --- a/apps/keymaps/keymap-sa9200.c +++ b/apps/keymaps/keymap-sa9200.c @@ -100,7 +100,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, { ACTION_WPS_PITCHSCREEN, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT }, +#endif { ACTION_WPS_ID3SCREEN, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, LAST_ITEM_IN_LIST @@ -124,6 +128,9 @@ static const struct button_mapping button_context_list[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, { ACTION_TREE_STOP, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-touchscreen.c b/apps/keymaps/keymap-touchscreen.c index 6d3a515da7..8c2397f48c 100644 --- a/apps/keymaps/keymap-touchscreen.c +++ b/apps/keymaps/keymap-touchscreen.c @@ -92,7 +92,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_MENU, BUTTON_TOPLEFT|BUTTON_REL, BUTTON_TOPLEFT }, { ACTION_WPS_QUICKSCREEN, BUTTON_BOTTOMLEFT|BUTTON_REL, BUTTON_BOTTOMLEFT }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, +#endif { ACTION_WPS_REC, BUTTON_TOPLEFT|BUTTON_REPEAT, BUTTON_TOPLEFT }, { ACTION_WPS_PITCHSCREEN, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_BOTTOMLEFT }, { ACTION_WPS_ID3SCREEN, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT }, @@ -122,6 +126,9 @@ static const struct button_mapping button_context_list[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_TOPRIGHT|BUTTON_REL, BUTTON_TOPRIGHT }, { ACTION_TREE_STOP, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM2|CONTEXT_CUSTOM|CONTEXT_TREE) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-vibe500.c b/apps/keymaps/keymap-vibe500.c index 0a4cf83921..ae0756d1d3 100644 --- a/apps/keymaps/keymap-vibe500.c +++ b/apps/keymaps/keymap-vibe500.c @@ -66,7 +66,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, { ACTION_WPS_BROWSE, BUTTON_OK|BUTTON_REL, BUTTON_OK }, { ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_CANCEL, BUTTON_NONE }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_CANCEL, BUTTON_NONE }, +#endif { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, { ACTION_WPS_QUICKSCREEN, BUTTON_OK|BUTTON_REPEAT, BUTTON_OK }, @@ -76,6 +80,9 @@ static const struct button_mapping button_context_wps[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) }; /* button_context_tree */ diff --git a/apps/keymaps/keymap-yh8xx_yh9xx.c b/apps/keymaps/keymap-yh8xx_yh9xx.c index 7ae787a291..c64263d809 100644 --- a/apps/keymaps/keymap-yh8xx_yh9xx.c +++ b/apps/keymaps/keymap-yh8xx_yh9xx.c @@ -96,7 +96,11 @@ static const struct button_mapping button_context_wps[] = { { ACTION_WPS_QUICKSCREEN, BUTTON_LEFT|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_LEFT|BUTTON_DOWN|BUTTON_REPEAT }, +#ifdef HAVE_HOTKEY + { ACTION_WPS_HOTKEY, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, +#else { ACTION_WPS_VIEW_PLAYLIST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, +#endif { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, LAST_ITEM_IN_LIST @@ -117,6 +121,9 @@ static const struct button_mapping button_context_list[] = { static const struct button_mapping button_context_tree[] = { { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, +#ifdef HAVE_HOTKEY +// { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, +#endif LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) }; /* button_context_tree */ diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 60bf9902c7..b64ab859ec 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -13394,3 +13394,71 @@ lineout_poweroff: "Line Out" + + id: LANG_SET_HOTKEY + desc: hotkey splash + user: core + + *: none + hotkey: "Set Hotkey: %s" + + + *: none + hotkey: "Set Hotkey: %s" + + + *: none + hotkey: "Set Hotkey: %s" + + + + id: LANG_HOTKEY_NOT_SET + desc: hotkey splash + user: core + + *: none + hotkey: "Hotkey Not Set" + + + *: none + hotkey: "Hotkey Not Set" + + + *: none + hotkey: "Hotkey Not Set" + + + + id: LANG_HOTKEY + desc: hotkey menu + user: core + + *: none + hotkey: "Hotkey" + + + *: none + hotkey: "Hotkey" + + + *: none + hotkey: "Hotkey" + + + + id: LANG_VIEW_HOTKEY + desc: hotkey menu + user: core + + *: none + hotkey: "View Hotkey Settings" + + + *: none + hotkey: "View Hotkey Settings" + + + *: none + hotkey: "View Hotkey Settings" + + diff --git a/apps/menu.c b/apps/menu.c index 670a235202..b640905c0f 100644 --- a/apps/menu.c +++ b/apps/menu.c @@ -61,6 +61,12 @@ #include "list.h" #include "buttonbar.h" +/* hotkey settings */ +#ifdef HAVE_HOTKEY +const struct menu_item_ex *selected_menu_item; +bool hotkey_settable_menu = false; +#endif + #define MAX_MENUS 8 /* used to allow for dynamic menus */ #define MAX_MENU_SUBITEMS 64 @@ -425,6 +431,17 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected, ret = GO_TO_RECSCREEN; done = true; } +#endif +#ifdef HAVE_HOTKEY + else if (hotkey_settable_menu && + ((action == ACTION_WPS_HOTKEY) || + (action == ACTION_TREE_HOTKEY))) + { + ret = MENU_SELECTED_HOTKEY; + done = true; + selected = get_menu_selection(gui_synclist_get_sel_pos(&lists),menu); + selected_menu_item = menu->submenus[selected]; + } #endif else if (action == ACTION_TREE_WPS) { diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c index b695d9265b..8a83a3b240 100644 --- a/apps/menus/settings_menu.c +++ b/apps/menus/settings_menu.c @@ -47,6 +47,10 @@ #ifdef HAVE_DIRCACHE #include "dircache.h" #endif +#ifdef HAVE_HOTKEY +#include "list.h" +#include "settings_list.h" +#endif /***********************************/ /* TAGCACHE MENU */ @@ -399,6 +403,58 @@ MAKE_MENU(voice_settings_menu, ID2P(LANG_VOICE), 0, Icon_Voice, /***********************************/ +/***********************************/ +/* HOTKEY MENU */ +#ifdef HAVE_HOTKEY +static void view_hotkey_info(void) +{ + struct simplelist_info info; + simplelist_info_init(&info, str(LANG_VIEW_HOTKEY), 0, NULL); + info.hide_selection = true; + simplelist_set_line_count(2); + simplelist_addline(0, "WPS: %s", + str(global_settings.hotkey_wps_desc_id)); + simplelist_addline(1, "Tree: %s", + str(global_settings.hotkey_tree_desc_id)); + simplelist_show_list(&info); +} + +/* reset hotkey settings to their defaults */ +static void reset_hotkey_settings(void) +{ + void *vars[] = { + &global_settings.hotkey_tree, + &global_settings.hotkey_tree_desc_id, + &global_settings.hotkey_wps, + &global_settings.hotkey_wps_desc_id, + }; + const int num_settings = sizeof(vars) / sizeof(vars[0]); + int i; + + for (i = 0; i < num_settings; i++) + { + const struct settings_list *setting = + find_setting(vars[i], NULL); + reset_setting(setting, setting->setting); + } + + settings_save(); + splash(HZ, str(LANG_RESET_DONE_CLEAR)); +} + +MENUITEM_FUNCTION(hotkey_view, 0, ID2P(LANG_VIEW_HOTKEY), + (int(*)(void))view_hotkey_info, NULL, + NULL, Icon_NOICON); +MENUITEM_FUNCTION(hotkey_reset, 0, ID2P(LANG_RESET), + (int(*)(void))reset_hotkey_settings, NULL, + NULL, Icon_NOICON); +MAKE_MENU(hotkey_menu, ID2P(LANG_HOTKEY), 0, Icon_NOICON, + &hotkey_view, &hotkey_reset); +#endif /*have_hotkey */ +/* HOTKEY MENU */ +/***********************************/ + + /***********************************/ /* SETTINGS MENU */ static int language_browse(void) @@ -415,7 +471,10 @@ MAKE_MENU(settings_menu_item, ID2P(LANG_GENERAL_SETTINGS), 0, &tagcache_menu, #endif &display_menu, &system_menu, - &bookmark_settings_menu, &browse_langs, &voice_settings_menu + &bookmark_settings_menu, &browse_langs, &voice_settings_menu, +#ifdef HAVE_HOTKEY + &hotkey_menu, +#endif ); /* SETTINGS MENU */ /***********************************/ diff --git a/apps/onplay.c b/apps/onplay.c index f9c75ab253..5a28c53cd4 100644 --- a/apps/onplay.c +++ b/apps/onplay.c @@ -528,7 +528,7 @@ static int remove_dir(char* dirname, int len) /* share code for file and directory deletion, saves space */ -static bool delete_handler(bool is_dir) +static bool delete_file_dir(void) { char file_to_delete[MAX_PATH]; strcpy(file_to_delete, selected_file); @@ -551,7 +551,7 @@ static bool delete_handler(bool is_dir) splash(0, str(LANG_DELETING)); int res; - if (is_dir) + if (selected_file_attr & ATTR_DIRECTORY) /* true if directory */ { char pathname[MAX_PATH]; /* space to go deep */ cpu_boost(true); @@ -568,16 +568,6 @@ static bool delete_handler(bool is_dir) return (res == 0); } -static bool delete_file(void) -{ - return delete_handler(false); -} - -static bool delete_dir(void) -{ - return delete_handler(true); -} - static bool rename_file(void) { char newname[MAX_PATH]; @@ -988,9 +978,9 @@ MENUITEM_FUNCTION(clipboard_copy_item, 0, ID2P(LANG_COPY), MENUITEM_FUNCTION(clipboard_paste_item, 0, ID2P(LANG_PASTE), clipboard_paste, NULL, clipboard_callback, Icon_NOICON); MENUITEM_FUNCTION(delete_file_item, 0, ID2P(LANG_DELETE), - delete_file, NULL, clipboard_callback, Icon_NOICON); + delete_file_dir, NULL, clipboard_callback, Icon_NOICON); MENUITEM_FUNCTION(delete_dir_item, 0, ID2P(LANG_DELETE_DIR), - delete_dir, NULL, clipboard_callback, Icon_NOICON); + delete_file_dir, NULL, clipboard_callback, Icon_NOICON); MENUITEM_FUNCTION(create_dir_item, 0, ID2P(LANG_CREATE_DIR), create_dir, NULL, clipboard_callback, Icon_NOICON); @@ -1180,19 +1170,205 @@ static int onplaymenu_callback(int action,const struct menu_item_ex *this_item) } return action; } -int onplay(char* file, int attr, int from) + +#ifdef HAVE_HOTKEY +/* direct function calls, no need for menu callbacks */ +static bool delete_item(void) +{ +#ifdef HAVE_MULTIVOLUME + /* no delete for volumes */ + if ((selected_file_attr & FAT_ATTR_VOLUME) || + (selected_file_attr & ATTR_VOLUME)) + return false; +#endif + return delete_file_dir(); +} + +static bool open_with(void) +{ + /* only open files */ + if (selected_file_attr & ATTR_DIRECTORY) + return false; +#ifdef HAVE_MULTIVOLUME + if (selected_file_attr & ATTR_VOLUME) + return false; +#endif + return list_viewers(); +} + +extern const struct menu_item_ex *selected_menu_item; +extern bool hotkey_settable_menu; + +#define HOT_MASK 0x0FF +#define HOT_WPS 0x100 +#define HOT_TREE 0x200 + +struct hotkey_assignment { + int item; + struct menu_func func; + int return_code; + const struct menu_item_ex *menu_addr; +}; + +#define HOTKEY_FUNC(func, param) {{(void *)func}, param} + +/* Any desired hotkey functions go here... */ +enum hotkey_settings { + HOTKEY_OFF = 0, + HOTKEY_VIEW_PLAYLIST = 1, + HOTKEY_SHOW_TRACK_INFO, + HOTKEY_PITCHSCREEN, + HOTKEY_OPEN_WITH, + HOTKEY_DELETE, + HOTKEY_INSERT, +}; + +/* ... and here. Order is not important. */ +static struct hotkey_assignment hotkey_items[] = { + { HOTKEY_VIEW_PLAYLIST | HOT_WPS, + HOTKEY_FUNC(NULL, NULL), + ONPLAY_PLAYLIST, &view_cur_playlist }, + { HOTKEY_SHOW_TRACK_INFO| HOT_WPS, + HOTKEY_FUNC(browse_id3, NULL), + ONPLAY_RELOAD_DIR, &browse_id3_item }, +#ifdef HAVE_PITCHSCREEN + { HOTKEY_PITCHSCREEN | HOT_WPS, + HOTKEY_FUNC(gui_syncpitchscreen_run, NULL), + ONPLAY_RELOAD_DIR, &pitch_screen_item }, +#endif + { HOTKEY_OPEN_WITH | HOT_WPS | HOT_TREE, + HOTKEY_FUNC(open_with, NULL), + ONPLAY_RELOAD_DIR, &list_viewers_item }, + { HOTKEY_DELETE | HOT_WPS | HOT_TREE, + HOTKEY_FUNC(delete_item, NULL), + ONPLAY_RELOAD_DIR, &delete_file_item }, + { HOTKEY_DELETE | HOT_TREE, + HOTKEY_FUNC(delete_item, NULL), + ONPLAY_RELOAD_DIR, &delete_dir_item }, + { HOTKEY_INSERT | HOT_TREE, + HOTKEY_FUNC(playlist_insert_func, (intptr_t*)PLAYLIST_INSERT), + ONPLAY_START_PLAY, &i_pl_item }, +}; + +static const int num_hotkey_items = sizeof(hotkey_items) / sizeof(hotkey_items[0]); + +/* Execute the hotkey function, if listed for this screen */ +static int execute_hotkey(bool is_wps) +{ + int i; + struct hotkey_assignment *this_item; + const int context = is_wps ? HOT_WPS : HOT_TREE; + const int this_hotkey = (is_wps ? global_settings.hotkey_wps : + global_settings.hotkey_tree); + + /* search assignment struct for a match for the hotkey setting */ + for (i = 0; i < num_hotkey_items; i++) + { + this_item = &hotkey_items[i]; + if ((this_item->item & context) && + ((this_item->item & HOT_MASK) == this_hotkey)) + { + /* run the associated function (with optional param), if any */ + const struct menu_func func = this_item->func; + if (func.function != NULL) + { + if (func.param != NULL) + (*(func.function_w_param))(func.param); + else + (*(func.function))(); + } + /* return with the associated code */ + return this_item->return_code; + } + } + + /* no valid hotkey set */ + splash(HZ, ID2P(LANG_HOTKEY_NOT_SET)); + return ONPLAY_RELOAD_DIR; +} + +/* Set the hotkey to the current context menu function, if listed */ +static void set_hotkey(bool is_wps) +{ + int i; + struct hotkey_assignment *this_item; + const int context = is_wps ? HOT_WPS : HOT_TREE; + int *hk_func = is_wps ? &global_settings.hotkey_wps : + &global_settings.hotkey_tree, + *hk_desc = is_wps ? &global_settings.hotkey_wps_desc_id : + &global_settings.hotkey_tree_desc_id; + int this_hk, + this_id; + bool match_found = false; + + /* search assignment struct for a function that matches the current menu item */ + for (i = 0; i < num_hotkey_items; i++) + { + this_item = &hotkey_items[i]; + if ((this_item->item & context) && + (this_item->menu_addr == selected_menu_item)) + { + this_hk = this_item->item & HOT_MASK; + this_id = P2ID((selected_menu_item->callback_and_desc)->desc); + match_found = true; + break; + } + } + + /* ignore the hotkey if no match found or no change to setting */ + if (!match_found || (this_hk == *hk_func)) return; + + char line1_buf[100]; + char line2_buf[101]; + char *line1 = line1_buf; + char *line2 = line2_buf; + char **line1_ptr = &line1; + char **line2_ptr = &line2; + const struct text_message message={(const char **)line2_ptr, 1}; + const struct text_message yes_message={(const char **)line1_ptr, 1}; + + snprintf(line1, 100, str(LANG_SET_HOTKEY), str(this_id)); + strcat(strcpy(line2, line1), "?"); + + /* confirm the hotkey setting change */ + if(gui_syncyesno_run(&message, &yes_message, NULL)==YESNO_YES) + { + /* store the hotkey settings */ + *hk_func = this_hk; + *hk_desc = this_id; + + settings_save(); + splash(HZ*2, line1); + } +} +#endif /* HOTKEY */ + +int onplay(char* file, int attr, int from, bool hotkey) { const struct menu_item_ex *menu; onplay_result = ONPLAY_OK; context = from; selected_file = file; selected_file_attr = attr; +#ifdef HAVE_HOTKEY + if (hotkey) + return execute_hotkey(context == CONTEXT_WPS); + hotkey_settable_menu = true; +#else + (void)hotkey; +#endif if (context == CONTEXT_WPS) menu = &wps_onplay_menu; else menu = &tree_onplay_menu; switch (do_menu(menu, NULL, NULL, false)) { +#ifdef HAVE_HOTKEY + hotkey_settable_menu = false; + case MENU_SELECTED_HOTKEY: + set_hotkey(context == CONTEXT_WPS); + return ONPLAY_RELOAD_DIR; +#endif case GO_TO_WPS: return ONPLAY_START_PLAY; case GO_TO_ROOT: diff --git a/apps/onplay.h b/apps/onplay.h index b0f1a187a3..4eb7c823b8 100644 --- a/apps/onplay.h +++ b/apps/onplay.h @@ -21,7 +21,7 @@ #ifndef _ONPLAY_H_ #define _ONPLAY_H_ -int onplay(char* file, int attr, int from_screen); +int onplay(char* file, int attr, int from_screen, bool hotkey); enum { ONPLAY_MAINMENU = -1, diff --git a/apps/playlist_catalog.c b/apps/playlist_catalog.c index c5d4df0684..44fd42f7f2 100644 --- a/apps/playlist_catalog.c +++ b/apps/playlist_catalog.c @@ -281,7 +281,7 @@ static int display_playlists(char* playlist, bool view) sel_file); if (onplay(playlist, FILE_ATTR_M3U, - CONTEXT_TREE) != ONPLAY_OK) + CONTEXT_TREE, false) != ONPLAY_OK) { result = 0; exit = true; diff --git a/apps/root_menu.h b/apps/root_menu.h index 4113b64495..d3ef817d5b 100644 --- a/apps/root_menu.h +++ b/apps/root_menu.h @@ -53,6 +53,7 @@ enum { GO_TO_BROWSEPLUGINS, GO_TO_TIMESCREEN, GO_TO_PLAYLIST_VIEWER, + MENU_SELECTED_HOTKEY, }; extern const struct menu_item_ex root_menu_; diff --git a/apps/settings.h b/apps/settings.h index 62f85254aa..029f056da7 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -816,6 +816,13 @@ struct user_settings bool morse_input; /* text input method setting */ #endif +#ifdef HAVE_HOTKEY + int hotkey_wps; + int hotkey_wps_desc_id; + int hotkey_tree; + int hotkey_tree_desc_id; +#endif + }; /** global variables **/ diff --git a/apps/settings_list.c b/apps/settings_list.c index 2638eac5a0..2492178577 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -1660,6 +1660,13 @@ const struct settings_list settings[] = { #ifdef HAVE_MORSE_INPUT OFFON_SETTING(0, morse_input, LANG_MORSE_INPUT, false, "morse input", NULL), #endif + +#ifdef HAVE_HOTKEY + CHOICE_SETTING(0, hotkey_wps, 0, 1, "hotkey wps", 0, NULL, 0), + CHOICE_SETTING(0, hotkey_wps_desc_id, 0, LANG_VIEW_DYNAMIC_PLAYLIST, "hotkey wps desc id", 0, NULL, 0), + CHOICE_SETTING(0, hotkey_tree, 0, 0, "hotkey tree", 0, NULL, 0), + CHOICE_SETTING(0, hotkey_tree_desc_id, 0, LANG_OFF, "hotkey tree desc id", 0, NULL, 0), +#endif }; const int nb_settings = sizeof(settings)/sizeof(*settings); diff --git a/apps/tree.c b/apps/tree.c index 9053dcfcdb..c8234d5e97 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -757,12 +757,14 @@ static int dirbrowse() #endif case ACTION_STD_CONTEXT: + case ACTION_TREE_HOTKEY: { + bool hotkey = button == ACTION_TREE_HOTKEY; int onplay_result; int attr = 0; if(!numentries) - onplay_result = onplay(NULL, 0, curr_context); + onplay_result = onplay(NULL, 0, curr_context, hotkey); else { #ifdef HAVE_TAGCACHE if (id3db) @@ -788,7 +790,7 @@ static int dirbrowse() snprintf(buf, sizeof buf, "/%s", dircache[tc.selected_item].name); } - onplay_result = onplay(buf, attr, curr_context); + onplay_result = onplay(buf, attr, curr_context, hotkey); } switch (onplay_result) { diff --git a/firmware/export/config/archosfmrecorder.h b/firmware/export/config/archosfmrecorder.h index d9f3a95f3e..b64cc2db01 100644 --- a/firmware/export/config/archosfmrecorder.h +++ b/firmware/export/config/archosfmrecorder.h @@ -140,3 +140,5 @@ #define MIN_CONTRAST_SETTING 5 #define MAX_CONTRAST_SETTING 63 +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/archosondiofm.h b/firmware/export/config/archosondiofm.h index c49f11a473..39133ad789 100644 --- a/firmware/export/config/archosondiofm.h +++ b/firmware/export/config/archosondiofm.h @@ -140,3 +140,5 @@ #define MIN_CONTRAST_SETTING 5 #define MAX_CONTRAST_SETTING 63 +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/archosondiosp.h b/firmware/export/config/archosondiosp.h index 867bc1358c..0dac0b2a61 100644 --- a/firmware/export/config/archosondiosp.h +++ b/firmware/export/config/archosondiosp.h @@ -124,3 +124,5 @@ #define MIN_CONTRAST_SETTING 5 #define MAX_CONTRAST_SETTING 63 +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/archosplayer.h b/firmware/export/config/archosplayer.h index c60ee6a071..f5e120efef 100644 --- a/firmware/export/config/archosplayer.h +++ b/firmware/export/config/archosplayer.h @@ -103,3 +103,5 @@ #define HAVE_SERIAL +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/archosrecorder.h b/firmware/export/config/archosrecorder.h index 9a4b14ac9b..38141e3342 100644 --- a/firmware/export/config/archosrecorder.h +++ b/firmware/export/config/archosrecorder.h @@ -134,3 +134,5 @@ #define MAX_CONTRAST_SETTING 63 #define HAVE_SERIAL +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/archosrecorderv2.h b/firmware/export/config/archosrecorderv2.h index c530fa5815..08ee6e83af 100644 --- a/firmware/export/config/archosrecorderv2.h +++ b/firmware/export/config/archosrecorderv2.h @@ -140,3 +140,5 @@ #define MIN_CONTRAST_SETTING 5 #define MAX_CONTRAST_SETTING 63 +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/cowond2.h b/firmware/export/config/cowond2.h index 465fe7a43b..5b9ee0d861 100644 --- a/firmware/export/config/cowond2.h +++ b/firmware/export/config/cowond2.h @@ -169,3 +169,5 @@ #define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTDIR "/.rockbox" +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/creativezv.h b/firmware/export/config/creativezv.h index eff5a506c0..5bd8c9fd11 100644 --- a/firmware/export/config/creativezv.h +++ b/firmware/export/config/creativezv.h @@ -165,3 +165,5 @@ #define USB_PRODUCT_ID 0x4133 #define USB_NUM_ENDPOINTS 7 +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/gigabeatfx.h b/firmware/export/config/gigabeatfx.h index 363312a415..71d949ae53 100644 --- a/firmware/export/config/gigabeatfx.h +++ b/firmware/export/config/gigabeatfx.h @@ -186,3 +186,5 @@ #define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTDIR "/.rockbox" +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/gigabeats.h b/firmware/export/config/gigabeats.h index 7f55797a07..253cd6b46d 100644 --- a/firmware/export/config/gigabeats.h +++ b/firmware/export/config/gigabeats.h @@ -214,3 +214,5 @@ #define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTDIR "/.rockbox" +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/gogearhdd1630.h b/firmware/export/config/gogearhdd1630.h index 8bb14801b0..84e408ce64 100644 --- a/firmware/export/config/gogearhdd1630.h +++ b/firmware/export/config/gogearhdd1630.h @@ -205,3 +205,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/gogearhdd6330.h b/firmware/export/config/gogearhdd6330.h index 26da200ce1..b17d1e1ab4 100644 --- a/firmware/export/config/gogearhdd6330.h +++ b/firmware/export/config/gogearhdd6330.h @@ -200,3 +200,5 @@ #define ICODE_ATTR_TREMOR_NOT_MDCT +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/gogearsa9200.h b/firmware/export/config/gogearsa9200.h index d9b9462880..09fa4fece5 100644 --- a/firmware/export/config/gogearsa9200.h +++ b/firmware/export/config/gogearsa9200.h @@ -194,3 +194,5 @@ #define INCLUDE_TIMEOUT_API +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/iaudio7.h b/firmware/export/config/iaudio7.h index 44a6f84b0a..6698e13931 100644 --- a/firmware/export/config/iaudio7.h +++ b/firmware/export/config/iaudio7.h @@ -160,3 +160,5 @@ #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/iaudiom3.h b/firmware/export/config/iaudiom3.h index 99c4605be0..96b4ada136 100644 --- a/firmware/export/config/iaudiom3.h +++ b/firmware/export/config/iaudiom3.h @@ -169,3 +169,6 @@ #define DEFAULT_CONTRAST_SETTING 24 #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/iaudiom5.h b/firmware/export/config/iaudiom5.h index 03add43dbf..2bae6fed2d 100644 --- a/firmware/export/config/iaudiom5.h +++ b/firmware/export/config/iaudiom5.h @@ -190,3 +190,6 @@ #define DEFAULT_REMOTE_CONTRAST_SETTING 24 /* Match boot contrast */ #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/iaudiox5.h b/firmware/export/config/iaudiox5.h index 9497cbeab2..e332fe3728 100644 --- a/firmware/export/config/iaudiox5.h +++ b/firmware/export/config/iaudiox5.h @@ -205,3 +205,6 @@ #define MIN_REMOTE_CONTRAST_SETTING 10 #define MAX_REMOTE_CONTRAST_SETTING 35 #define DEFAULT_REMOTE_CONTRAST_SETTING 24 /* Match boot contrast */ + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/ipod1g2g.h b/firmware/export/config/ipod1g2g.h index cde745e874..628ce91d5a 100644 --- a/firmware/export/config/ipod1g2g.h +++ b/firmware/export/config/ipod1g2g.h @@ -169,3 +169,5 @@ #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/ipod3g.h b/firmware/export/config/ipod3g.h index 2eafe8141d..c5177d33e7 100644 --- a/firmware/export/config/ipod3g.h +++ b/firmware/export/config/ipod3g.h @@ -180,3 +180,5 @@ #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/ipod4g.h b/firmware/export/config/ipod4g.h index cd71434c10..09151cb468 100644 --- a/firmware/export/config/ipod4g.h +++ b/firmware/export/config/ipod4g.h @@ -212,3 +212,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/ipodcolor.h b/firmware/export/config/ipodcolor.h index aa76f7420a..3eeed571d5 100644 --- a/firmware/export/config/ipodcolor.h +++ b/firmware/export/config/ipodcolor.h @@ -194,3 +194,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/ipodmini1g.h b/firmware/export/config/ipodmini1g.h index fc33ba3ba4..02cd798fcf 100644 --- a/firmware/export/config/ipodmini1g.h +++ b/firmware/export/config/ipodmini1g.h @@ -198,3 +198,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/ipodmini2g.h b/firmware/export/config/ipodmini2g.h index 35e9456d84..fd53a1564a 100644 --- a/firmware/export/config/ipodmini2g.h +++ b/firmware/export/config/ipodmini2g.h @@ -208,3 +208,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/ipodnano1g.h b/firmware/export/config/ipodnano1g.h index 82cdb37b24..18d15e449e 100644 --- a/firmware/export/config/ipodnano1g.h +++ b/firmware/export/config/ipodnano1g.h @@ -197,3 +197,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/ipodnano2g.h b/firmware/export/config/ipodnano2g.h index 989d56338d..3ce4a2926b 100644 --- a/firmware/export/config/ipodnano2g.h +++ b/firmware/export/config/ipodnano2g.h @@ -221,3 +221,5 @@ #define USB_WRITE_BUFFER_SIZE (1024*64) +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/ipodvideo.h b/firmware/export/config/ipodvideo.h index eec513320a..0b288e4512 100644 --- a/firmware/export/config/ipodvideo.h +++ b/firmware/export/config/ipodvideo.h @@ -231,3 +231,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/iriverh10.h b/firmware/export/config/iriverh10.h index 5365c83239..bda40f6659 100644 --- a/firmware/export/config/iriverh10.h +++ b/firmware/export/config/iriverh10.h @@ -191,3 +191,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/iriverh100.h b/firmware/export/config/iriverh100.h index afebe59785..62835c188e 100644 --- a/firmware/export/config/iriverh100.h +++ b/firmware/export/config/iriverh100.h @@ -216,3 +216,6 @@ #define DEFAULT_REMOTE_CONTRAST_SETTING 42 #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/iriverh10_5gb.h b/firmware/export/config/iriverh10_5gb.h index 2d8124f972..7ff09273ad 100644 --- a/firmware/export/config/iriverh10_5gb.h +++ b/firmware/export/config/iriverh10_5gb.h @@ -179,3 +179,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/iriverh120.h b/firmware/export/config/iriverh120.h index 55ef43dad2..96309e4c22 100644 --- a/firmware/export/config/iriverh120.h +++ b/firmware/export/config/iriverh120.h @@ -217,3 +217,6 @@ #define DEFAULT_REMOTE_CONTRAST_SETTING 42 #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/iriverh300.h b/firmware/export/config/iriverh300.h index 9b92c8616b..b951c198b9 100644 --- a/firmware/export/config/iriverh300.h +++ b/firmware/export/config/iriverh300.h @@ -204,3 +204,6 @@ #define MIN_REMOTE_CONTRAST_SETTING 5 #define MAX_REMOTE_CONTRAST_SETTING 63 #define DEFAULT_REMOTE_CONTRAST_SETTING 42 + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/iriverifp7xx.h b/firmware/export/config/iriverifp7xx.h index a4e4859dc0..ee8fb04841 100644 --- a/firmware/export/config/iriverifp7xx.h +++ b/firmware/export/config/iriverifp7xx.h @@ -122,3 +122,5 @@ #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/logikdax.h b/firmware/export/config/logikdax.h index 8fbd064306..7d8a51f872 100644 --- a/firmware/export/config/logikdax.h +++ b/firmware/export/config/logikdax.h @@ -145,3 +145,5 @@ #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/lyreproto1.h b/firmware/export/config/lyreproto1.h index 250b8e2c00..1413adc7e3 100644 --- a/firmware/export/config/lyreproto1.h +++ b/firmware/export/config/lyreproto1.h @@ -101,3 +101,5 @@ #define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTDIR "/.rockbox" +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/meizum3.h b/firmware/export/config/meizum3.h index 06720695eb..58f141c4cb 100644 --- a/firmware/export/config/meizum3.h +++ b/firmware/export/config/meizum3.h @@ -178,3 +178,5 @@ #define MAX_BRIGHTNESS_SETTING 15 #define DEFAULT_BRIGHTNESS_SETTING 10 +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/meizum6sl.h b/firmware/export/config/meizum6sl.h index ffa8903526..521dc97488 100644 --- a/firmware/export/config/meizum6sl.h +++ b/firmware/export/config/meizum6sl.h @@ -176,3 +176,5 @@ #define MAX_BRIGHTNESS_SETTING 13 /* 3/16 (18.75%) */ #define DEFAULT_BRIGHTNESS_SETTING 8 /* 8/16 (50.00%) = x5 boot default */ +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/meizum6sp.h b/firmware/export/config/meizum6sp.h index 1cba45d70a..11716f6ecd 100644 --- a/firmware/export/config/meizum6sp.h +++ b/firmware/export/config/meizum6sp.h @@ -185,3 +185,5 @@ #define MAX_BRIGHTNESS_SETTING 13 /* 3/16 (18.75%) */ #define DEFAULT_BRIGHTNESS_SETTING 8 /* 8/16 (50.00%) = x5 boot default */ +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/mini2440.h b/firmware/export/config/mini2440.h index 5dad250930..7ece948d80 100644 --- a/firmware/export/config/mini2440.h +++ b/firmware/export/config/mini2440.h @@ -154,3 +154,5 @@ #define BOOTFILE "rockbox." BOOTFILE_EXT #define BOOTDIR "/.rockbox" +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/mrobe100.h b/firmware/export/config/mrobe100.h index 2bbb03919d..1fdd4ba6d4 100644 --- a/firmware/export/config/mrobe100.h +++ b/firmware/export/config/mrobe100.h @@ -205,3 +205,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/mrobe500.h b/firmware/export/config/mrobe500.h index 96e25c9247..0f443ebc4f 100644 --- a/firmware/export/config/mrobe500.h +++ b/firmware/export/config/mrobe500.h @@ -256,3 +256,5 @@ #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/ondavx747.h b/firmware/export/config/ondavx747.h index 36e787a32b..ae80cac562 100644 --- a/firmware/export/config/ondavx747.h +++ b/firmware/export/config/ondavx747.h @@ -218,3 +218,5 @@ No access to the NAND yet.. #define USB_VENDOR_ID 0x07C4 #define USB_PRODUCT_ID 0xA4A5 +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/ondavx767.h b/firmware/export/config/ondavx767.h index 9c5248a6a1..19bb7ed580 100644 --- a/firmware/export/config/ondavx767.h +++ b/firmware/export/config/ondavx767.h @@ -165,3 +165,5 @@ #define USB_VENDOR_ID 0x07C4 #define USB_PRODUCT_ID 0xA4A5 +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/ondavx777.h b/firmware/export/config/ondavx777.h index 200d14879c..a2ad15533a 100644 --- a/firmware/export/config/ondavx777.h +++ b/firmware/export/config/ondavx777.h @@ -205,3 +205,5 @@ No access to the NAND yet.. #define USB_VENDOR_ID 0x07C4 #define USB_PRODUCT_ID 0xA4A5 +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/samsungyh820.h b/firmware/export/config/samsungyh820.h index 0ca244ae39..001acd8992 100644 --- a/firmware/export/config/samsungyh820.h +++ b/firmware/export/config/samsungyh820.h @@ -186,3 +186,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/samsungyh920.h b/firmware/export/config/samsungyh920.h index a6a57f7227..051fa2c1f9 100644 --- a/firmware/export/config/samsungyh920.h +++ b/firmware/export/config/samsungyh920.h @@ -192,3 +192,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/samsungyh925.h b/firmware/export/config/samsungyh925.h index c19901c019..7f24f93581 100644 --- a/firmware/export/config/samsungyh925.h +++ b/firmware/export/config/samsungyh925.h @@ -190,3 +190,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/samsungyps3.h b/firmware/export/config/samsungyps3.h index fd8fde6f6c..0eba4a27d5 100644 --- a/firmware/export/config/samsungyps3.h +++ b/firmware/export/config/samsungyps3.h @@ -180,3 +180,5 @@ #define MAX_BRIGHTNESS_SETTING 15 #define DEFAULT_BRIGHTNESS_SETTING 10 +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/sansac100.h b/firmware/export/config/sansac100.h index a332bf5670..fc298b01d8 100644 --- a/firmware/export/config/sansac100.h +++ b/firmware/export/config/sansac100.h @@ -126,3 +126,5 @@ #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/sansac200.h b/firmware/export/config/sansac200.h index 0e0ac01f2f..f01c664533 100644 --- a/firmware/export/config/sansac200.h +++ b/firmware/export/config/sansac200.h @@ -205,3 +205,6 @@ #define DEFAULT_REC_MIC_GAIN 23 #define DEFAULT_REC_LEFT_GAIN 23 #define DEFAULT_REC_RIGHT_GAIN 23 + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/sansac200v2.h b/firmware/export/config/sansac200v2.h index aef789380d..b9a86cd023 100644 --- a/firmware/export/config/sansac200v2.h +++ b/firmware/export/config/sansac200v2.h @@ -201,3 +201,6 @@ #define DEFAULT_REC_MIC_GAIN 23 #define DEFAULT_REC_LEFT_GAIN 23 #define DEFAULT_REC_RIGHT_GAIN 23 + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/sansaclip.h b/firmware/export/config/sansaclip.h index 7d82f80284..12c67bf35f 100644 --- a/firmware/export/config/sansaclip.h +++ b/firmware/export/config/sansaclip.h @@ -199,3 +199,6 @@ #define DEFAULT_REC_MIC_GAIN 23 #define DEFAULT_REC_LEFT_GAIN 23 #define DEFAULT_REC_RIGHT_GAIN 23 + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/sansaclipplus.h b/firmware/export/config/sansaclipplus.h index 76be3cae7f..c5e6aa5c34 100644 --- a/firmware/export/config/sansaclipplus.h +++ b/firmware/export/config/sansaclipplus.h @@ -211,3 +211,6 @@ #define DEFAULT_REC_MIC_GAIN 23 #define DEFAULT_REC_LEFT_GAIN 23 #define DEFAULT_REC_RIGHT_GAIN 23 + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/sansaclipv2.h b/firmware/export/config/sansaclipv2.h index 1736d6fe12..30f53dd58e 100644 --- a/firmware/export/config/sansaclipv2.h +++ b/firmware/export/config/sansaclipv2.h @@ -207,3 +207,6 @@ #define DEFAULT_REC_MIC_GAIN 23 #define DEFAULT_REC_LEFT_GAIN 23 #define DEFAULT_REC_RIGHT_GAIN 23 + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/sansae200.h b/firmware/export/config/sansae200.h index 687878ce06..8f4f3235dc 100644 --- a/firmware/export/config/sansae200.h +++ b/firmware/export/config/sansae200.h @@ -214,3 +214,5 @@ #define IRAMORIG 0x40004000 #endif +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/sansae200v2.h b/firmware/export/config/sansae200v2.h index b06aba1f8d..c51eee38a7 100644 --- a/firmware/export/config/sansae200v2.h +++ b/firmware/export/config/sansae200v2.h @@ -211,3 +211,6 @@ #define DEFAULT_REC_MIC_GAIN 23 #define DEFAULT_REC_LEFT_GAIN 23 #define DEFAULT_REC_RIGHT_GAIN 23 + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/sansafuze.h b/firmware/export/config/sansafuze.h index 7e722d6e47..0005939d1b 100644 --- a/firmware/export/config/sansafuze.h +++ b/firmware/export/config/sansafuze.h @@ -209,3 +209,5 @@ #define INCLUDE_TIMEOUT_API +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/sansafuzev2.h b/firmware/export/config/sansafuzev2.h index fcb4a676d3..b71f852007 100644 --- a/firmware/export/config/sansafuzev2.h +++ b/firmware/export/config/sansafuzev2.h @@ -206,3 +206,5 @@ #define INCLUDE_TIMEOUT_API +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/sansam200.h b/firmware/export/config/sansam200.h index 0f071e18ab..e3109f86b8 100644 --- a/firmware/export/config/sansam200.h +++ b/firmware/export/config/sansam200.h @@ -134,3 +134,5 @@ #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/sansam200v4.h b/firmware/export/config/sansam200v4.h index 0d593b4d97..1914b4abf9 100644 --- a/firmware/export/config/sansam200v4.h +++ b/firmware/export/config/sansam200v4.h @@ -163,3 +163,5 @@ #define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */ +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/sansaview.h b/firmware/export/config/sansaview.h index 4111b8380a..0752b6c61d 100644 --- a/firmware/export/config/sansaview.h +++ b/firmware/export/config/sansaview.h @@ -201,3 +201,6 @@ #define DEFAULT_REC_MIC_GAIN 23 #define DEFAULT_REC_LEFT_GAIN 23 #define DEFAULT_REC_RIGHT_GAIN 23 + +/* Define this if a programmable hotkey is mapped */ +#define HAVE_HOTKEY diff --git a/firmware/export/config/tatungtpj1022.h b/firmware/export/config/tatungtpj1022.h index aca131df8b..a0a757b24b 100644 --- a/firmware/export/config/tatungtpj1022.h +++ b/firmware/export/config/tatungtpj1022.h @@ -142,3 +142,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/vibe500.h b/firmware/export/config/vibe500.h index 37e78f7b61..805f250ab1 100644 --- a/firmware/export/config/vibe500.h +++ b/firmware/export/config/vibe500.h @@ -199,3 +199,6 @@ * writes appear to be ~25% slower. */ #define HAVE_ATA_DMA + +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/zenvisionm30gb.h b/firmware/export/config/zenvisionm30gb.h index d8005bb83d..16309e8673 100644 --- a/firmware/export/config/zenvisionm30gb.h +++ b/firmware/export/config/zenvisionm30gb.h @@ -174,3 +174,5 @@ #define BUTTON_DEBUG */ +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY diff --git a/firmware/export/config/zenvisionm60gb.h b/firmware/export/config/zenvisionm60gb.h index bdede47962..6846f13258 100644 --- a/firmware/export/config/zenvisionm60gb.h +++ b/firmware/export/config/zenvisionm60gb.h @@ -166,3 +166,5 @@ #define USB_PRODUCT_ID 0x4133 #define USB_NUM_ENDPOINTS 7 +/* Define this if a programmable hotkey is mapped */ +//#define HAVE_HOTKEY