summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2009-08-29 14:42:03 +0000
committerThomas Martitz <kugel@rockbox.org>2009-08-29 14:42:03 +0000
commite454a3985275819d998b84bc0cf7b7b8ad9eab00 (patch)
treebae381c959526bd90df6a4675f7c3314950e8c14 /apps
parent5226a89cce46e53d3c011de1e7b1c1d7b91af734 (diff)
downloadrockbox-e454a3985275819d998b84bc0cf7b7b8ad9eab00.tar.gz
rockbox-e454a3985275819d998b84bc0cf7b7b8ad9eab00.zip
Quickscreen: 4th item
This adds a 4th top item to the quickscreen. It's as configurable as the existing three items. This patch goes along with optimisations for small screens for better displaying of all four items. 14px font is very usable on a 64px height display for example. Left and Top items go through the items in the opposite direction, so that you can mirror a setting and toggle through it in both directions. Default item is party mode, as it's target independant. Flyspray: FS#9706 git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22532 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/action.h4
-rw-r--r--apps/gui/quickscreen.c130
-rw-r--r--apps/gui/quickscreen.h3
-rw-r--r--apps/keymaps/keymap-av300.c4
-rw-r--r--apps/keymaps/keymap-c100.c4
-rw-r--r--apps/keymaps/keymap-c200.c4
-rw-r--r--apps/keymaps/keymap-clip.c4
-rw-r--r--apps/keymaps/keymap-creativezv.c4
-rw-r--r--apps/keymaps/keymap-creativezvm.c4
-rw-r--r--apps/keymaps/keymap-e200.c4
-rw-r--r--apps/keymaps/keymap-fuze.c4
-rw-r--r--apps/keymaps/keymap-gigabeat-s.c8
-rw-r--r--apps/keymaps/keymap-gigabeat.c4
-rw-r--r--apps/keymaps/keymap-h10.c8
-rw-r--r--apps/keymaps/keymap-h1x0_h3x0.c16
-rw-r--r--apps/keymaps/keymap-hdd1630.c4
-rw-r--r--apps/keymaps/keymap-iaudio67.c4
-rw-r--r--apps/keymaps/keymap-ifp7xx.c4
-rw-r--r--apps/keymaps/keymap-logikdax.c4
-rw-r--r--apps/keymaps/keymap-m200.c4
-rw-r--r--apps/keymaps/keymap-m3.c8
-rw-r--r--apps/keymaps/keymap-meizu-m6sl.c4
-rw-r--r--apps/keymaps/keymap-mr100.c4
-rw-r--r--apps/keymaps/keymap-mr500.c2
-rw-r--r--apps/keymaps/keymap-recorder.c4
-rw-r--r--apps/keymaps/keymap-sa9200.c4
-rw-r--r--apps/keymaps/keymap-touchscreen.c4
-rw-r--r--apps/keymaps/keymap-x5.c8
-rwxr-xr-xapps/keymaps/keymap-yh8xx_yh9xx.c4
-rw-r--r--apps/lang/deutsch.lang17
-rw-r--r--apps/lang/english.lang17
-rw-r--r--apps/menu.c10
-rw-r--r--apps/settings.h1
-rw-r--r--apps/settings_list.c4
34 files changed, 190 insertions, 126 deletions
diff --git a/apps/action.h b/apps/action.h
index eae5f1249b..5df8639cdf 100644
--- a/apps/action.h
+++ b/apps/action.h
@@ -191,13 +191,11 @@ enum {
191 /* bookmark screen */ 191 /* bookmark screen */
192 ACTION_BMS_DELETE, 192 ACTION_BMS_DELETE,
193 193
194 /* alarm menu screen */
195
196 /* quickscreen */ 194 /* quickscreen */
197 ACTION_QS_LEFT, 195 ACTION_QS_LEFT,
198 ACTION_QS_RIGHT, 196 ACTION_QS_RIGHT,
199 ACTION_QS_DOWN, 197 ACTION_QS_DOWN,
200 ACTION_QS_DOWNINV, /* why is this not called up?? :p */ 198 ACTION_QS_TOP,
201 199
202 /* pitchscreen */ 200 /* pitchscreen */
203 /* obviously ignore if you dont have thise screen */ 201 /* obviously ignore if you dont have thise screen */
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c
index d6d662b1f1..ab13e67a81 100644
--- a/apps/gui/quickscreen.c
+++ b/apps/gui/quickscreen.c
@@ -38,17 +38,18 @@
38#include "talk.h" 38#include "talk.h"
39#include "list.h" 39#include "list.h"
40#include "option_select.h" 40#include "option_select.h"
41#include "debug.h"
41 42
42static struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT]; 43static struct viewport vps[NB_SCREENS][QUICKSCREEN_ITEM_COUNT];
43static struct viewport vp_icons[NB_SCREENS]; 44static struct viewport vp_icons[NB_SCREENS];
44/* vp_icons will be used like this: 45 /* 1 top, 1 bottom, 2 on either side, 1 for the icons
45 the side icons will be aligned to the top of this vp and to their sides 46 * if enough space, top and bottom have 2 lines */
46 the bottom icon will be aligned center and at the bottom of this vp */ 47#define MIN_LINES 5
47 48#define MAX_NEEDED_LINES 10
48#define MIN_LINES 4 49 /* pixels between the 2 center items minimum or between text and icons,
49#define MAX_NEEDED_LINES 8 50 * and between text and parent boundaries */
50#define CENTER_MARGIN 10 /* pixels between the 2 center items minimum */ 51#define MARGIN 10
51#define CENTER_ICONAREA_WIDTH (CENTER_MARGIN+8*2) 52#define CENTER_ICONAREA_SIZE (MARGIN+8*2)
52 53
53static void quickscreen_fix_viewports(struct gui_quickscreen *qs, 54static void quickscreen_fix_viewports(struct gui_quickscreen *qs,
54 struct screen *display, 55 struct screen *display,
@@ -59,9 +60,8 @@ static void quickscreen_fix_viewports(struct gui_quickscreen *qs,
59#else 60#else
60 const int screen = 0; 61 const int screen = 0;
61#endif 62#endif
62 63 int char_height, width, pad = 0;
63 int char_height, i, width, pad = 0; 64 int left_width, right_width, vert_lines;
64 int left_width, right_width, bottom_lines = 2;
65 unsigned char *s; 65 unsigned char *s;
66 int nb_lines = viewport_get_nb_lines(parent); 66 int nb_lines = viewport_get_nb_lines(parent);
67 67
@@ -75,43 +75,57 @@ static void quickscreen_fix_viewports(struct gui_quickscreen *qs,
75 75
76 /* center the icons VP first */ 76 /* center the icons VP first */
77 vp_icons[screen] = *parent; 77 vp_icons[screen] = *parent;
78 vp_icons[screen].width = CENTER_ICONAREA_WIDTH; /* absolute smallest allowed */ 78 vp_icons[screen].width = CENTER_ICONAREA_SIZE; /* abosulte smallest allowed */
79 vp_icons[screen].x = parent->x + (parent->width / 2 - CENTER_ICONAREA_WIDTH / 2); 79 vp_icons[screen].x = parent->x;
80 vp_icons[screen].x += (parent->width-CENTER_ICONAREA_SIZE)/2;
81
80 82
81 vps[screen][QUICKSCREEN_BOTTOM] = *parent; 83 vps[screen][QUICKSCREEN_BOTTOM] = *parent;
82 if (nb_lines <= MIN_LINES) /* make the bottom item use 1 line */ 84 vps[screen][QUICKSCREEN_TOP] = *parent;
83 bottom_lines = 1; 85 /* depending on the space the top/buttom items use 1 or 2 lines */
86 if (nb_lines < MIN_LINES)
87 vert_lines = 1;
84 else 88 else
85 bottom_lines = 2; 89 vert_lines = 2;
86 vps[screen][QUICKSCREEN_BOTTOM].height = bottom_lines*char_height; 90 vps[screen][QUICKSCREEN_TOP].y = parent->y;
87 vps[screen][QUICKSCREEN_BOTTOM].y = 91 vps[screen][QUICKSCREEN_TOP].height = vps[screen][QUICKSCREEN_BOTTOM].height
88 parent->y + parent->height - bottom_lines*char_height; 92 = vert_lines*char_height;
93 vps[screen][QUICKSCREEN_BOTTOM].y
94 = parent->y + parent->height - vps[screen][QUICKSCREEN_BOTTOM].height;
95
96 /* enough space vertically, so put a nice margin */
89 if (nb_lines >= MAX_NEEDED_LINES) 97 if (nb_lines >= MAX_NEEDED_LINES)
90 { 98 {
91 vps[screen][QUICKSCREEN_BOTTOM].y -= char_height; 99 vps[screen][QUICKSCREEN_TOP].y += MARGIN;
100 vps[screen][QUICKSCREEN_BOTTOM].y -= MARGIN;
92 } 101 }
93 102
103 vp_icons[screen].y = vps[screen][QUICKSCREEN_TOP].y
104 + vps[screen][QUICKSCREEN_TOP].height;
105 vp_icons[screen].height = parent->height - vp_icons[screen].y;
106 vp_icons[screen].height -= parent->height - vps[screen][QUICKSCREEN_BOTTOM].y;
107
94 /* adjust the left/right items widths to fit the screen nicely */ 108 /* adjust the left/right items widths to fit the screen nicely */
95 s = P2STR(ID2P(qs->items[QUICKSCREEN_LEFT]->lang_id)); 109 s = P2STR(ID2P(qs->items[QUICKSCREEN_LEFT]->lang_id));
96 left_width = display->getstringsize(s, NULL, NULL); 110 left_width = display->getstringsize(s, NULL, NULL);
97 s = P2STR(ID2P(qs->items[QUICKSCREEN_RIGHT]->lang_id)); 111 s = P2STR(ID2P(qs->items[QUICKSCREEN_RIGHT]->lang_id));
98 right_width = display->getstringsize(s, NULL, NULL); 112 right_width = display->getstringsize(s, NULL, NULL);
99 nb_lines -= bottom_lines; 113
100
101 width = MAX(left_width, right_width); 114 width = MAX(left_width, right_width);
102 if (width*2 + vp_icons[screen].width > display->lcdwidth) 115 if (width*2 + vp_icons[screen].width > display->lcdwidth)
103 width = (display->lcdwidth - vp_icons[screen].width)/2; 116 width = (display->lcdwidth - vp_icons[screen].width)/2;
104 else /* add more gap in icons vp */ 117 else /* add more gap in icons vp */
105 { 118 {
106 int excess = display->lcdwidth - vp_icons[screen].width - width*2; 119 int excess = display->lcdwidth - vp_icons[screen].width - width*2;
107 if (excess > CENTER_MARGIN*4) 120 if (excess > MARGIN*4)
108 { 121 {
109 pad = CENTER_MARGIN; 122 pad = MARGIN;
110 excess -= CENTER_MARGIN*2; 123 excess -= MARGIN*2;
111 } 124 }
112 vp_icons[screen].x -= excess/2; 125 vp_icons[screen].x -= excess/2;
113 vp_icons[screen].width += excess; 126 vp_icons[screen].width += excess;
114 } 127 }
128
115 vps[screen][QUICKSCREEN_LEFT] = *parent; 129 vps[screen][QUICKSCREEN_LEFT] = *parent;
116 vps[screen][QUICKSCREEN_LEFT].x = parent->x + pad; 130 vps[screen][QUICKSCREEN_LEFT].x = parent->x + pad;
117 vps[screen][QUICKSCREEN_LEFT].width = width; 131 vps[screen][QUICKSCREEN_LEFT].width = width;
@@ -119,32 +133,25 @@ static void quickscreen_fix_viewports(struct gui_quickscreen *qs,
119 vps[screen][QUICKSCREEN_RIGHT] = *parent; 133 vps[screen][QUICKSCREEN_RIGHT] = *parent;
120 vps[screen][QUICKSCREEN_RIGHT].x = parent->x + parent->width - width - pad; 134 vps[screen][QUICKSCREEN_RIGHT].x = parent->x + parent->width - width - pad;
121 vps[screen][QUICKSCREEN_RIGHT].width = width; 135 vps[screen][QUICKSCREEN_RIGHT].width = width;
122 136
137 vps[screen][QUICKSCREEN_LEFT].height = vps[screen][QUICKSCREEN_RIGHT].height
138 = 2*char_height;
139
140 vps[screen][QUICKSCREEN_LEFT].y = vps[screen][QUICKSCREEN_RIGHT].y
141 = parent->y + (parent->height/2) - char_height;
142
123 /* shrink the icons vp by a few pixels if there is room so the arrows 143 /* shrink the icons vp by a few pixels if there is room so the arrows
124 aren't drawn right next to the text */ 144 aren't drawn right next to the text */
125 if (vp_icons[screen].width > CENTER_ICONAREA_WIDTH+8) 145 if (vp_icons[screen].width > CENTER_ICONAREA_SIZE*2)
126 { 146 {
127 vp_icons[screen].width -= 8; 147 vp_icons[screen].width -= CENTER_ICONAREA_SIZE*2/3;
128 vp_icons[screen].x += 4; 148 vp_icons[screen].x += CENTER_ICONAREA_SIZE*2/6;
149 }
150 if (vp_icons[screen].height > CENTER_ICONAREA_SIZE*2)
151 {
152 vp_icons[screen].height -= CENTER_ICONAREA_SIZE*2/3;
153 vp_icons[screen].y += CENTER_ICONAREA_SIZE*2/6;
129 } 154 }
130
131
132 if (nb_lines <= MIN_LINES)
133 i = 0;
134 else
135 i = nb_lines/2;
136 vps[screen][QUICKSCREEN_LEFT].y = parent->y + (i*char_height);
137 vps[screen][QUICKSCREEN_RIGHT].y = parent->y + (i*char_height);
138 if (nb_lines >= 3)
139 i = 3*char_height;
140 else
141 i = nb_lines*char_height;
142
143 vps[screen][QUICKSCREEN_LEFT].height = i;
144 vps[screen][QUICKSCREEN_RIGHT].height = i;
145 vp_icons[screen].y = vps[screen][QUICKSCREEN_LEFT].y + (char_height/2);
146 vp_icons[screen].height =
147 vps[screen][QUICKSCREEN_BOTTOM].y - vp_icons[screen].y;
148} 155}
149 156
150static void quickscreen_draw_text(const char *s, int item, bool title, 157static void quickscreen_draw_text(const char *s, int item, bool title,
@@ -158,6 +165,7 @@ static void quickscreen_draw_text(const char *s, int item, bool title,
158 line = 1; 165 line = 1;
159 switch (item) 166 switch (item)
160 { 167 {
168 case QUICKSCREEN_TOP:
161 case QUICKSCREEN_BOTTOM: 169 case QUICKSCREEN_BOTTOM:
162 x = (vp->width - w)/2; 170 x = (vp->width - w)/2;
163 break; 171 break;
@@ -219,13 +227,18 @@ static void gui_quickscreen_draw(struct gui_quickscreen *qs,
219 } 227 }
220 /* draw the icons */ 228 /* draw the icons */
221 display->set_viewport(&vp_icons[screen]); 229 display->set_viewport(&vp_icons[screen]);
230
231 display->mono_bitmap(bitmap_icons_7x8[Icon_UpArrow],
232 (vp_icons[screen].width/2) - 4, 0, 7, 8);
222 display->mono_bitmap(bitmap_icons_7x8[Icon_FastForward], 233 display->mono_bitmap(bitmap_icons_7x8[Icon_FastForward],
223 vp_icons[screen].width - 8, 0, 7, 8); 234 vp_icons[screen].width - 8,
224 display->mono_bitmap(bitmap_icons_7x8[Icon_FastBackward], 0, 0, 7, 8); 235 (vp_icons[screen].height/2) - 4, 7, 8);
236 display->mono_bitmap(bitmap_icons_7x8[Icon_FastBackward], 0,
237 (vp_icons[screen].height/2) - 4, 7, 8);
238
225 display->mono_bitmap(bitmap_icons_7x8[Icon_DownArrow], 239 display->mono_bitmap(bitmap_icons_7x8[Icon_DownArrow],
226 (vp_icons[screen].width/2) - 4, 240 (vp_icons[screen].width/2) - 4,
227 vp_icons[screen].height - 7, 7, 8); 241 vp_icons[screen].height - 8, 7, 8);
228 display->update_viewport();
229 242
230 display->set_viewport(parent); 243 display->set_viewport(parent);
231 display->update_viewport(); 244 display->update_viewport();
@@ -254,12 +267,15 @@ static bool gui_quickscreen_do_button(struct gui_quickscreen * qs, int button)
254 bool invert = false; 267 bool invert = false;
255 switch(button) 268 switch(button)
256 { 269 {
270 case ACTION_QS_TOP:
271 invert = true;
272 item = QUICKSCREEN_TOP;
273 break;
257 case ACTION_QS_LEFT: 274 case ACTION_QS_LEFT:
275 invert = true;
258 item = QUICKSCREEN_LEFT; 276 item = QUICKSCREEN_LEFT;
259 break; 277 break;
260 278
261 case ACTION_QS_DOWNINV:
262 invert = true; /* fallthrough */
263 case ACTION_QS_DOWN: 279 case ACTION_QS_DOWN:
264 item = QUICKSCREEN_BOTTOM; 280 item = QUICKSCREEN_BOTTOM;
265 break; 281 break;
@@ -367,6 +383,9 @@ bool quick_screen_quick(int button_enter)
367 bool oldshuffle = global_settings.playlist_shuffle; 383 bool oldshuffle = global_settings.playlist_shuffle;
368 int oldrepeat = global_settings.repeat_mode; 384 int oldrepeat = global_settings.repeat_mode;
369 385
386 qs.items[QUICKSCREEN_TOP] =
387 get_setting(global_settings.qs_item_top,
388 find_setting(&global_settings.party_mode, NULL));
370 qs.items[QUICKSCREEN_LEFT] = 389 qs.items[QUICKSCREEN_LEFT] =
371 get_setting(global_settings.qs_item_left, 390 get_setting(global_settings.qs_item_left,
372 find_setting(&global_settings.playlist_shuffle, NULL)); 391 find_setting(&global_settings.playlist_shuffle, NULL));
@@ -452,6 +471,9 @@ void set_as_qs_item(const struct settings_list *setting,
452 } 471 }
453 switch (item) 472 switch (item)
454 { 473 {
474 case QUICKSCREEN_TOP:
475 global_settings.qs_item_top = i;
476 break;
455 case QUICKSCREEN_LEFT: 477 case QUICKSCREEN_LEFT:
456 global_settings.qs_item_left = i; 478 global_settings.qs_item_left = i;
457 break; 479 break;
@@ -461,7 +483,7 @@ void set_as_qs_item(const struct settings_list *setting,
461 case QUICKSCREEN_BOTTOM: 483 case QUICKSCREEN_BOTTOM:
462 global_settings.qs_item_bottom = i; 484 global_settings.qs_item_bottom = i;
463 break; 485 break;
464 default: /* shut the copiler up */ 486 default: /* shut the compiler up */
465 break; 487 break;
466 } 488 }
467} 489}
diff --git a/apps/gui/quickscreen.h b/apps/gui/quickscreen.h
index 2a67916d37..c725eae60a 100644
--- a/apps/gui/quickscreen.h
+++ b/apps/gui/quickscreen.h
@@ -29,7 +29,8 @@
29#include "screen_access.h" 29#include "screen_access.h"
30 30
31enum quickscreen_item { 31enum quickscreen_item {
32 QUICKSCREEN_LEFT = 0, 32 QUICKSCREEN_TOP = 0,
33 QUICKSCREEN_LEFT,
33 QUICKSCREEN_RIGHT, 34 QUICKSCREEN_RIGHT,
34 QUICKSCREEN_BOTTOM, 35 QUICKSCREEN_BOTTOM,
35 QUICKSCREEN_ITEM_COUNT, 36 QUICKSCREEN_ITEM_COUNT,
diff --git a/apps/keymaps/keymap-av300.c b/apps/keymaps/keymap-av300.c
index 15fc561f62..7bf5fe1287 100644
--- a/apps/keymaps/keymap-av300.c
+++ b/apps/keymaps/keymap-av300.c
@@ -135,8 +135,8 @@ static const struct button_mapping button_context_yesno[] = {
135 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 135 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
136}; 136};
137static const struct button_mapping button_context_quickscreen[] = { 137static const struct button_mapping button_context_quickscreen[] = {
138 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 138 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
139 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 139 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
140 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 140 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
141 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 141 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
142 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 142 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-c100.c b/apps/keymaps/keymap-c100.c
index e40a2df61e..a19549dbd9 100644
--- a/apps/keymaps/keymap-c100.c
+++ b/apps/keymaps/keymap-c100.c
@@ -142,8 +142,8 @@ static const struct button_mapping button_context_yesno[] = {
142 142
143static const struct button_mapping button_context_quickscreen[] = { 143static const struct button_mapping button_context_quickscreen[] = {
144 { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE }, 144 { ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
145 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 145 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
146 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 146 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
147 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 147 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
148 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 148 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
149 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, 149 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-c200.c b/apps/keymaps/keymap-c200.c
index 36345ee4fb..32e5ce5cc0 100644
--- a/apps/keymaps/keymap-c200.c
+++ b/apps/keymaps/keymap-c200.c
@@ -147,8 +147,8 @@ static const struct button_mapping button_context_quickscreen[] = {
147 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 147 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
148 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE }, 148 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE },
149 149
150 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 150 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
151 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 151 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
152 152
153 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 153 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
154 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 154 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-clip.c b/apps/keymaps/keymap-clip.c
index 7956bbd324..5b45f4fb3d 100644
--- a/apps/keymaps/keymap-clip.c
+++ b/apps/keymaps/keymap-clip.c
@@ -164,8 +164,8 @@ static const struct button_mapping button_context_yesno[] = {
164static const struct button_mapping button_context_quickscreen[] = { 164static const struct button_mapping button_context_quickscreen[] = {
165 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE }, 165 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE },
166 { ACTION_STD_CANCEL, BUTTON_HOME, BUTTON_NONE }, 166 { ACTION_STD_CANCEL, BUTTON_HOME, BUTTON_NONE },
167 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 167 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
168 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 168 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
169 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 169 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
170 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 170 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
171 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, 171 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-creativezv.c b/apps/keymaps/keymap-creativezv.c
index 6004eb2cd2..c75a5b29cd 100644
--- a/apps/keymaps/keymap-creativezv.c
+++ b/apps/keymaps/keymap-creativezv.c
@@ -177,8 +177,8 @@ static const struct button_mapping button_context_time[] = {
177}; /* button_context_time */ 177}; /* button_context_time */
178 178
179static const struct button_mapping button_context_quickscreen[] = { 179static const struct button_mapping button_context_quickscreen[] = {
180 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 180 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
181 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 181 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
182 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 182 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
183 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 183 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
184 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 184 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-creativezvm.c b/apps/keymaps/keymap-creativezvm.c
index 8d190f4262..12694bc473 100644
--- a/apps/keymaps/keymap-creativezvm.c
+++ b/apps/keymaps/keymap-creativezvm.c
@@ -176,8 +176,8 @@ static const struct button_mapping button_context_time[] = {
176}; /* button_context_time */ 176}; /* button_context_time */
177 177
178static const struct button_mapping button_context_quickscreen[] = { 178static const struct button_mapping button_context_quickscreen[] = {
179 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 179 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
180 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 180 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
181 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 181 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
182 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 182 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
183 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 183 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-e200.c b/apps/keymaps/keymap-e200.c
index 4d5ac65171..86d54b2eb7 100644
--- a/apps/keymaps/keymap-e200.c
+++ b/apps/keymaps/keymap-e200.c
@@ -152,8 +152,8 @@ static const struct button_mapping button_context_yesno[] = {
152static const struct button_mapping button_context_quickscreen[] = { 152static const struct button_mapping button_context_quickscreen[] = {
153 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 153 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
154 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE }, 154 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE },
155 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 155 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
156 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 156 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
157 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 157 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
158 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 158 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
159 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, 159 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-fuze.c b/apps/keymaps/keymap-fuze.c
index b64549b1ba..e44ee518f2 100644
--- a/apps/keymaps/keymap-fuze.c
+++ b/apps/keymaps/keymap-fuze.c
@@ -152,8 +152,8 @@ static const struct button_mapping button_context_quickscreen[] = {
152 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 152 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
153 { ACTION_STD_CANCEL, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE }, 153 { ACTION_STD_CANCEL, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
154 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE }, 154 { ACTION_STD_CANCEL, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE },
155 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 155 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
156 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 156 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
157 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 157 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
158 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 158 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
159 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE }, 159 { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-gigabeat-s.c b/apps/keymaps/keymap-gigabeat-s.c
index 5c13bc0efc..4fb7e1b3f1 100644
--- a/apps/keymaps/keymap-gigabeat-s.c
+++ b/apps/keymaps/keymap-gigabeat-s.c
@@ -227,8 +227,8 @@ static const struct button_mapping button_context_time[] = {
227}; /* button_context_time */ 227}; /* button_context_time */
228 228
229static const struct button_mapping button_context_quickscreen[] = { 229static const struct button_mapping button_context_quickscreen[] = {
230 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 230 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
231 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 231 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
232 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 232 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
233 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 233 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
234 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 234 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
@@ -422,8 +422,8 @@ static const struct button_mapping remote_button_context_yesno[] = {
422}; /* button_context_settings_yesno */ 422}; /* button_context_settings_yesno */
423 423
424static const struct button_mapping remote_button_context_quickscreen[] = { 424static const struct button_mapping remote_button_context_quickscreen[] = {
425 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP, BUTTON_NONE }, 425 { ACTION_QS_TOP, BUTTON_RC_VOL_UP, BUTTON_NONE },
426 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 426 { ACTION_QS_TOP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
427 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 427 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
428 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 428 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
429 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE }, 429 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-gigabeat.c b/apps/keymaps/keymap-gigabeat.c
index dbaac6fc49..a1a38a9600 100644
--- a/apps/keymaps/keymap-gigabeat.c
+++ b/apps/keymaps/keymap-gigabeat.c
@@ -215,8 +215,8 @@ static const struct button_mapping button_context_time[] = {
215}; /* button_context_time */ 215}; /* button_context_time */
216 216
217static const struct button_mapping button_context_quickscreen[] = { 217static const struct button_mapping button_context_quickscreen[] = {
218 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 218 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
219 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 219 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
220 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 220 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
221 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 221 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
222 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 222 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-h10.c b/apps/keymaps/keymap-h10.c
index 7fef53d55b..ad1ed64c5a 100644
--- a/apps/keymaps/keymap-h10.c
+++ b/apps/keymaps/keymap-h10.c
@@ -207,8 +207,8 @@ static const struct button_mapping button_context_yesno[] = {
207}; /* button_context_settings_yesno */ 207}; /* button_context_settings_yesno */
208 208
209static const struct button_mapping button_context_quickscreen[] = { 209static const struct button_mapping button_context_quickscreen[] = {
210 { ACTION_QS_DOWNINV, BUTTON_SCROLL_UP, BUTTON_NONE }, 210 { ACTION_QS_TOP, BUTTON_SCROLL_UP, BUTTON_NONE },
211 { ACTION_QS_DOWNINV, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE }, 211 { ACTION_QS_TOP, BUTTON_SCROLL_UP|BUTTON_REPEAT, BUTTON_NONE },
212 { ACTION_QS_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE }, 212 { ACTION_QS_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE },
213 { ACTION_QS_DOWN, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 213 { ACTION_QS_DOWN, BUTTON_SCROLL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
214 { ACTION_QS_LEFT, BUTTON_REW, BUTTON_NONE }, 214 { ACTION_QS_LEFT, BUTTON_REW, BUTTON_NONE },
@@ -220,8 +220,8 @@ static const struct button_mapping button_context_quickscreen[] = {
220}; /* button_context_quickscreen */ 220}; /* button_context_quickscreen */
221 221
222static const struct button_mapping remote_button_context_quickscreen[] = { 222static const struct button_mapping remote_button_context_quickscreen[] = {
223 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP, BUTTON_NONE }, 223 { ACTION_QS_TOP, BUTTON_RC_VOL_UP, BUTTON_NONE },
224 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 224 { ACTION_QS_TOP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
225 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 225 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
226 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 226 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
227 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE }, 227 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-h1x0_h3x0.c b/apps/keymaps/keymap-h1x0_h3x0.c
index 10139d6356..4e13c7a734 100644
--- a/apps/keymaps/keymap-h1x0_h3x0.c
+++ b/apps/keymaps/keymap-h1x0_h3x0.c
@@ -205,8 +205,8 @@ static const struct button_mapping button_context_time[] = {
205}; /* button_context_settings_bmark */ 205}; /* button_context_settings_bmark */
206 206
207static const struct button_mapping button_context_quickscreen[] = { 207static const struct button_mapping button_context_quickscreen[] = {
208 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 208 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
209 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 209 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
210 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 210 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
211 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 211 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
212 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 212 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
@@ -507,8 +507,8 @@ static const struct button_mapping *button_context_bmark_h300lcdremote =
507 button_context_bmark_h100remote; 507 button_context_bmark_h100remote;
508 508
509static const struct button_mapping button_context_quickscreen_nonlcdremote[] = { 509static const struct button_mapping button_context_quickscreen_nonlcdremote[] = {
510 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP, BUTTON_NONE }, 510 { ACTION_QS_TOP, BUTTON_RC_VOL_UP, BUTTON_NONE },
511 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 511 { ACTION_QS_TOP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
512 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 512 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
513 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 513 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
514 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE }, 514 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE },
@@ -521,8 +521,8 @@ static const struct button_mapping button_context_quickscreen_nonlcdremote[] =
521}; /* button_context_quickscreen */ 521}; /* button_context_quickscreen */
522 522
523static const struct button_mapping button_context_quickscreen_h100lcdremote[] = { 523static const struct button_mapping button_context_quickscreen_h100lcdremote[] = {
524 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP, BUTTON_NONE }, 524 { ACTION_QS_TOP, BUTTON_RC_VOL_UP, BUTTON_NONE },
525 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 525 { ACTION_QS_TOP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
526 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 526 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
527 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 527 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
528 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE }, 528 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE },
@@ -539,8 +539,8 @@ static const struct button_mapping button_context_quickscreen_h100lcdremote[] =
539}; /* button_context_quickscreen */ 539}; /* button_context_quickscreen */
540 540
541static const struct button_mapping button_context_quickscreen_h300lcdremote[] = { 541static const struct button_mapping button_context_quickscreen_h300lcdremote[] = {
542 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP, BUTTON_NONE }, 542 { ACTION_QS_TOP, BUTTON_RC_VOL_UP, BUTTON_NONE },
543 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 543 { ACTION_QS_TOP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
544 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 544 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
545 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 545 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
546 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE }, 546 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-hdd1630.c b/apps/keymaps/keymap-hdd1630.c
index 1d1866b4a3..4565c2807b 100644
--- a/apps/keymaps/keymap-hdd1630.c
+++ b/apps/keymaps/keymap-hdd1630.c
@@ -215,8 +215,8 @@ static const struct button_mapping button_context_time[] = {
215}; /* button_context_time */ 215}; /* button_context_time */
216 216
217static const struct button_mapping button_context_quickscreen[] = { 217static const struct button_mapping button_context_quickscreen[] = {
218 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 218 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
219 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 219 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
220 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 220 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
221 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 221 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
222 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 222 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-iaudio67.c b/apps/keymaps/keymap-iaudio67.c
index 6679ede293..14bb945527 100644
--- a/apps/keymaps/keymap-iaudio67.c
+++ b/apps/keymaps/keymap-iaudio67.c
@@ -154,8 +154,8 @@ static const struct button_mapping button_context_quickscreen[] = {
154 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 154 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
155 { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_NONE }, 155 { ACTION_STD_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_NONE },
156 156
157 { ACTION_QS_DOWNINV, BUTTON_VOLUP|BUTTON_REL, BUTTON_NONE }, 157 { ACTION_QS_TOP, BUTTON_VOLUP|BUTTON_REL, BUTTON_NONE },
158 { ACTION_QS_DOWNINV, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE }, 158 { ACTION_QS_TOP, BUTTON_VOLUP|BUTTON_REPEAT, BUTTON_NONE },
159 159
160 { ACTION_QS_DOWN, BUTTON_VOLDOWN|BUTTON_REL, BUTTON_NONE }, 160 { ACTION_QS_DOWN, BUTTON_VOLDOWN|BUTTON_REL, BUTTON_NONE },
161 { ACTION_QS_DOWN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE }, 161 { ACTION_QS_DOWN, BUTTON_VOLDOWN|BUTTON_REPEAT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-ifp7xx.c b/apps/keymaps/keymap-ifp7xx.c
index 3b09df49fc..23e56e8b6e 100644
--- a/apps/keymaps/keymap-ifp7xx.c
+++ b/apps/keymaps/keymap-ifp7xx.c
@@ -109,8 +109,8 @@ static const struct button_mapping button_context_bmark[] = {
109}; /* button_context_settings_bmark */ 109}; /* button_context_settings_bmark */
110 110
111static const struct button_mapping button_context_quickscreen[] = { 111static const struct button_mapping button_context_quickscreen[] = {
112 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 112 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
113 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 113 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
114 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 114 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
115 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 115 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
116 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 116 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-logikdax.c b/apps/keymaps/keymap-logikdax.c
index cda6107b45..95913678d8 100644
--- a/apps/keymaps/keymap-logikdax.c
+++ b/apps/keymaps/keymap-logikdax.c
@@ -147,8 +147,8 @@ static const struct button_mapping button_context_quickscreen[] = {
147 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 147 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
148 { ACTION_STD_CANCEL, BUTTON_MODE|BUTTON_REL, BUTTON_NONE }, 148 { ACTION_STD_CANCEL, BUTTON_MODE|BUTTON_REL, BUTTON_NONE },
149 149
150 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 150 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
151 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 151 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
152 152
153 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 153 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
154 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 154 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-m200.c b/apps/keymaps/keymap-m200.c
index 8a16936525..78a4947b2f 100644
--- a/apps/keymaps/keymap-m200.c
+++ b/apps/keymaps/keymap-m200.c
@@ -165,8 +165,8 @@ static const struct button_mapping button_context_quickscreen[] = {
165 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 165 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
166 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE }, 166 { ACTION_STD_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_NONE },
167 167
168 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 168 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
169 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 169 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
170 170
171 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 171 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
172 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 172 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-m3.c b/apps/keymaps/keymap-m3.c
index 5bd0f9d258..a8f098b3e3 100644
--- a/apps/keymaps/keymap-m3.c
+++ b/apps/keymaps/keymap-m3.c
@@ -188,8 +188,8 @@ static const struct button_mapping remote_button_context_pitchscreen[] = {
188 188
189/** Quickscreen **/ 189/** Quickscreen **/
190static const struct button_mapping button_context_quickscreen[] = { 190static const struct button_mapping button_context_quickscreen[] = {
191 { ACTION_QS_DOWNINV, BUTTON_VOL_UP, BUTTON_NONE }, 191 { ACTION_QS_TOP, BUTTON_VOL_UP, BUTTON_NONE },
192 { ACTION_QS_DOWNINV, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 192 { ACTION_QS_TOP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
193 { ACTION_QS_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE }, 193 { ACTION_QS_DOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
194 { ACTION_QS_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 194 { ACTION_QS_DOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
195 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 195 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
@@ -202,8 +202,8 @@ static const struct button_mapping button_context_quickscreen[] = {
202}; /* button_context_quickscreen */ 202}; /* button_context_quickscreen */
203 203
204static const struct button_mapping remote_button_context_quickscreen[] = { 204static const struct button_mapping remote_button_context_quickscreen[] = {
205 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP, BUTTON_NONE }, 205 { ACTION_QS_TOP, BUTTON_RC_VOL_UP, BUTTON_NONE },
206 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 206 { ACTION_QS_TOP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
207 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 207 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
208 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 208 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
209 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE }, 209 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-meizu-m6sl.c b/apps/keymaps/keymap-meizu-m6sl.c
index 1d7ca42412..988f8a21fe 100644
--- a/apps/keymaps/keymap-meizu-m6sl.c
+++ b/apps/keymaps/keymap-meizu-m6sl.c
@@ -202,8 +202,8 @@ static const struct button_mapping button_context_time[] = {
202}; /* button_context_time */ 202}; /* button_context_time */
203 203
204static const struct button_mapping button_context_quickscreen[] = { 204static const struct button_mapping button_context_quickscreen[] = {
205 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 205 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
206 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 206 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
207 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 207 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
208 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 208 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
209 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 209 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-mr100.c b/apps/keymaps/keymap-mr100.c
index efbbca4d1b..bf9da0de58 100644
--- a/apps/keymaps/keymap-mr100.c
+++ b/apps/keymaps/keymap-mr100.c
@@ -212,8 +212,8 @@ static const struct button_mapping button_context_time[] = {
212}; /* button_context_time */ 212}; /* button_context_time */
213 213
214static const struct button_mapping button_context_quickscreen[] = { 214static const struct button_mapping button_context_quickscreen[] = {
215 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 215 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
216 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 216 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
217 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 217 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
218 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 218 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
219 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 219 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-mr500.c b/apps/keymaps/keymap-mr500.c
index b1a3e4aae1..36ffea46de 100644
--- a/apps/keymaps/keymap-mr500.c
+++ b/apps/keymaps/keymap-mr500.c
@@ -164,7 +164,7 @@ static const struct button_mapping button_context_time[] = {
164 164
165static const struct button_mapping button_context_quickscreen[] = { 165static const struct button_mapping button_context_quickscreen[] = {
166 { ACTION_STD_CANCEL, BUTTON_RC_MODE, BUTTON_NONE }, 166 { ACTION_STD_CANCEL, BUTTON_RC_MODE, BUTTON_NONE },
167 { ACTION_QS_DOWNINV, BUTTON_RC_PLAY, BUTTON_NONE }, 167 { ACTION_QS_TOP, BUTTON_RC_PLAY, BUTTON_NONE },
168 { ACTION_QS_DOWN, BUTTON_RC_DOWN, BUTTON_NONE }, 168 { ACTION_QS_DOWN, BUTTON_RC_DOWN, BUTTON_NONE },
169 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE }, 169 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE },
170 { ACTION_QS_RIGHT, BUTTON_RC_FF, BUTTON_NONE }, 170 { ACTION_QS_RIGHT, BUTTON_RC_FF, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-recorder.c b/apps/keymaps/keymap-recorder.c
index 60f7f34b6a..6c8ae0460e 100644
--- a/apps/keymaps/keymap-recorder.c
+++ b/apps/keymaps/keymap-recorder.c
@@ -137,8 +137,8 @@ static const struct button_mapping button_context_yesno[] = {
137 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD) 137 LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
138}; 138};
139static const struct button_mapping button_context_quickscreen[] = { 139static const struct button_mapping button_context_quickscreen[] = {
140 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 140 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
141 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 141 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
142 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 142 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
143 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 143 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
144 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 144 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-sa9200.c b/apps/keymaps/keymap-sa9200.c
index 06e93b085d..3e83932347 100644
--- a/apps/keymaps/keymap-sa9200.c
+++ b/apps/keymaps/keymap-sa9200.c
@@ -203,8 +203,8 @@ static const struct button_mapping button_context_quickscreen[] = {
203 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 203 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
204 { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE }, 204 { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
205 205
206 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REL, BUTTON_NONE }, 206 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
207 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 207 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
208 208
209 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 209 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
210 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 210 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-touchscreen.c b/apps/keymaps/keymap-touchscreen.c
index 0d9595cd1d..dfa4fde39c 100644
--- a/apps/keymaps/keymap-touchscreen.c
+++ b/apps/keymaps/keymap-touchscreen.c
@@ -183,8 +183,8 @@ static const struct button_mapping button_context_time[] = {
183static const struct button_mapping button_context_quickscreen[] = { 183static const struct button_mapping button_context_quickscreen[] = {
184 184
185 { ACTION_STD_CANCEL, BUTTON_CENTER|BUTTON_REL, BUTTON_NONE }, 185 { ACTION_STD_CANCEL, BUTTON_CENTER|BUTTON_REL, BUTTON_NONE },
186 { ACTION_QS_DOWNINV, BUTTON_TOPMIDDLE|BUTTON_REL, BUTTON_NONE }, 186 { ACTION_QS_TOP, BUTTON_TOPMIDDLE|BUTTON_REL, BUTTON_NONE },
187 { ACTION_QS_DOWNINV, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_NONE }, 187 { ACTION_QS_TOP, BUTTON_TOPMIDDLE|BUTTON_REPEAT, BUTTON_NONE },
188 { ACTION_QS_DOWN, BUTTON_BOTTOMMIDDLE|BUTTON_REL, BUTTON_NONE }, 188 { ACTION_QS_DOWN, BUTTON_BOTTOMMIDDLE|BUTTON_REL, BUTTON_NONE },
189 { ACTION_QS_DOWN, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_NONE }, 189 { ACTION_QS_DOWN, BUTTON_BOTTOMMIDDLE|BUTTON_REPEAT, BUTTON_NONE },
190 { ACTION_QS_LEFT, BUTTON_MIDLEFT|BUTTON_REL, BUTTON_NONE }, 190 { ACTION_QS_LEFT, BUTTON_MIDLEFT|BUTTON_REL, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-x5.c b/apps/keymaps/keymap-x5.c
index 7a7dd9a7c9..8b94118ac1 100644
--- a/apps/keymaps/keymap-x5.c
+++ b/apps/keymaps/keymap-x5.c
@@ -195,8 +195,8 @@ static const struct button_mapping remote_button_context_pitchscreen[] = {
195 195
196/** Quickscreen **/ 196/** Quickscreen **/
197static const struct button_mapping button_context_quickscreen[] = { 197static const struct button_mapping button_context_quickscreen[] = {
198 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 198 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
199 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 199 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
200 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE }, 200 { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
201 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 201 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
202 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE }, 202 { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
@@ -209,8 +209,8 @@ static const struct button_mapping button_context_quickscreen[] = {
209}; /* button_context_quickscreen */ 209}; /* button_context_quickscreen */
210 210
211static const struct button_mapping remote_button_context_quickscreen[] = { 211static const struct button_mapping remote_button_context_quickscreen[] = {
212 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP, BUTTON_NONE }, 212 { ACTION_QS_TOP, BUTTON_RC_VOL_UP, BUTTON_NONE },
213 { ACTION_QS_DOWNINV, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE }, 213 { ACTION_QS_TOP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
214 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE }, 214 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
215 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 215 { ACTION_QS_DOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
216 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE }, 216 { ACTION_QS_LEFT, BUTTON_RC_REW, BUTTON_NONE },
diff --git a/apps/keymaps/keymap-yh8xx_yh9xx.c b/apps/keymaps/keymap-yh8xx_yh9xx.c
index 2cb7b4b67a..7e65749f52 100755
--- a/apps/keymaps/keymap-yh8xx_yh9xx.c
+++ b/apps/keymaps/keymap-yh8xx_yh9xx.c
@@ -212,8 +212,8 @@ static const struct button_mapping button_context_time[] = {
212 212
213static const struct button_mapping button_context_quickscreen[] = { 213static const struct button_mapping button_context_quickscreen[] = {
214 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE }, 214 { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
215 { ACTION_QS_DOWNINV, BUTTON_UP, BUTTON_NONE }, 215 { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
216 { ACTION_QS_DOWNINV, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE }, 216 { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
217 217
218 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE }, 218 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
219 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE }, 219 { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
diff --git a/apps/lang/deutsch.lang b/apps/lang/deutsch.lang
index 7cd59a5b67..1a9d1e6a65 100644
--- a/apps/lang/deutsch.lang
+++ b/apps/lang/deutsch.lang
@@ -12464,3 +12464,20 @@
12464 swcodec: "Geschwindigkeit" 12464 swcodec: "Geschwindigkeit"
12465 </voice> 12465 </voice>
12466</phrase> 12466</phrase>
12467<phrase>
12468 id: LANG_TOP_QS_ITEM
12469 desc: used for the submenu name for the quickscreen items
12470 user: core
12471 <source>
12472 *: none
12473 quickscreen: "Set as Top Quickscreen Item"
12474 </source>
12475 <dest>
12476 *: none
12477 quickscreen: "Als obere Schnelleinstellung verwenden"
12478 </dest>
12479 <voice>
12480 *: none
12481 quickscreen: "Als obere Schnelleinstellung verwenden"
12482 </voice>
12483</phrase>
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 73a3fe9b1b..915c329a39 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -12718,3 +12718,20 @@
12718 swcodec: "Limiter Preamp" 12718 swcodec: "Limiter Preamp"
12719 </voice> 12719 </voice>
12720</phrase> 12720</phrase>
12721<phrase>
12722 id: LANG_TOP_QS_ITEM
12723 desc: used for the submenu name for the quickscreen items
12724 user: core
12725 <source>
12726 *: none
12727 quickscreen: "Set as Top Quickscreen Item"
12728 </source>
12729 <dest>
12730 *: none
12731 quickscreen: "Set as Top Quickscreen Item"
12732 </dest>
12733 <voice>
12734 *: none
12735 quickscreen: "Set as Top Quickscreen Item"
12736 </voice>
12737</phrase>
diff --git a/apps/menu.c b/apps/menu.c
index b442d4423d..1c2df9294c 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -455,6 +455,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
455 MENUITEM_STRINGLIST(quickscreen_able_option, 455 MENUITEM_STRINGLIST(quickscreen_able_option,
456 ID2P(LANG_ONPLAY_MENU_TITLE), NULL, 456 ID2P(LANG_ONPLAY_MENU_TITLE), NULL,
457 ID2P(LANG_RESET_SETTING), 457 ID2P(LANG_RESET_SETTING),
458 ID2P(LANG_TOP_QS_ITEM),
458 ID2P(LANG_LEFT_QS_ITEM), 459 ID2P(LANG_LEFT_QS_ITEM),
459 ID2P(LANG_BOTTOM_QS_ITEM), 460 ID2P(LANG_BOTTOM_QS_ITEM),
460 ID2P(LANG_RIGHT_QS_ITEM)); 461 ID2P(LANG_RIGHT_QS_ITEM));
@@ -481,13 +482,16 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
481 break; 482 break;
482#ifdef HAVE_QUICKSCREEN 483#ifdef HAVE_QUICKSCREEN
483 break; 484 break;
484 case 1: /* set as left QS item */ 485 case 1: /* set as top QS item */
486 set_as_qs_item(setting, QUICKSCREEN_TOP);
487 break;
488 case 2: /* set as left QS item */
485 set_as_qs_item(setting, QUICKSCREEN_LEFT); 489 set_as_qs_item(setting, QUICKSCREEN_LEFT);
486 break; 490 break;
487 case 2: /* set as bottom QS item */ 491 case 3: /* set as bottom QS item */
488 set_as_qs_item(setting, QUICKSCREEN_BOTTOM); 492 set_as_qs_item(setting, QUICKSCREEN_BOTTOM);
489 break; 493 break;
490 case 3: /* set as right QS item */ 494 case 4: /* set as right QS item */
491 set_as_qs_item(setting, QUICKSCREEN_RIGHT); 495 set_as_qs_item(setting, QUICKSCREEN_RIGHT);
492 break; 496 break;
493#endif 497#endif
diff --git a/apps/settings.h b/apps/settings.h
index bd28b99401..e8ffe91471 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -503,6 +503,7 @@ struct user_settings
503 503
504#ifdef HAVE_QUICKSCREEN 504#ifdef HAVE_QUICKSCREEN
505 /* these are split because settings_list cant handle arrays */ 505 /* these are split because settings_list cant handle arrays */
506 int qs_item_top;
506 int qs_item_left; 507 int qs_item_left;
507 int qs_item_right; 508 int qs_item_right;
508 int qs_item_bottom; 509 int qs_item_bottom;
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 23f07cb24c..db69f6cb9b 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1525,6 +1525,10 @@ const struct settings_list settings[] = {
1525 ID2P(LANG_NORMAL), ID2P(LANG_HIGH)), 1525 ID2P(LANG_NORMAL), ID2P(LANG_HIGH)),
1526#endif 1526#endif
1527#ifdef HAVE_QUICKSCREEN 1527#ifdef HAVE_QUICKSCREEN
1528 CUSTOM_SETTING(0, qs_item_top, LANG_TOP_QS_ITEM,
1529 &global_settings.party_mode, "qs top",
1530 qs_load_from_cfg, qs_write_to_cfg,
1531 qs_is_changed, qs_set_default),
1528 CUSTOM_SETTING(0, qs_item_left, LANG_LEFT_QS_ITEM, 1532 CUSTOM_SETTING(0, qs_item_left, LANG_LEFT_QS_ITEM,
1529 &global_settings.playlist_shuffle, "qs left", 1533 &global_settings.playlist_shuffle, "qs left",
1530 qs_load_from_cfg, qs_write_to_cfg, 1534 qs_load_from_cfg, qs_write_to_cfg,