{"id":112719,"date":"2026-09-22T07:00:00","date_gmt":"2026-09-22T14:00:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/oldnewthing\/?p=112719"},"modified":"2026-09-23T10:18:07","modified_gmt":"2026-09-23T17:18:07","slug":"20260922-00","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20260922-00\/?p=112719\/","title":{"rendered":"A brief history of Windows scroll bar shortcuts"},"content":{"rendered":"<p>For the two decades of Windows, the scroll bar control had just a few basic operations. (For expository purposes, let&#8217;s assume that the scroll bar is vertical.) There are five mouse targets: The arrows at the ends of the scroll bar scroll by a line. The regions between the thumb and the arrows scroll by a page. And the thumb itself lets you drag the scroll bar to a specific position.<\/p>\n<p>Windows\u00a07 added a right-click menu to the scroll bar. This menu gave you four options that matched existing mouse operations, two operations that matched existing keyboard operations, and a new operation.<\/p>\n<table class=\"cp3\" style=\"border-collapse: collapse;\" border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n<tbody>\n<tr>\n<th>Menu option<\/th>\n<th>Mouse<\/th>\n<th>Keyboard<\/th>\n<\/tr>\n<tr>\n<td>Scroll Here<\/td>\n<td>Drag thumb to position<\/td>\n<td>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td>Top<\/td>\n<td>Drag thumb to start<\/td>\n<td><kbd>Home<\/kbd><\/td>\n<\/tr>\n<tr>\n<td>Bottom<\/td>\n<td>Drag thumb to end<\/td>\n<td><kbd>End<\/kbd><\/td>\n<\/tr>\n<tr>\n<td>Page Up<\/td>\n<td>Click in upper gutter<\/td>\n<td><kbd>PgUp<\/kbd><\/td>\n<\/tr>\n<tr>\n<td>Page Down<\/td>\n<td>Click in lower gutter<\/td>\n<td><kbd>PgDn<\/kbd><\/td>\n<\/tr>\n<tr>\n<td>Scroll Up<\/td>\n<td>Click on up-arrow<\/td>\n<td><kbd>\u2191<\/kbd><\/td>\n<\/tr>\n<tr>\n<td>Scroll Down<\/td>\n<td>Click on down-arrow<\/td>\n<td><kbd>\u2193<\/kbd><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The interesting new one is &#8220;Scroll Here&#8221;: You can right-click directly on the spot you want to scroll to, and then pick &#8220;Scroll Here&#8221;. This is much more convenient if you want to scroll a long distance, since you don&#8217;t have to grab the scroll bar thumb and then drag it all the way to where you want to go. You can just focus on where you want to go and not where you are coming from.<\/p>\n<p>I used this context menu a lot when I needed to jump long distances.<\/p>\n<p>An even-more-hidden shortcut was added at the same time: Holding <kbd>Shift<\/kbd> while clicking on the scroll bar jumps the thumb directly to the spot where you clicked.<\/p>\n<p>I didn&#8217;t know about this shortcut until recently. I had always used my trusty context menu.<\/p>\n<p>Sadly, almost nobody uses Win32 scroll bars any more. Everybody uses frameworks that provide their own custom scroll bars.<\/p>\n<p>Electron and other Web apps use the Chromium scroll bar, which doesn&#8217;t implement the context menu, but at least it does implement the <kbd>Shift<\/kbd>+click shortcut.<\/p>\n<p>The WPF XAML framework appears to implement both the context menu <kbd>Shift<\/kbd>+click.<\/p>\n<p>The WinUI XAML framework frustratingly has neither the context menu nor the <kbd>Shift<\/kbd>+click shortcut. (<a href=\" https:\/\/github.com\/Microsoft\/microsoft-ui-xaml\/issues\/11200\">Though at least one person has requested it<\/a>.)<\/p>\n<p>The Qt framework has multiple customization points, so it&#8217;s really up to each app&#8217;s developer. You can enable context menus with <code>SH_<wbr \/>Scroll\u00adBar_<wbr \/>Context\u00adMenu<\/code>, you can enable &#8220;left-click to jump to a position&#8221; with <code>SH_<wbr \/>Scroll\u00adBar_<wbr \/>Left\u00adClick\u00adAbsolute\u00adPosition<\/code>, and you can enable &#8220;middle-click to jump to a position&#8221; with <code>SH_<wbr \/>Scroll\u00adBar_<wbr \/>Middle\u00adClick\u00adAbsolute\u00adPosition<\/code>.<\/p>\n<p>Great, so by the time I learn about a shortcut for scroll bars (<kbd>Shift<\/kbd>+click), the ecosystem has fragmented so much that I can&#8217;t even rely on it working.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Right-clicking and shift-clicking.<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[25],"class_list":["post-112719","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-code"],"acf":[],"blog_post_summary":"<p>Right-clicking and shift-clicking.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/112719","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=112719"}],"version-history":[{"count":1,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/112719\/revisions"}],"predecessor-version":[{"id":112720,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/112719\/revisions\/112720"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=112719"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=112719"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=112719"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}