This is something any modern webapp worth its salt has in place. Normally, pressing shift + ? will bring up an overlay with keyboard shortcuts. Try it on gmail or twitter.com. For the toolbar, it would be nice to be able to dismiss the tray with the esc key and open the tray without another combination.

Should Accesskey Be Used At All? from WebAim.

From StackExchange's Meta

Comments

jessebeach’s picture

Issue tags: +Usability, +mobile, +#d8ux, +d8mux, +Spark

Tagging.

mgifford’s picture

Issue tags: +Accessibility

Just saw keys.js on .NET and thought it would be worth sharing it on Drupal.org. This javascript library has some potential at least looking at the demo:
https://github.com/bitwalker/keys.js

Also there's this keyboard shortcut module that should be looked at:
https://drupal.org/project/keyboard_shortcut

Might be a D9 issue at this point though.

webchick’s picture

Version: 8.x-dev » 9.x-dev
Category: task » feature

Yeah, I tend to agree. Could also be a contrib extension for D8.

mgifford’s picture

Would be totally good to test this in contrib for a variety of menus & then bring it into Core in D9 if we can get a solution that works well.

catch’s picture

Version: 9.x-dev » 8.1.x-dev
Issue summary: View changes
Status: Active » Postponed
mgifford’s picture

Status: Postponed » Active
nod_’s picture

Issue tags: +JavaScript

clearly :)

mgifford’s picture

Issue summary: View changes
swentel’s picture

Not sure if it belongs here, but a keyboard shortcut to trigger 'Edit' would be nice to, it's kind of tedious having to click on it before actually seeing all the pencils.

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.0-beta1 was released on March 2, 2016, which means new developments and disruptive changes should now be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.0-beta1 was released on August 3, 2016, which means new developments and disruptive changes should now be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

mgifford’s picture

Issue tags: +accesskey

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.0-alpha1 will be released the week of January 30, 2017, which means new developments and disruptive changes should now be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

andrewmacpherson’s picture

Just a note that ARIA 1.1 introduces aria-keyshortcuts. It's intended use is to convey which keys activate a given control, while the actual keybindings are handled by javascript. It should help JS approaches like Mousetrap, or keys.js, which don't use the problematic accesskey attribute.

See http://www.ssbbartgroup.com/blog/differences-aria-1-0-1-1-deprecations-a... for a description

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.0-alpha1 will be released the week of July 31, 2017, which means new developments and disruptive changes should now be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.0-alpha1 will be released the week of January 17, 2018, which means new developments and disruptive changes should now be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.7.x-dev

Drupal 8.6.0-alpha1 will be released the week of July 16, 2018, which means new developments and disruptive changes should now be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.7.x-dev » 8.8.x-dev

Drupal 8.7.0-alpha1 will be released the week of March 11, 2019, which means new developments and disruptive changes should now be targeted against the 8.8.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.0-alpha1 will be released the week of October 14th, 2019, which means new developments and disruptive changes should now be targeted against the 8.9.x-dev branch. (Any changes to 8.9.x will also be committed to 9.0.x in preparation for Drupal 9’s release, but some changes like significant feature additions will be deferred to 9.1.x.). For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.1.x-dev

Drupal 8.9.0-beta1 was released on March 20, 2020. 8.9.x is the final, long-term support (LTS) minor release of Drupal 8, which means new developments and disruptive changes should now be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

nod_’s picture

andrewmacpherson’s picture

There is an enormous range of gotchas to implementing this, particularly involving the choice of keys, and inevitable conflicts with the web browser (and browser extensions). The more keyboard shortcuts you want, the more likely you are to run into conflicts. I've written more detail about this at #3026583: Provide a system of shortcuts or hotkeys for admin UI.

Any outcome of this issue MUST conform to WCAG success criterion 2.1.4 Character Key Shortcuts.

This is something any modern webapp worth its salt has in place.

It's something many web apps do very badly. The motivation behind keyboard shortcuts is often focused on making things quicker for some notion of a "power user", but ends up hampering keyboard-only users.

An example is the Discourse forum software, where "/" activates a "Search in Forum" feature, but prevents Firefox's Quick Find from working. To make matters worse, early versions of Discourse also hijacked Control+F for search-in-forum, which clashed with Firefox's other find-in-page feature. (Later versions of Discourse stopped hijacking Control+F, and instead use Control+Alt+F for search-in-forum. I don't know if that's every instance of Discourse, or something configurable per site.)

I'd challenge the idea that Drupal is a "web app" at all. It's really a web page, which just happens to put an extra toolbar at the top for logged-in users. Consider a common use case: the company intranet/extranet, which several thousand employees use every week. It's a collection of pages, much like any other site. It just happens to require a log-in because it's private. Do we really think want to risk breaking browser behaviours? As a keyboard user, I'd be seriously frustrated if Firefox's Quick-Find didn't work on the company intranet pages.

nod_’s picture

Given the related issue we should close all (toolbar at least) shortcut keys issues?

nod_’s picture

Version: 9.1.x-dev » 9.2.x-dev

Drupal 9.1.0-alpha1 will be released the week of October 19, 2020, which means new developments and disruptive changes should now be targeted for the 9.2.x-dev branch. For more information see the Drupal 9 minor version schedule and the Allowed changes during the Drupal 9 release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Drupal 9.2.0-alpha1 will be released the week of May 3, 2021, which means new developments and disruptive changes should now be targeted for the 9.3.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.0-rc1 was released on November 26, 2021, which means new developments and disruptive changes should now be targeted for the 9.4.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.0-alpha1 was released on May 6, 2022, which means new developments and disruptive changes should now be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 10.1.x-dev

Drupal 9.5.0-beta2 and Drupal 10.0.0-beta2 were released on September 29, 2022, which means new developments and disruptive changes should now be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 10.1.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch, which currently accepts only minor-version allowed changes. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.