diff options
author | Jeffrey Goode <jeffg7@gmail.com> | 2010-04-01 03:14:44 +0000 |
---|---|---|
committer | Jeffrey Goode <jeffg7@gmail.com> | 2010-04-01 03:14:44 +0000 |
commit | d5e6bc7a8c413218ec1372fd54157e9639ab67b4 (patch) | |
tree | 2be93c700ef9c5e8f85cc7dbbfab7f9f842c92f0 /apps | |
parent | 39e78993f317349dacfc4e8d1abb703117636696 (diff) | |
download | rockbox-d5e6bc7a8c413218ec1372fd54157e9639ab67b4.tar.gz rockbox-d5e6bc7a8c413218ec1372fd54157e9639ab67b4.zip |
FS#11081 - Hotkey patch. Many targets supported, but some keymaps need work before they can be switched on
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25414 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
39 files changed, 493 insertions, 32 deletions
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 { | |||
136 | ACTION_WPS_ABSETA_PREVDIR, /* these should be safe to put together seen as */ | 136 | ACTION_WPS_ABSETA_PREVDIR, /* these should be safe to put together seen as */ |
137 | ACTION_WPS_ABSETB_NEXTDIR, /* you shouldnt want to change dir in ab-mode */ | 137 | ACTION_WPS_ABSETB_NEXTDIR, /* you shouldnt want to change dir in ab-mode */ |
138 | ACTION_WPS_ABRESET, | 138 | ACTION_WPS_ABRESET, |
139 | ACTION_WPS_HOTKEY, | ||
139 | 140 | ||
140 | /* list and tree page up/down */ | 141 | /* list and tree page up/down */ |
141 | ACTION_LISTTREE_PGUP,/* optional */ | 142 | ACTION_LISTTREE_PGUP,/* optional */ |
@@ -151,6 +152,7 @@ enum { | |||
151 | ACTION_TREE_PGRIGHT,/* optional */ | 152 | ACTION_TREE_PGRIGHT,/* optional */ |
152 | ACTION_TREE_STOP, | 153 | ACTION_TREE_STOP, |
153 | ACTION_TREE_WPS, | 154 | ACTION_TREE_WPS, |
155 | ACTION_TREE_HOTKEY, | ||
154 | 156 | ||
155 | /* radio */ | 157 | /* radio */ |
156 | ACTION_FM_MENU, | 158 | 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 | |||
70 | remote_button_hold | 70 | remote_button_hold |
71 | #endif | 71 | #endif |
72 | 72 | ||
73 | #if defined(HAVE_HOTKEY) | ||
74 | hotkey | ||
75 | #endif | ||
76 | |||
73 | #if defined(HAVE_LCD_BITMAP) | 77 | #if defined(HAVE_LCD_BITMAP) |
74 | lcd_bitmap | 78 | lcd_bitmap |
75 | #endif | 79 | #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) | |||
888 | switch(button) | 888 | switch(button) |
889 | { | 889 | { |
890 | case ACTION_WPS_CONTEXT: | 890 | case ACTION_WPS_CONTEXT: |
891 | case ACTION_WPS_HOTKEY: | ||
891 | { | 892 | { |
893 | bool hotkey = button == ACTION_WPS_HOTKEY; | ||
892 | gwps_leave_wps(); | 894 | gwps_leave_wps(); |
893 | int retval = onplay(wps_state.id3->path, | 895 | int retval = onplay(wps_state.id3->path, |
894 | FILE_ATTR_AUDIO, CONTEXT_WPS); | 896 | FILE_ATTR_AUDIO, CONTEXT_WPS, hotkey); |
895 | /* if music is stopped in the context menu we want to exit the wps */ | 897 | /* if music is stopped in the context menu we want to exit the wps */ |
896 | if (retval == ONPLAY_MAINMENU | 898 | if (retval == ONPLAY_MAINMENU |
897 | || !audio_status()) | 899 | || !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[] = { | |||
75 | { ACTION_WPS_MENU, BUTTON_F1|BUTTON_REL, BUTTON_F1 }, | 75 | { ACTION_WPS_MENU, BUTTON_F1|BUTTON_REL, BUTTON_F1 }, |
76 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT }, | 76 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT }, |
77 | { ACTION_WPS_QUICKSCREEN, BUTTON_F2|BUTTON_REPEAT, BUTTON_NONE }, | 77 | { ACTION_WPS_QUICKSCREEN, BUTTON_F2|BUTTON_REPEAT, BUTTON_NONE }, |
78 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_F2|BUTTON_REL, BUTTON_F2 }, | 78 | { ACTION_WPS_HOTKEY, BUTTON_F2|BUTTON_REL, BUTTON_F2 }, |
79 | { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON }, | 79 | { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON }, |
80 | { ACTION_WPS_ID3SCREEN, BUTTON_F1|BUTTON_ON, BUTTON_NONE }, | 80 | { ACTION_WPS_ID3SCREEN, BUTTON_F1|BUTTON_ON, BUTTON_NONE }, |
81 | { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_UP, BUTTON_ON }, | 81 | { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_UP, BUTTON_ON }, |
@@ -106,6 +106,7 @@ static const struct button_mapping button_context_settings[] = { | |||
106 | static const struct button_mapping button_context_tree[] = { | 106 | static const struct button_mapping button_context_tree[] = { |
107 | { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, | 107 | { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, |
108 | { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, | 108 | { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, |
109 | { ACTION_TREE_HOTKEY, BUTTON_F2|BUTTON_REL, BUTTON_F2 }, | ||
109 | { ACTION_NONE, BUTTON_ON, BUTTON_NONE }, | 110 | { ACTION_NONE, BUTTON_ON, BUTTON_NONE }, |
110 | { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON }, | 111 | { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON }, |
111 | { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_ON|BUTTON_UP }, | 112 | { 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[] = { | |||
69 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_VOLUP, BUTTON_SELECT }, | 69 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_VOLUP, BUTTON_SELECT }, |
70 | { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_VOLDOWN, BUTTON_SELECT }, | 70 | { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_VOLDOWN, BUTTON_SELECT }, |
71 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | 71 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, |
72 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE }, | 72 | { ACTION_WPS_HOTKEY, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE }, |
73 | { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | 73 | { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, |
74 | 74 | ||
75 | LAST_ITEM_IN_LIST | 75 | LAST_ITEM_IN_LIST |
@@ -104,6 +104,7 @@ static const struct button_mapping button_context_list[] = { | |||
104 | static const struct button_mapping button_context_tree[] = { | 104 | static const struct button_mapping button_context_tree[] = { |
105 | { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REL, BUTTON_UP }, | 105 | { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REL, BUTTON_UP }, |
106 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 106 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
107 | { ACTION_TREE_HOTKEY, BUTTON_SELECT|BUTTON_DOWN, BUTTON_NONE }, | ||
107 | 108 | ||
108 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), | 109 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), |
109 | }; /* button_context_tree */ | 110 | }; /* 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[] = { | |||
81 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | 81 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, |
82 | { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN, BUTTON_NONE }, | 82 | { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN, BUTTON_NONE }, |
83 | { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, | 83 | { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, |
84 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_REC|BUTTON_REL, BUTTON_REC }, | 84 | { ACTION_WPS_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, |
85 | 85 | ||
86 | LAST_ITEM_IN_LIST | 86 | LAST_ITEM_IN_LIST |
87 | }; /* button_context_wps */ | 87 | }; /* button_context_wps */ |
@@ -123,6 +123,7 @@ static const struct button_mapping button_context_list[] = { | |||
123 | 123 | ||
124 | static const struct button_mapping button_context_tree[] = { | 124 | static const struct button_mapping button_context_tree[] = { |
125 | { ACTION_TREE_WPS, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | 125 | { ACTION_TREE_WPS, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, |
126 | { ACTION_TREE_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, | ||
126 | 127 | ||
127 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), | 128 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), |
128 | }; /* button_context_tree */ | 129 | }; /* 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[] = { | |||
82 | 82 | ||
83 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT }, | 83 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT }, |
84 | { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_SELECT }, | 84 | { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_SELECT }, |
85 | #ifdef HAVE_HOTKEY | ||
86 | { ACTION_WPS_HOTKEY, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | ||
87 | #else | ||
85 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, | 88 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, |
89 | #endif | ||
86 | 90 | ||
87 | #ifndef HAS_BUTTON_HOLD /* Clip+ */ | 91 | #ifndef HAS_BUTTON_HOLD /* Clip+ */ |
88 | { ACTION_STD_KEYLOCK, BUTTON_HOME|BUTTON_SELECT, BUTTON_NONE }, | 92 | { ACTION_STD_KEYLOCK, BUTTON_HOME|BUTTON_SELECT, BUTTON_NONE }, |
@@ -131,6 +135,9 @@ static const struct button_mapping button_context_list[] = { | |||
131 | static const struct button_mapping button_context_tree[] = { | 135 | static const struct button_mapping button_context_tree[] = { |
132 | { ACTION_TREE_WPS, BUTTON_HOME|BUTTON_SELECT, BUTTON_HOME }, | 136 | { ACTION_TREE_WPS, BUTTON_HOME|BUTTON_SELECT, BUTTON_HOME }, |
133 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 137 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
138 | #ifdef HAVE_HOTKEY | ||
139 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
140 | #endif | ||
134 | 141 | ||
135 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), | 142 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), |
136 | }; /* button_context_tree */ | 143 | }; /* 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[] = { | |||
92 | 92 | ||
93 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 93 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
94 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 94 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
95 | #ifdef HAVE_HOTKEY | ||
96 | { ACTION_WPS_HOTKEY, BUTTON_POWER, BUTTON_NONE }, | ||
97 | #else | ||
95 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE }, | 98 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE }, |
99 | #endif | ||
96 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | 100 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, |
97 | 101 | ||
98 | { ACTION_WPS_ID3SCREEN, BUTTON_BACK|BUTTON_REL, BUTTON_NONE }, | 102 | { ACTION_WPS_ID3SCREEN, BUTTON_BACK|BUTTON_REL, BUTTON_NONE }, |
@@ -109,6 +113,9 @@ static const struct button_mapping button_context_tree[] = { | |||
109 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, | 113 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, |
110 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 114 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
111 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, | 115 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, |
116 | #ifdef HAVE_HOTKEY | ||
117 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
118 | #endif | ||
112 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 119 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
113 | }; /* button_context_tree */ | 120 | }; /* button_context_tree */ |
114 | 121 | ||
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[] = { | |||
91 | 91 | ||
92 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 92 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
93 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 93 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
94 | #ifdef HAVE_HOTKEY | ||
95 | { ACTION_WPS_HOTKEY, BUTTON_POWER, BUTTON_NONE }, | ||
96 | #else | ||
94 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE }, | 97 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE }, |
98 | #endif | ||
95 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | 99 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, |
96 | 100 | ||
97 | { ACTION_WPS_ID3SCREEN, BUTTON_BACK|BUTTON_REL, BUTTON_NONE }, | 101 | { ACTION_WPS_ID3SCREEN, BUTTON_BACK|BUTTON_REL, BUTTON_NONE }, |
@@ -108,6 +112,9 @@ static const struct button_mapping button_context_tree[] = { | |||
108 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, | 112 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, |
109 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 113 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
110 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, | 114 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, |
115 | #ifdef HAVE_HOTKEY | ||
116 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
117 | #endif | ||
111 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 118 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
112 | }; /* button_context_tree */ | 119 | }; /* button_context_tree */ |
113 | 120 | ||
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[] = { | |||
80 | { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, | 80 | { ACTION_WPS_QUICKSCREEN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN }, |
81 | 81 | ||
82 | { ACTION_WPS_MENU, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, | 82 | { ACTION_WPS_MENU, BUTTON_DOWN|BUTTON_REL, BUTTON_DOWN }, |
83 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_REC|BUTTON_REL, BUTTON_REC }, | 83 | { ACTION_WPS_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, |
84 | { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, | 84 | { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, |
85 | 85 | ||
86 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT }, | 86 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT }, |
@@ -115,6 +115,7 @@ static const struct button_mapping button_context_list[] = { | |||
115 | static const struct button_mapping button_context_tree[] = { | 115 | static const struct button_mapping button_context_tree[] = { |
116 | { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REL, BUTTON_UP }, | 116 | { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REL, BUTTON_UP }, |
117 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 117 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
118 | { ACTION_TREE_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, | ||
118 | 119 | ||
119 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), | 120 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), |
120 | }; /* button_context_tree */ | 121 | }; /* 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[] = { | |||
83 | 83 | ||
84 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT }, | 84 | { ACTION_WPS_PITCHSCREEN, BUTTON_SELECT|BUTTON_UP, BUTTON_SELECT }, |
85 | { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_SELECT }, | 85 | { ACTION_WPS_ID3SCREEN, BUTTON_SELECT|BUTTON_DOWN, BUTTON_SELECT }, |
86 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | 86 | { ACTION_WPS_HOTKEY, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, |
87 | 87 | ||
88 | LAST_ITEM_IN_LIST | 88 | LAST_ITEM_IN_LIST |
89 | }; /* button_context_wps */ | 89 | }; /* button_context_wps */ |
@@ -114,6 +114,7 @@ static const struct button_mapping button_context_list[] = { | |||
114 | static const struct button_mapping button_context_tree[] = { | 114 | static const struct button_mapping button_context_tree[] = { |
115 | { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REL, BUTTON_UP }, | 115 | { ACTION_TREE_WPS, BUTTON_UP|BUTTON_REL, BUTTON_UP }, |
116 | { ACTION_TREE_STOP, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME }, | 116 | { ACTION_TREE_STOP, BUTTON_HOME|BUTTON_REPEAT, BUTTON_HOME }, |
117 | { ACTION_TREE_HOTKEY, BUTTON_HOME|BUTTON_REL, BUTTON_HOME }, | ||
117 | 118 | ||
118 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), | 119 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), |
119 | }; /* button_context_tree */ | 120 | }; /* 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[] = { | |||
100 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, | 100 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, |
101 | 101 | ||
102 | { ACTION_WPS_PITCHSCREEN, BUTTON_BACK|BUTTON_UP, BUTTON_BACK }, | 102 | { ACTION_WPS_PITCHSCREEN, BUTTON_BACK|BUTTON_UP, BUTTON_BACK }, |
103 | #ifdef HAVE_HOTKEY | ||
104 | { ACTION_WPS_HOTKEY, BUTTON_BACK|BUTTON_DOWN, BUTTON_NONE }, | ||
105 | #else | ||
103 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_BACK|BUTTON_DOWN, BUTTON_NONE }, | 106 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_BACK|BUTTON_DOWN, BUTTON_NONE }, |
107 | #endif | ||
104 | 108 | ||
105 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 109 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
106 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 110 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
@@ -134,6 +138,9 @@ static const struct button_mapping button_context_tree[] = { | |||
134 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, | 138 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, |
135 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 139 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
136 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, | 140 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, |
141 | #ifdef HAVE_HOTKEY | ||
142 | // { ACTION_TREE_HOTKEY,BUTTON_NONE, BUTTON_NONE }, | ||
143 | #endif | ||
137 | 144 | ||
138 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 145 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
139 | }; /* button_context_tree */ | 146 | }; /* 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[] = { | |||
93 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, | 93 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, |
94 | 94 | ||
95 | { ACTION_WPS_PITCHSCREEN, BUTTON_A|BUTTON_UP, BUTTON_A }, | 95 | { ACTION_WPS_PITCHSCREEN, BUTTON_A|BUTTON_UP, BUTTON_A }, |
96 | #ifdef HAVE_HOTKEY | ||
97 | { ACTION_WPS_HOTKEY, BUTTON_A|BUTTON_DOWN, BUTTON_NONE }, | ||
98 | #else | ||
96 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_A|BUTTON_DOWN, BUTTON_NONE }, | 99 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_A|BUTTON_DOWN, BUTTON_NONE }, |
100 | #endif | ||
97 | 101 | ||
98 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 102 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
99 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 103 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
@@ -127,6 +131,9 @@ static const struct button_mapping button_context_tree[] = { | |||
127 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, | 131 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, |
128 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 132 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
129 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, | 133 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, |
134 | #ifdef HAVE_HOTKEY | ||
135 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
136 | #endif | ||
130 | 137 | ||
131 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 138 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
132 | }; /* button_context_tree */ | 139 | }; /* 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[] = { | |||
87 | { ACTION_WPS_CONTEXT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, | 87 | { ACTION_WPS_CONTEXT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT }, |
88 | { ACTION_WPS_QUICKSCREEN, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | 88 | { ACTION_WPS_QUICKSCREEN, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, |
89 | { ACTION_WPS_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 89 | { ACTION_WPS_MENU, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
90 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER|BUTTON_PLAY, BUTTON_NONE }, | 90 | { ACTION_WPS_HOTKEY, BUTTON_POWER|BUTTON_PLAY, BUTTON_NONE }, |
91 | { ACTION_WPS_PITCHSCREEN, BUTTON_PLAY|BUTTON_LEFT, BUTTON_PLAY }, | 91 | { ACTION_WPS_PITCHSCREEN, BUTTON_PLAY|BUTTON_LEFT, BUTTON_PLAY }, |
92 | { ACTION_WPS_ID3SCREEN, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_PLAY }, | 92 | { ACTION_WPS_ID3SCREEN, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_PLAY }, |
93 | 93 | ||
@@ -146,6 +146,7 @@ static const struct button_mapping remote_button_context_list[] = { | |||
146 | static const struct button_mapping button_context_tree[] = { | 146 | static const struct button_mapping button_context_tree[] = { |
147 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | 147 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, |
148 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | 148 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, |
149 | { ACTION_TREE_HOTKEY, BUTTON_POWER|BUTTON_PLAY, BUTTON_NONE }, | ||
149 | 150 | ||
150 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), | 151 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), |
151 | }; /* button_context_tree */ | 152 | }; /* 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[] = { | |||
92 | { ACTION_WPS_ABRESET, BUTTON_ON|BUTTON_SELECT, BUTTON_ON }, | 92 | { ACTION_WPS_ABRESET, BUTTON_ON|BUTTON_SELECT, BUTTON_ON }, |
93 | { ACTION_WPS_ID3SCREEN, BUTTON_ON|BUTTON_MODE, BUTTON_NONE }, | 93 | { ACTION_WPS_ID3SCREEN, BUTTON_ON|BUTTON_MODE, BUTTON_NONE }, |
94 | { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, | 94 | { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, |
95 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_REC|BUTTON_REL, BUTTON_REC }, | 95 | { ACTION_WPS_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, |
96 | 96 | ||
97 | LAST_ITEM_IN_LIST | 97 | LAST_ITEM_IN_LIST |
98 | }; /* button_context_wps */ | 98 | }; /* button_context_wps */ |
@@ -112,6 +112,7 @@ static const struct button_mapping button_context_tree[] = { | |||
112 | { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, | 112 | { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, |
113 | { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, | 113 | { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, |
114 | { ACTION_TREE_STOP, BUTTON_OFF|BUTTON_REPEAT, BUTTON_NONE }, | 114 | { ACTION_TREE_STOP, BUTTON_OFF|BUTTON_REPEAT, BUTTON_NONE }, |
115 | { ACTION_TREE_HOTKEY, BUTTON_REC|BUTTON_REL, BUTTON_REC }, | ||
115 | 116 | ||
116 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 117 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
117 | }; /* button_context_tree */ | 118 | }; /* 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[] = { | |||
93 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, | 93 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, |
94 | 94 | ||
95 | { ACTION_WPS_PITCHSCREEN, BUTTON_VIEW|BUTTON_UP, BUTTON_VIEW }, | 95 | { ACTION_WPS_PITCHSCREEN, BUTTON_VIEW|BUTTON_UP, BUTTON_VIEW }, |
96 | #ifdef HAVE_HOTKEY | ||
97 | { ACTION_WPS_HOTKEY, BUTTON_VIEW|BUTTON_DOWN, BUTTON_VIEW }, | ||
98 | #else | ||
96 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_VIEW|BUTTON_DOWN, BUTTON_VIEW }, | 99 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_VIEW|BUTTON_DOWN, BUTTON_VIEW }, |
100 | #endif | ||
97 | 101 | ||
98 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 102 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
99 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 103 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
@@ -127,6 +131,9 @@ static const struct button_mapping button_context_tree[] = { | |||
127 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, | 131 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, |
128 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 132 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
129 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, | 133 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, |
134 | #ifdef HAVE_HOTKEY | ||
135 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
136 | #endif | ||
130 | 137 | ||
131 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 138 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
132 | }; /* button_context_tree */ | 139 | }; /* 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[] = { | |||
93 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, | 93 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, |
94 | 94 | ||
95 | { ACTION_WPS_PITCHSCREEN, BUTTON_VIEW|BUTTON_UP, BUTTON_VIEW }, | 95 | { ACTION_WPS_PITCHSCREEN, BUTTON_VIEW|BUTTON_UP, BUTTON_VIEW }, |
96 | #ifdef HAVE_HOTKEY | ||
97 | { ACTION_WPS_HOTKEY, BUTTON_VIEW|BUTTON_DOWN, BUTTON_VIEW }, | ||
98 | #else | ||
96 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_VIEW|BUTTON_DOWN, BUTTON_VIEW }, | 99 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_VIEW|BUTTON_DOWN, BUTTON_VIEW }, |
100 | #endif | ||
97 | 101 | ||
98 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 102 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
99 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 103 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
@@ -127,6 +131,9 @@ static const struct button_mapping button_context_tree[] = { | |||
127 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, | 131 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, |
128 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 132 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
129 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, | 133 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, |
134 | #ifdef HAVE_HOTKEY | ||
135 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
136 | #endif | ||
130 | 137 | ||
131 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 138 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
132 | }; /* button_context_tree */ | 139 | }; /* 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[] = { | |||
71 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, | 71 | { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT }, |
72 | 72 | ||
73 | { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | 73 | { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, |
74 | #ifdef HAVE_HOTKEY | ||
75 | { ACTION_WPS_HOTKEY, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, | ||
76 | #else | ||
74 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, | 77 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, |
78 | #endif | ||
75 | { ACTION_WPS_STOP, BUTTON_STOP, BUTTON_NONE }, | 79 | { ACTION_WPS_STOP, BUTTON_STOP, BUTTON_NONE }, |
76 | 80 | ||
77 | LAST_ITEM_IN_LIST | 81 | LAST_ITEM_IN_LIST |
@@ -111,6 +115,9 @@ static const struct button_mapping button_context_list[] = { | |||
111 | static const struct button_mapping button_context_tree[] = { | 115 | static const struct button_mapping button_context_tree[] = { |
112 | // { ACTION_TREE_WPS, BUTTON_REC|BUTTON_VOLUP, BUTTON_REC }, | 116 | // { ACTION_TREE_WPS, BUTTON_REC|BUTTON_VOLUP, BUTTON_REC }, |
113 | // { ACTION_TREE_STOP, BUTTON_REC|BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_REC|BUTTON_VOLUP }, | 117 | // { ACTION_TREE_STOP, BUTTON_REC|BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_REC|BUTTON_VOLUP }, |
118 | #ifdef HAVE_HOTKEY | ||
119 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
120 | #endif | ||
114 | 121 | ||
115 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), | 122 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST), |
116 | }; /* button_context_tree */ | 123 | }; /* 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[] = { | |||
59 | static const struct button_mapping button_context_tree[] = { | 59 | static const struct button_mapping button_context_tree[] = { |
60 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | 60 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, |
61 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | 61 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, |
62 | { ACTION_TREE_HOTKEY, BUTTON_SELECT|BUTTON_PLAY, BUTTON_NONE }, | ||
62 | 63 | ||
63 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | 64 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) |
64 | }; /* button_context_tree */ | 65 | }; /* button_context_tree */ |
@@ -91,7 +92,7 @@ static const struct button_mapping button_context_wps[] = { | |||
91 | { ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE }, | 92 | { ACTION_WPS_VOLUP, BUTTON_SCROLL_FWD|BUTTON_REPEAT, BUTTON_NONE }, |
92 | { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, | 93 | { ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT }, |
93 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | 94 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, |
94 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_SELECT|BUTTON_PLAY, BUTTON_NONE }, | 95 | { ACTION_WPS_HOTKEY, BUTTON_SELECT|BUTTON_PLAY, BUTTON_NONE }, |
95 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 96 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
96 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 97 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
97 | 98 | ||
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[] = { | |||
292 | { ACTION_NONE, BUTTON_PLAY, BUTTON_NONE }, | 292 | { ACTION_NONE, BUTTON_PLAY, BUTTON_NONE }, |
293 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | 293 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, |
294 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | 294 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, |
295 | { ACTION_TREE_HOTKEY, BUTTON_REC|BUTTON_MODE, BUTTON_REC }, | ||
295 | 296 | ||
296 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | 297 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) |
297 | }; /* button_context_tree */ | 298 | }; /* button_context_tree */ |
@@ -352,7 +353,7 @@ static const struct button_mapping button_context_wps[] = { | |||
352 | { ACTION_WPS_CONTEXT, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE }, | 353 | { ACTION_WPS_CONTEXT, BUTTON_MODE|BUTTON_REPEAT, BUTTON_MODE }, |
353 | { ACTION_WPS_MENU, BUTTON_REC|BUTTON_REL, BUTTON_REC }, | 354 | { ACTION_WPS_MENU, BUTTON_REC|BUTTON_REL, BUTTON_REC }, |
354 | { ACTION_WPS_QUICKSCREEN, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC }, | 355 | { ACTION_WPS_QUICKSCREEN, BUTTON_REC|BUTTON_REPEAT, BUTTON_REC }, |
355 | { ACTION_WPS_VIEW_PLAYLIST,BUTTON_REC|BUTTON_MODE, BUTTON_REC }, | 356 | { ACTION_WPS_HOTKEY, BUTTON_REC|BUTTON_MODE, BUTTON_REC }, |
356 | 357 | ||
357 | LAST_ITEM_IN_LIST | 358 | LAST_ITEM_IN_LIST |
358 | }; /* button_context_wps */ | 359 | }; /* 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[] = { | |||
88 | { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, | 88 | { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, |
89 | 89 | ||
90 | { ACTION_WPS_PITCHSCREEN, BUTTON_PLAY|BUTTON_UP, BUTTON_PLAY }, | 90 | { ACTION_WPS_PITCHSCREEN, BUTTON_PLAY|BUTTON_UP, BUTTON_PLAY }, |
91 | #ifdef HAVE_HOTKEY | ||
92 | { ACTION_WPS_HOTKEY, BUTTON_PLAY|BUTTON_DOWN, BUTTON_PLAY }, | ||
93 | #else | ||
91 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_PLAY|BUTTON_DOWN, BUTTON_PLAY }, | 94 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_PLAY|BUTTON_DOWN, BUTTON_PLAY }, |
95 | #endif | ||
92 | 96 | ||
93 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 97 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
94 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 98 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
@@ -114,6 +118,9 @@ static const struct button_mapping button_context_list[] = { | |||
114 | static const struct button_mapping button_context_tree[] = { | 118 | static const struct button_mapping button_context_tree[] = { |
115 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | 119 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, |
116 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, | 120 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, |
121 | #ifdef HAVE_HOTKEY | ||
122 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
123 | #endif | ||
117 | 124 | ||
118 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 125 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
119 | }; /* button_context_tree */ | 126 | }; /* 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[] = { | |||
95 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, | 95 | { ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE }, |
96 | 96 | ||
97 | { ACTION_WPS_PITCHSCREEN, BUTTON_A|BUTTON_UP, BUTTON_A }, | 97 | { ACTION_WPS_PITCHSCREEN, BUTTON_A|BUTTON_UP, BUTTON_A }, |
98 | #ifdef HAVE_HOTKEY | ||
99 | { ACTION_WPS_HOTKEY, BUTTON_A|BUTTON_DOWN, BUTTON_NONE }, | ||
100 | #else | ||
98 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_A|BUTTON_DOWN, BUTTON_NONE }, | 101 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_A|BUTTON_DOWN, BUTTON_NONE }, |
102 | #endif | ||
99 | 103 | ||
100 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 104 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
101 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 105 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
@@ -129,6 +133,9 @@ static const struct button_mapping button_context_tree[] = { | |||
129 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, | 133 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, |
130 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 134 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
131 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, | 135 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, |
136 | #ifdef HAVE_HOTKEY | ||
137 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
138 | #endif | ||
132 | 139 | ||
133 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 140 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
134 | }; /* button_context_tree */ | 141 | }; /* 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[] = { | |||
94 | { ACTION_WPS_ABSETA_PREVDIR,BUTTON_DISPLAY|BUTTON_LEFT, BUTTON_NONE }, | 94 | { ACTION_WPS_ABSETA_PREVDIR,BUTTON_DISPLAY|BUTTON_LEFT, BUTTON_NONE }, |
95 | { ACTION_WPS_ABRESET, BUTTON_DISPLAY|BUTTON_SELECT, BUTTON_NONE }, | 95 | { ACTION_WPS_ABRESET, BUTTON_DISPLAY|BUTTON_SELECT, BUTTON_NONE }, |
96 | { ACTION_WPS_PITCHSCREEN, BUTTON_DISPLAY|BUTTON_UP, BUTTON_DISPLAY }, | 96 | { ACTION_WPS_PITCHSCREEN, BUTTON_DISPLAY|BUTTON_UP, BUTTON_DISPLAY }, |
97 | #ifdef HAVE_HOTKEY | ||
98 | { ACTION_WPS_HOTKEY, BUTTON_DISPLAY|BUTTON_DOWN, BUTTON_DISPLAY }, | ||
99 | #else | ||
97 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_DISPLAY|BUTTON_DOWN, BUTTON_DISPLAY }, | 100 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_DISPLAY|BUTTON_DOWN, BUTTON_DISPLAY }, |
101 | #endif | ||
98 | { ACTION_WPS_ID3SCREEN, BUTTON_DISPLAY|BUTTON_MENU, BUTTON_NONE }, | 102 | { ACTION_WPS_ID3SCREEN, BUTTON_DISPLAY|BUTTON_MENU, BUTTON_NONE }, |
99 | 103 | ||
100 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, | 104 | { ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT }, |
@@ -119,6 +123,9 @@ static const struct button_mapping button_context_tree[] = { | |||
119 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, | 123 | { ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE }, |
120 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, | 124 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER }, |
121 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, | 125 | { ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE }, |
126 | #ifdef HAVE_HOTKEY | ||
127 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
128 | #endif | ||
122 | 129 | ||
123 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 130 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
124 | }; /* button_context_tree */ | 131 | }; /* 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[] = { | |||
63 | { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | 63 | { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, |
64 | { ACTION_WPS_ID3SCREEN, BUTTON_MENU|BUTTON_ON, BUTTON_NONE }, | 64 | { ACTION_WPS_ID3SCREEN, BUTTON_MENU|BUTTON_ON, BUTTON_NONE }, |
65 | { ACTION_STD_KEYLOCK, BUTTON_MENU|BUTTON_STOP, BUTTON_NONE }, | 65 | { ACTION_STD_KEYLOCK, BUTTON_MENU|BUTTON_STOP, BUTTON_NONE }, |
66 | { ACTION_WPS_VIEW_PLAYLIST,BUTTON_MENU|BUTTON_ON, BUTTON_NONE }, | 66 | { ACTION_WPS_HOTKEY, BUTTON_MENU|BUTTON_ON, BUTTON_NONE }, |
67 | 67 | ||
68 | LAST_ITEM_IN_LIST | 68 | LAST_ITEM_IN_LIST |
69 | }; | 69 | }; |
@@ -79,6 +79,7 @@ static const struct button_mapping button_context_settings[] = { | |||
79 | 79 | ||
80 | static const struct button_mapping button_context_tree[] = { | 80 | static const struct button_mapping button_context_tree[] = { |
81 | { ACTION_TREE_WPS, BUTTON_ON, BUTTON_NONE }, | 81 | { ACTION_TREE_WPS, BUTTON_ON, BUTTON_NONE }, |
82 | { ACTION_TREE_HOTKEY, BUTTON_MENU|BUTTON_ON, BUTTON_NONE }, | ||
82 | 83 | ||
83 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | 84 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) |
84 | }; /* button_context_listtree */ | 85 | }; /* 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[] = { | |||
76 | { ACTION_WPS_MENU, BUTTON_F1|BUTTON_REL, BUTTON_F1 }, | 76 | { ACTION_WPS_MENU, BUTTON_F1|BUTTON_REL, BUTTON_F1 }, |
77 | { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | 77 | { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, |
78 | { ACTION_WPS_QUICKSCREEN, BUTTON_F2|BUTTON_REPEAT, BUTTON_NONE }, | 78 | { ACTION_WPS_QUICKSCREEN, BUTTON_F2|BUTTON_REPEAT, BUTTON_NONE }, |
79 | { ACTION_WPS_VIEW_PLAYLIST,BUTTON_F2|BUTTON_REL, BUTTON_F2 }, | 79 | { ACTION_WPS_HOTKEY, BUTTON_F2|BUTTON_REL, BUTTON_F2 }, |
80 | { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON }, | 80 | { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON }, |
81 | { ACTION_WPS_ID3SCREEN, BUTTON_F1|BUTTON_ON, BUTTON_NONE }, | 81 | { ACTION_WPS_ID3SCREEN, BUTTON_F1|BUTTON_ON, BUTTON_NONE }, |
82 | { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_UP, BUTTON_ON }, | 82 | { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_UP, BUTTON_ON }, |
@@ -107,6 +107,7 @@ static const struct button_mapping button_context_settings[] = { | |||
107 | static const struct button_mapping button_context_tree[] = { | 107 | static const struct button_mapping button_context_tree[] = { |
108 | { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, | 108 | { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON }, |
109 | { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, | 109 | { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE }, |
110 | { ACTION_TREE_HOTKEY, BUTTON_F2|BUTTON_REL, BUTTON_F2 }, | ||
110 | { ACTION_NONE, BUTTON_ON, BUTTON_NONE }, | 111 | { ACTION_NONE, BUTTON_ON, BUTTON_NONE }, |
111 | { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON }, | 112 | { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_ON }, |
112 | { ACTION_LISTTREE_PGUP, BUTTON_UP|BUTTON_REL, BUTTON_ON|BUTTON_UP }, | 113 | { 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[] = { | |||
100 | { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | 100 | { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, |
101 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 101 | { ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
102 | { ACTION_WPS_PITCHSCREEN, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | 102 | { ACTION_WPS_PITCHSCREEN, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, |
103 | #ifdef HAVE_HOTKEY | ||
104 | { ACTION_WPS_HOTKEY, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT }, | ||
105 | #else | ||
103 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT }, | 106 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_NEXT|BUTTON_REL, BUTTON_NEXT }, |
107 | #endif | ||
104 | { ACTION_WPS_ID3SCREEN, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | 108 | { ACTION_WPS_ID3SCREEN, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, |
105 | 109 | ||
106 | LAST_ITEM_IN_LIST | 110 | LAST_ITEM_IN_LIST |
@@ -124,6 +128,9 @@ static const struct button_mapping button_context_list[] = { | |||
124 | static const struct button_mapping button_context_tree[] = { | 128 | static const struct button_mapping button_context_tree[] = { |
125 | { ACTION_TREE_WPS, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, | 129 | { ACTION_TREE_WPS, BUTTON_PREV|BUTTON_REPEAT, BUTTON_NONE }, |
126 | { ACTION_TREE_STOP, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, | 130 | { ACTION_TREE_STOP, BUTTON_NEXT|BUTTON_REPEAT, BUTTON_NONE }, |
131 | #ifdef HAVE_HOTKEY | ||
132 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
133 | #endif | ||
127 | 134 | ||
128 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 135 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
129 | }; /* button_context_tree */ | 136 | }; /* 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[] = { | |||
92 | 92 | ||
93 | { ACTION_WPS_MENU, BUTTON_TOPLEFT|BUTTON_REL, BUTTON_TOPLEFT }, | 93 | { ACTION_WPS_MENU, BUTTON_TOPLEFT|BUTTON_REL, BUTTON_TOPLEFT }, |
94 | { ACTION_WPS_QUICKSCREEN, BUTTON_BOTTOMLEFT|BUTTON_REL, BUTTON_BOTTOMLEFT }, | 94 | { ACTION_WPS_QUICKSCREEN, BUTTON_BOTTOMLEFT|BUTTON_REL, BUTTON_BOTTOMLEFT }, |
95 | #ifdef HAVE_HOTKEY | ||
96 | { ACTION_WPS_HOTKEY, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, | ||
97 | #else | ||
95 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, | 98 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, |
99 | #endif | ||
96 | { ACTION_WPS_REC, BUTTON_TOPLEFT|BUTTON_REPEAT, BUTTON_TOPLEFT }, | 100 | { ACTION_WPS_REC, BUTTON_TOPLEFT|BUTTON_REPEAT, BUTTON_TOPLEFT }, |
97 | { ACTION_WPS_PITCHSCREEN, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_BOTTOMLEFT }, | 101 | { ACTION_WPS_PITCHSCREEN, BUTTON_BOTTOMLEFT|BUTTON_REPEAT, BUTTON_BOTTOMLEFT }, |
98 | { ACTION_WPS_ID3SCREEN, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT }, | 102 | { ACTION_WPS_ID3SCREEN, BUTTON_BOTTOMRIGHT|BUTTON_REPEAT, BUTTON_BOTTOMRIGHT }, |
@@ -122,6 +126,9 @@ static const struct button_mapping button_context_list[] = { | |||
122 | static const struct button_mapping button_context_tree[] = { | 126 | static const struct button_mapping button_context_tree[] = { |
123 | { ACTION_TREE_WPS, BUTTON_TOPRIGHT|BUTTON_REL, BUTTON_TOPRIGHT }, | 127 | { ACTION_TREE_WPS, BUTTON_TOPRIGHT|BUTTON_REL, BUTTON_TOPRIGHT }, |
124 | { ACTION_TREE_STOP, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, | 128 | { ACTION_TREE_STOP, BUTTON_BOTTOMRIGHT|BUTTON_REL, BUTTON_BOTTOMRIGHT }, |
129 | #ifdef HAVE_HOTKEY | ||
130 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
131 | #endif | ||
125 | 132 | ||
126 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM2|CONTEXT_CUSTOM|CONTEXT_TREE) | 133 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM2|CONTEXT_CUSTOM|CONTEXT_TREE) |
127 | }; /* button_context_tree */ | 134 | }; /* 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[] = { | |||
66 | { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, | 66 | { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE }, |
67 | { ACTION_WPS_BROWSE, BUTTON_OK|BUTTON_REL, BUTTON_OK }, | 67 | { ACTION_WPS_BROWSE, BUTTON_OK|BUTTON_REL, BUTTON_OK }, |
68 | { ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, | 68 | { ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU }, |
69 | #ifdef HAVE_HOTKEY | ||
70 | { ACTION_WPS_HOTKEY, BUTTON_CANCEL, BUTTON_NONE }, | ||
71 | #else | ||
69 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_CANCEL, BUTTON_NONE }, | 72 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_CANCEL, BUTTON_NONE }, |
73 | #endif | ||
70 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, | 74 | { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU }, |
71 | { ACTION_WPS_QUICKSCREEN, BUTTON_OK|BUTTON_REPEAT, BUTTON_OK }, | 75 | { ACTION_WPS_QUICKSCREEN, BUTTON_OK|BUTTON_REPEAT, BUTTON_OK }, |
72 | 76 | ||
@@ -76,6 +80,9 @@ static const struct button_mapping button_context_wps[] = { | |||
76 | static const struct button_mapping button_context_tree[] = { | 80 | static const struct button_mapping button_context_tree[] = { |
77 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | 81 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, |
78 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | 82 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, |
83 | #ifdef HAVE_HOTKEY | ||
84 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
85 | #endif | ||
79 | 86 | ||
80 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) | 87 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) |
81 | }; /* button_context_tree */ | 88 | }; /* 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[] = { | |||
96 | { ACTION_WPS_QUICKSCREEN, BUTTON_LEFT|BUTTON_DOWN|BUTTON_REPEAT, | 96 | { ACTION_WPS_QUICKSCREEN, BUTTON_LEFT|BUTTON_DOWN|BUTTON_REPEAT, |
97 | BUTTON_LEFT|BUTTON_DOWN|BUTTON_REPEAT }, | 97 | BUTTON_LEFT|BUTTON_DOWN|BUTTON_REPEAT }, |
98 | 98 | ||
99 | #ifdef HAVE_HOTKEY | ||
100 | { ACTION_WPS_HOTKEY, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | ||
101 | #else | ||
99 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, | 102 | { ACTION_WPS_VIEW_PLAYLIST, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT }, |
103 | #endif | ||
100 | { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, | 104 | { ACTION_WPS_REC, BUTTON_REC|BUTTON_REPEAT, BUTTON_NONE }, |
101 | 105 | ||
102 | LAST_ITEM_IN_LIST | 106 | LAST_ITEM_IN_LIST |
@@ -117,6 +121,9 @@ static const struct button_mapping button_context_list[] = { | |||
117 | static const struct button_mapping button_context_tree[] = { | 121 | static const struct button_mapping button_context_tree[] = { |
118 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, | 122 | { ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY }, |
119 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, | 123 | { ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY }, |
124 | #ifdef HAVE_HOTKEY | ||
125 | // { ACTION_TREE_HOTKEY, BUTTON_NONE, BUTTON_NONE }, | ||
126 | #endif | ||
120 | 127 | ||
121 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) | 128 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST) |
122 | }; /* button_context_tree */ | 129 | }; /* 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 @@ | |||
13394 | lineout_poweroff: "Line Out" | 13394 | lineout_poweroff: "Line Out" |
13395 | </voice> | 13395 | </voice> |
13396 | </phrase> | 13396 | </phrase> |
13397 | <phrase> | ||
13398 | id: LANG_SET_HOTKEY | ||
13399 | desc: hotkey splash | ||
13400 | user: core | ||
13401 | <source> | ||
13402 | *: none | ||
13403 | hotkey: "Set Hotkey: %s" | ||
13404 | </source> | ||
13405 | <dest> | ||
13406 | *: none | ||
13407 | hotkey: "Set Hotkey: %s" | ||
13408 | </dest> | ||
13409 | <voice> | ||
13410 | *: none | ||
13411 | hotkey: "Set Hotkey: %s" | ||
13412 | </voice> | ||
13413 | </phrase> | ||
13414 | <phrase> | ||
13415 | id: LANG_HOTKEY_NOT_SET | ||
13416 | desc: hotkey splash | ||
13417 | user: core | ||
13418 | <source> | ||
13419 | *: none | ||
13420 | hotkey: "Hotkey Not Set" | ||
13421 | </source> | ||
13422 | <dest> | ||
13423 | *: none | ||
13424 | hotkey: "Hotkey Not Set" | ||
13425 | </dest> | ||
13426 | <voice> | ||
13427 | *: none | ||
13428 | hotkey: "Hotkey Not Set" | ||
13429 | </voice> | ||
13430 | </phrase> | ||
13431 | <phrase> | ||
13432 | id: LANG_HOTKEY | ||
13433 | desc: hotkey menu | ||
13434 | user: core | ||
13435 | <source> | ||
13436 | *: none | ||
13437 | hotkey: "Hotkey" | ||
13438 | </source> | ||
13439 | <dest> | ||
13440 | *: none | ||
13441 | hotkey: "Hotkey" | ||
13442 | </dest> | ||
13443 | <voice> | ||
13444 | *: none | ||
13445 | hotkey: "Hotkey" | ||
13446 | </voice> | ||
13447 | </phrase> | ||
13448 | <phrase> | ||
13449 | id: LANG_VIEW_HOTKEY | ||
13450 | desc: hotkey menu | ||
13451 | user: core | ||
13452 | <source> | ||
13453 | *: none | ||
13454 | hotkey: "View Hotkey Settings" | ||
13455 | </source> | ||
13456 | <dest> | ||
13457 | *: none | ||
13458 | hotkey: "View Hotkey Settings" | ||
13459 | </dest> | ||
13460 | <voice> | ||
13461 | *: none | ||
13462 | hotkey: "View Hotkey Settings" | ||
13463 | </voice> | ||
13464 | </phrase> | ||
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 @@ | |||
61 | #include "list.h" | 61 | #include "list.h" |
62 | #include "buttonbar.h" | 62 | #include "buttonbar.h" |
63 | 63 | ||
64 | /* hotkey settings */ | ||
65 | #ifdef HAVE_HOTKEY | ||
66 | const struct menu_item_ex *selected_menu_item; | ||
67 | bool hotkey_settable_menu = false; | ||
68 | #endif | ||
69 | |||
64 | #define MAX_MENUS 8 | 70 | #define MAX_MENUS 8 |
65 | /* used to allow for dynamic menus */ | 71 | /* used to allow for dynamic menus */ |
66 | #define MAX_MENU_SUBITEMS 64 | 72 | #define MAX_MENU_SUBITEMS 64 |
@@ -426,6 +432,17 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected, | |||
426 | done = true; | 432 | done = true; |
427 | } | 433 | } |
428 | #endif | 434 | #endif |
435 | #ifdef HAVE_HOTKEY | ||
436 | else if (hotkey_settable_menu && | ||
437 | ((action == ACTION_WPS_HOTKEY) || | ||
438 | (action == ACTION_TREE_HOTKEY))) | ||
439 | { | ||
440 | ret = MENU_SELECTED_HOTKEY; | ||
441 | done = true; | ||
442 | selected = get_menu_selection(gui_synclist_get_sel_pos(&lists),menu); | ||
443 | selected_menu_item = menu->submenus[selected]; | ||
444 | } | ||
445 | #endif | ||
429 | else if (action == ACTION_TREE_WPS) | 446 | else if (action == ACTION_TREE_WPS) |
430 | { | 447 | { |
431 | ret = GO_TO_PREVIOUS_MUSIC; | 448 | ret = GO_TO_PREVIOUS_MUSIC; |
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 @@ | |||
47 | #ifdef HAVE_DIRCACHE | 47 | #ifdef HAVE_DIRCACHE |
48 | #include "dircache.h" | 48 | #include "dircache.h" |
49 | #endif | 49 | #endif |
50 | #ifdef HAVE_HOTKEY | ||
51 | #include "list.h" | ||
52 | #include "settings_list.h" | ||
53 | #endif | ||
50 | 54 | ||
51 | /***********************************/ | 55 | /***********************************/ |
52 | /* TAGCACHE MENU */ | 56 | /* TAGCACHE MENU */ |
@@ -400,6 +404,58 @@ MAKE_MENU(voice_settings_menu, ID2P(LANG_VOICE), 0, Icon_Voice, | |||
400 | 404 | ||
401 | 405 | ||
402 | /***********************************/ | 406 | /***********************************/ |
407 | /* HOTKEY MENU */ | ||
408 | #ifdef HAVE_HOTKEY | ||
409 | static void view_hotkey_info(void) | ||
410 | { | ||
411 | struct simplelist_info info; | ||
412 | simplelist_info_init(&info, str(LANG_VIEW_HOTKEY), 0, NULL); | ||
413 | info.hide_selection = true; | ||
414 | simplelist_set_line_count(2); | ||
415 | simplelist_addline(0, "WPS: %s", | ||
416 | str(global_settings.hotkey_wps_desc_id)); | ||
417 | simplelist_addline(1, "Tree: %s", | ||
418 | str(global_settings.hotkey_tree_desc_id)); | ||
419 | simplelist_show_list(&info); | ||
420 | } | ||
421 | |||
422 | /* reset hotkey settings to their defaults */ | ||
423 | static void reset_hotkey_settings(void) | ||
424 | { | ||
425 | void *vars[] = { | ||
426 | &global_settings.hotkey_tree, | ||
427 | &global_settings.hotkey_tree_desc_id, | ||
428 | &global_settings.hotkey_wps, | ||
429 | &global_settings.hotkey_wps_desc_id, | ||
430 | }; | ||
431 | const int num_settings = sizeof(vars) / sizeof(vars[0]); | ||
432 | int i; | ||
433 | |||
434 | for (i = 0; i < num_settings; i++) | ||
435 | { | ||
436 | const struct settings_list *setting = | ||
437 | find_setting(vars[i], NULL); | ||
438 | reset_setting(setting, setting->setting); | ||
439 | } | ||
440 | |||
441 | settings_save(); | ||
442 | splash(HZ, str(LANG_RESET_DONE_CLEAR)); | ||
443 | } | ||
444 | |||
445 | MENUITEM_FUNCTION(hotkey_view, 0, ID2P(LANG_VIEW_HOTKEY), | ||
446 | (int(*)(void))view_hotkey_info, NULL, | ||
447 | NULL, Icon_NOICON); | ||
448 | MENUITEM_FUNCTION(hotkey_reset, 0, ID2P(LANG_RESET), | ||
449 | (int(*)(void))reset_hotkey_settings, NULL, | ||
450 | NULL, Icon_NOICON); | ||
451 | MAKE_MENU(hotkey_menu, ID2P(LANG_HOTKEY), 0, Icon_NOICON, | ||
452 | &hotkey_view, &hotkey_reset); | ||
453 | #endif /*have_hotkey */ | ||
454 | /* HOTKEY MENU */ | ||
455 | /***********************************/ | ||
456 | |||
457 | |||
458 | /***********************************/ | ||
403 | /* SETTINGS MENU */ | 459 | /* SETTINGS MENU */ |
404 | static int language_browse(void) | 460 | static int language_browse(void) |
405 | { | 461 | { |
@@ -415,7 +471,10 @@ MAKE_MENU(settings_menu_item, ID2P(LANG_GENERAL_SETTINGS), 0, | |||
415 | &tagcache_menu, | 471 | &tagcache_menu, |
416 | #endif | 472 | #endif |
417 | &display_menu, &system_menu, | 473 | &display_menu, &system_menu, |
418 | &bookmark_settings_menu, &browse_langs, &voice_settings_menu | 474 | &bookmark_settings_menu, &browse_langs, &voice_settings_menu, |
475 | #ifdef HAVE_HOTKEY | ||
476 | &hotkey_menu, | ||
477 | #endif | ||
419 | ); | 478 | ); |
420 | /* SETTINGS MENU */ | 479 | /* SETTINGS MENU */ |
421 | /***********************************/ | 480 | /***********************************/ |
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) | |||
528 | 528 | ||
529 | 529 | ||
530 | /* share code for file and directory deletion, saves space */ | 530 | /* share code for file and directory deletion, saves space */ |
531 | static bool delete_handler(bool is_dir) | 531 | static bool delete_file_dir(void) |
532 | { | 532 | { |
533 | char file_to_delete[MAX_PATH]; | 533 | char file_to_delete[MAX_PATH]; |
534 | strcpy(file_to_delete, selected_file); | 534 | strcpy(file_to_delete, selected_file); |
@@ -551,7 +551,7 @@ static bool delete_handler(bool is_dir) | |||
551 | splash(0, str(LANG_DELETING)); | 551 | splash(0, str(LANG_DELETING)); |
552 | 552 | ||
553 | int res; | 553 | int res; |
554 | if (is_dir) | 554 | if (selected_file_attr & ATTR_DIRECTORY) /* true if directory */ |
555 | { | 555 | { |
556 | char pathname[MAX_PATH]; /* space to go deep */ | 556 | char pathname[MAX_PATH]; /* space to go deep */ |
557 | cpu_boost(true); | 557 | cpu_boost(true); |
@@ -568,16 +568,6 @@ static bool delete_handler(bool is_dir) | |||
568 | return (res == 0); | 568 | return (res == 0); |
569 | } | 569 | } |
570 | 570 | ||
571 | static bool delete_file(void) | ||
572 | { | ||
573 | return delete_handler(false); | ||
574 | } | ||
575 | |||
576 | static bool delete_dir(void) | ||
577 | { | ||
578 | return delete_handler(true); | ||
579 | } | ||
580 | |||
581 | static bool rename_file(void) | 571 | static bool rename_file(void) |
582 | { | 572 | { |
583 | char newname[MAX_PATH]; | 573 | char newname[MAX_PATH]; |
@@ -988,9 +978,9 @@ MENUITEM_FUNCTION(clipboard_copy_item, 0, ID2P(LANG_COPY), | |||
988 | MENUITEM_FUNCTION(clipboard_paste_item, 0, ID2P(LANG_PASTE), | 978 | MENUITEM_FUNCTION(clipboard_paste_item, 0, ID2P(LANG_PASTE), |
989 | clipboard_paste, NULL, clipboard_callback, Icon_NOICON); | 979 | clipboard_paste, NULL, clipboard_callback, Icon_NOICON); |
990 | MENUITEM_FUNCTION(delete_file_item, 0, ID2P(LANG_DELETE), | 980 | MENUITEM_FUNCTION(delete_file_item, 0, ID2P(LANG_DELETE), |
991 | delete_file, NULL, clipboard_callback, Icon_NOICON); | 981 | delete_file_dir, NULL, clipboard_callback, Icon_NOICON); |
992 | MENUITEM_FUNCTION(delete_dir_item, 0, ID2P(LANG_DELETE_DIR), | 982 | MENUITEM_FUNCTION(delete_dir_item, 0, ID2P(LANG_DELETE_DIR), |
993 | delete_dir, NULL, clipboard_callback, Icon_NOICON); | 983 | delete_file_dir, NULL, clipboard_callback, Icon_NOICON); |
994 | MENUITEM_FUNCTION(create_dir_item, 0, ID2P(LANG_CREATE_DIR), | 984 | MENUITEM_FUNCTION(create_dir_item, 0, ID2P(LANG_CREATE_DIR), |
995 | create_dir, NULL, clipboard_callback, Icon_NOICON); | 985 | create_dir, NULL, clipboard_callback, Icon_NOICON); |
996 | 986 | ||
@@ -1180,19 +1170,205 @@ static int onplaymenu_callback(int action,const struct menu_item_ex *this_item) | |||
1180 | } | 1170 | } |
1181 | return action; | 1171 | return action; |
1182 | } | 1172 | } |
1183 | int onplay(char* file, int attr, int from) | 1173 | |
1174 | #ifdef HAVE_HOTKEY | ||
1175 | /* direct function calls, no need for menu callbacks */ | ||
1176 | static bool delete_item(void) | ||
1177 | { | ||
1178 | #ifdef HAVE_MULTIVOLUME | ||
1179 | /* no delete for volumes */ | ||
1180 | if ((selected_file_attr & FAT_ATTR_VOLUME) || | ||
1181 | (selected_file_attr & ATTR_VOLUME)) | ||
1182 | return false; | ||
1183 | #endif | ||
1184 | return delete_file_dir(); | ||
1185 | } | ||
1186 | |||
1187 | static bool open_with(void) | ||
1188 | { | ||
1189 | /* only open files */ | ||
1190 | if (selected_file_attr & ATTR_DIRECTORY) | ||
1191 | return false; | ||
1192 | #ifdef HAVE_MULTIVOLUME | ||
1193 | if (selected_file_attr & ATTR_VOLUME) | ||
1194 | return false; | ||
1195 | #endif | ||
1196 | return list_viewers(); | ||
1197 | } | ||
1198 | |||
1199 | extern const struct menu_item_ex *selected_menu_item; | ||
1200 | extern bool hotkey_settable_menu; | ||
1201 | |||
1202 | #define HOT_MASK 0x0FF | ||
1203 | #define HOT_WPS 0x100 | ||
1204 | #define HOT_TREE 0x200 | ||
1205 | |||
1206 | struct hotkey_assignment { | ||
1207 | int item; | ||
1208 | struct menu_func func; | ||
1209 | int return_code; | ||
1210 | const struct menu_item_ex *menu_addr; | ||
1211 | }; | ||
1212 | |||
1213 | #define HOTKEY_FUNC(func, param) {{(void *)func}, param} | ||
1214 | |||
1215 | /* Any desired hotkey functions go here... */ | ||
1216 | enum hotkey_settings { | ||
1217 | HOTKEY_OFF = 0, | ||
1218 | HOTKEY_VIEW_PLAYLIST = 1, | ||
1219 | HOTKEY_SHOW_TRACK_INFO, | ||
1220 | HOTKEY_PITCHSCREEN, | ||
1221 | HOTKEY_OPEN_WITH, | ||
1222 | HOTKEY_DELETE, | ||
1223 | HOTKEY_INSERT, | ||
1224 | }; | ||
1225 | |||
1226 | /* ... and here. Order is not important. */ | ||
1227 | static struct hotkey_assignment hotkey_items[] = { | ||
1228 | { HOTKEY_VIEW_PLAYLIST | HOT_WPS, | ||
1229 | HOTKEY_FUNC(NULL, NULL), | ||
1230 | ONPLAY_PLAYLIST, &view_cur_playlist }, | ||
1231 | { HOTKEY_SHOW_TRACK_INFO| HOT_WPS, | ||
1232 | HOTKEY_FUNC(browse_id3, NULL), | ||
1233 | ONPLAY_RELOAD_DIR, &browse_id3_item }, | ||
1234 | #ifdef HAVE_PITCHSCREEN | ||
1235 | { HOTKEY_PITCHSCREEN | HOT_WPS, | ||
1236 | HOTKEY_FUNC(gui_syncpitchscreen_run, NULL), | ||
1237 | ONPLAY_RELOAD_DIR, &pitch_screen_item }, | ||
1238 | #endif | ||
1239 | { HOTKEY_OPEN_WITH | HOT_WPS | HOT_TREE, | ||
1240 | HOTKEY_FUNC(open_with, NULL), | ||
1241 | ONPLAY_RELOAD_DIR, &list_viewers_item }, | ||
1242 | { HOTKEY_DELETE | HOT_WPS | HOT_TREE, | ||
1243 | HOTKEY_FUNC(delete_item, NULL), | ||
1244 | ONPLAY_RELOAD_DIR, &delete_file_item }, | ||
1245 | { HOTKEY_DELETE | HOT_TREE, | ||
1246 | HOTKEY_FUNC(delete_item, NULL), | ||
1247 | ONPLAY_RELOAD_DIR, &delete_dir_item }, | ||
1248 | { HOTKEY_INSERT | HOT_TREE, | ||
1249 | HOTKEY_FUNC(playlist_insert_func, (intptr_t*)PLAYLIST_INSERT), | ||
1250 | ONPLAY_START_PLAY, &i_pl_item }, | ||
1251 | }; | ||
1252 | |||
1253 | static const int num_hotkey_items = sizeof(hotkey_items) / sizeof(hotkey_items[0]); | ||
1254 | |||
1255 | /* Execute the hotkey function, if listed for this screen */ | ||
1256 | static int execute_hotkey(bool is_wps) | ||
1257 | { | ||
1258 | int i; | ||
1259 | struct hotkey_assignment *this_item; | ||
1260 | const int context = is_wps ? HOT_WPS : HOT_TREE; | ||
1261 | const int this_hotkey = (is_wps ? global_settings.hotkey_wps : | ||
1262 | global_settings.hotkey_tree); | ||
1263 | |||
1264 | /* search assignment struct for a match for the hotkey setting */ | ||
1265 | for (i = 0; i < num_hotkey_items; i++) | ||
1266 | { | ||
1267 | this_item = &hotkey_items[i]; | ||
1268 | if ((this_item->item & context) && | ||
1269 | ((this_item->item & HOT_MASK) == this_hotkey)) | ||
1270 | { | ||
1271 | /* run the associated function (with optional param), if any */ | ||
1272 | const struct menu_func func = this_item->func; | ||
1273 | if (func.function != NULL) | ||
1274 | { | ||
1275 | if (func.param != NULL) | ||
1276 | (*(func.function_w_param))(func.param); | ||
1277 | else | ||
1278 | (*(func.function))(); | ||
1279 | } | ||
1280 | /* return with the associated code */ | ||
1281 | return this_item->return_code; | ||
1282 | } | ||
1283 | } | ||
1284 | |||
1285 | /* no valid hotkey set */ | ||
1286 | splash(HZ, ID2P(LANG_HOTKEY_NOT_SET)); | ||
1287 | return ONPLAY_RELOAD_DIR; | ||
1288 | } | ||
1289 | |||
1290 | /* Set the hotkey to the current context menu function, if listed */ | ||
1291 | static void set_hotkey(bool is_wps) | ||
1292 | { | ||
1293 | int i; | ||
1294 | struct hotkey_assignment *this_item; | ||
1295 | const int context = is_wps ? HOT_WPS : HOT_TREE; | ||
1296 | int *hk_func = is_wps ? &global_settings.hotkey_wps : | ||
1297 | &global_settings.hotkey_tree, | ||
1298 | *hk_desc = is_wps ? &global_settings.hotkey_wps_desc_id : | ||
1299 | &global_settings.hotkey_tree_desc_id; | ||
1300 | int this_hk, | ||
1301 | this_id; | ||
1302 | bool match_found = false; | ||
1303 | |||
1304 | /* search assignment struct for a function that matches the current menu item */ | ||
1305 | for (i = 0; i < num_hotkey_items; i++) | ||
1306 | { | ||
1307 | this_item = &hotkey_items[i]; | ||
1308 | if ((this_item->item & context) && | ||
1309 | (this_item->menu_addr == selected_menu_item)) | ||
1310 | { | ||
1311 | this_hk = this_item->item & HOT_MASK; | ||
1312 | this_id = P2ID((selected_menu_item->callback_and_desc)->desc); | ||
1313 | match_found = true; | ||
1314 | break; | ||
1315 | } | ||
1316 | } | ||
1317 | |||
1318 | /* ignore the hotkey if no match found or no change to setting */ | ||
1319 | if (!match_found || (this_hk == *hk_func)) return; | ||
1320 | |||
1321 | char line1_buf[100]; | ||
1322 | char line2_buf[101]; | ||
1323 | char *line1 = line1_buf; | ||
1324 | char *line2 = line2_buf; | ||
1325 | char **line1_ptr = &line1; | ||
1326 | char **line2_ptr = &line2; | ||
1327 | const struct text_message message={(const char **)line2_ptr, 1}; | ||
1328 | const struct text_message yes_message={(const char **)line1_ptr, 1}; | ||
1329 | |||
1330 | snprintf(line1, 100, str(LANG_SET_HOTKEY), str(this_id)); | ||
1331 | strcat(strcpy(line2, line1), "?"); | ||
1332 | |||
1333 | /* confirm the hotkey setting change */ | ||
1334 | if(gui_syncyesno_run(&message, &yes_message, NULL)==YESNO_YES) | ||
1335 | { | ||
1336 | /* store the hotkey settings */ | ||
1337 | *hk_func = this_hk; | ||
1338 | *hk_desc = this_id; | ||
1339 | |||
1340 | settings_save(); | ||
1341 | splash(HZ*2, line1); | ||
1342 | } | ||
1343 | } | ||
1344 | #endif /* HOTKEY */ | ||
1345 | |||
1346 | int onplay(char* file, int attr, int from, bool hotkey) | ||
1184 | { | 1347 | { |
1185 | const struct menu_item_ex *menu; | 1348 | const struct menu_item_ex *menu; |
1186 | onplay_result = ONPLAY_OK; | 1349 | onplay_result = ONPLAY_OK; |
1187 | context = from; | 1350 | context = from; |
1188 | selected_file = file; | 1351 | selected_file = file; |
1189 | selected_file_attr = attr; | 1352 | selected_file_attr = attr; |
1353 | #ifdef HAVE_HOTKEY | ||
1354 | if (hotkey) | ||
1355 | return execute_hotkey(context == CONTEXT_WPS); | ||
1356 | hotkey_settable_menu = true; | ||
1357 | #else | ||
1358 | (void)hotkey; | ||
1359 | #endif | ||
1190 | if (context == CONTEXT_WPS) | 1360 | if (context == CONTEXT_WPS) |
1191 | menu = &wps_onplay_menu; | 1361 | menu = &wps_onplay_menu; |
1192 | else | 1362 | else |
1193 | menu = &tree_onplay_menu; | 1363 | menu = &tree_onplay_menu; |
1194 | switch (do_menu(menu, NULL, NULL, false)) | 1364 | switch (do_menu(menu, NULL, NULL, false)) |
1195 | { | 1365 | { |
1366 | #ifdef HAVE_HOTKEY | ||
1367 | hotkey_settable_menu = false; | ||
1368 | case MENU_SELECTED_HOTKEY: | ||
1369 | set_hotkey(context == CONTEXT_WPS); | ||
1370 | return ONPLAY_RELOAD_DIR; | ||
1371 | #endif | ||
1196 | case GO_TO_WPS: | 1372 | case GO_TO_WPS: |
1197 | return ONPLAY_START_PLAY; | 1373 | return ONPLAY_START_PLAY; |
1198 | case GO_TO_ROOT: | 1374 | 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 @@ | |||
21 | #ifndef _ONPLAY_H_ | 21 | #ifndef _ONPLAY_H_ |
22 | #define _ONPLAY_H_ | 22 | #define _ONPLAY_H_ |
23 | 23 | ||
24 | int onplay(char* file, int attr, int from_screen); | 24 | int onplay(char* file, int attr, int from_screen, bool hotkey); |
25 | 25 | ||
26 | enum { | 26 | enum { |
27 | ONPLAY_MAINMENU = -1, | 27 | 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) | |||
281 | sel_file); | 281 | sel_file); |
282 | 282 | ||
283 | if (onplay(playlist, FILE_ATTR_M3U, | 283 | if (onplay(playlist, FILE_ATTR_M3U, |
284 | CONTEXT_TREE) != ONPLAY_OK) | 284 | CONTEXT_TREE, false) != ONPLAY_OK) |
285 | { | 285 | { |
286 | result = 0; | 286 | result = 0; |
287 | exit = true; | 287 | 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 { | |||
53 | GO_TO_BROWSEPLUGINS, | 53 | GO_TO_BROWSEPLUGINS, |
54 | GO_TO_TIMESCREEN, | 54 | GO_TO_TIMESCREEN, |
55 | GO_TO_PLAYLIST_VIEWER, | 55 | GO_TO_PLAYLIST_VIEWER, |
56 | MENU_SELECTED_HOTKEY, | ||
56 | }; | 57 | }; |
57 | 58 | ||
58 | extern const struct menu_item_ex root_menu_; | 59 | 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 | |||
816 | bool morse_input; /* text input method setting */ | 816 | bool morse_input; /* text input method setting */ |
817 | #endif | 817 | #endif |
818 | 818 | ||
819 | #ifdef HAVE_HOTKEY | ||
820 | int hotkey_wps; | ||
821 | int hotkey_wps_desc_id; | ||
822 | int hotkey_tree; | ||
823 | int hotkey_tree_desc_id; | ||
824 | #endif | ||
825 | |||
819 | }; | 826 | }; |
820 | 827 | ||
821 | /** global variables **/ | 828 | /** 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[] = { | |||
1660 | #ifdef HAVE_MORSE_INPUT | 1660 | #ifdef HAVE_MORSE_INPUT |
1661 | OFFON_SETTING(0, morse_input, LANG_MORSE_INPUT, false, "morse input", NULL), | 1661 | OFFON_SETTING(0, morse_input, LANG_MORSE_INPUT, false, "morse input", NULL), |
1662 | #endif | 1662 | #endif |
1663 | |||
1664 | #ifdef HAVE_HOTKEY | ||
1665 | CHOICE_SETTING(0, hotkey_wps, 0, 1, "hotkey wps", 0, NULL, 0), | ||
1666 | CHOICE_SETTING(0, hotkey_wps_desc_id, 0, LANG_VIEW_DYNAMIC_PLAYLIST, "hotkey wps desc id", 0, NULL, 0), | ||
1667 | CHOICE_SETTING(0, hotkey_tree, 0, 0, "hotkey tree", 0, NULL, 0), | ||
1668 | CHOICE_SETTING(0, hotkey_tree_desc_id, 0, LANG_OFF, "hotkey tree desc id", 0, NULL, 0), | ||
1669 | #endif | ||
1663 | }; | 1670 | }; |
1664 | 1671 | ||
1665 | const int nb_settings = sizeof(settings)/sizeof(*settings); | 1672 | 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() | |||
757 | #endif | 757 | #endif |
758 | 758 | ||
759 | case ACTION_STD_CONTEXT: | 759 | case ACTION_STD_CONTEXT: |
760 | case ACTION_TREE_HOTKEY: | ||
760 | { | 761 | { |
762 | bool hotkey = button == ACTION_TREE_HOTKEY; | ||
761 | int onplay_result; | 763 | int onplay_result; |
762 | int attr = 0; | 764 | int attr = 0; |
763 | 765 | ||
764 | if(!numentries) | 766 | if(!numentries) |
765 | onplay_result = onplay(NULL, 0, curr_context); | 767 | onplay_result = onplay(NULL, 0, curr_context, hotkey); |
766 | else { | 768 | else { |
767 | #ifdef HAVE_TAGCACHE | 769 | #ifdef HAVE_TAGCACHE |
768 | if (id3db) | 770 | if (id3db) |
@@ -788,7 +790,7 @@ static int dirbrowse() | |||
788 | snprintf(buf, sizeof buf, "/%s", | 790 | snprintf(buf, sizeof buf, "/%s", |
789 | dircache[tc.selected_item].name); | 791 | dircache[tc.selected_item].name); |
790 | } | 792 | } |
791 | onplay_result = onplay(buf, attr, curr_context); | 793 | onplay_result = onplay(buf, attr, curr_context, hotkey); |
792 | } | 794 | } |
793 | switch (onplay_result) | 795 | switch (onplay_result) |
794 | { | 796 | { |