RESOLVED FIXED Bug 21107
New access key combination conflicts with VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=21107
Summary New access key combination conflicts with VoiceOver
moriond
Reported 2008-09-25 09:59:07 PDT
Access keys for Safari 3 no longer work in the recent night webkit builds. These shortcut keys for the Mail Archive site for viewing archived messages as an accessibility feature are: Control-n (Next) Later message by thread Control-p (Previous) Earlier message by thread Control-f (Forward) Later message by date Control-b (Back) Earlier message by date Control-i (Index) Chronological index Control-c (Contents) Thread index They work in Safari 3, and webkit builds through early September. No webkit nightly builds for the last week or two supports these. Blind users must physically navigate to thread links and click them in order to read other archived messages.
Attachments
proposed fix (6.91 KB, patch)
2008-11-06 01:10 PST, Alexey Proskuryakov
darin: review+
Mark Rowe (bdash)
Comment 1 2008-09-25 10:04:23 PDT
The access key combination was changed from Ctrl to Ctrl-Opt in May to address bug 7466.
moriond
Comment 2 2008-09-26 02:19:44 PDT
This replaced combination (where use of Control as the access key has been replaced with the Control+Option combination)) does not work for any visually impaired (or mobility impaired or dyslexic) Mac user who is using the built-in VoiceOver Screen reader as an accessibility solution. The basic VoiceOVer Keys (or VO-keys) are the Control-Option combination, and none of the access keys I listed in my report work if you turn VoiceOver on (Command-F5 to turn VoiceOver on or off on desktop Macs and recent Mac laptops; older laptops may need to use Fn-Command-F5 to toggle VoiceOver on or off). Please try this. VO-keys+I (Control-Option-i) is the item chooser menu; VO-keys+F is the Find command for web page search navigation, etc. None of those access key combinations are accessible to anyone using VoiceOver as an accessibility solution. Would it be possible to use some other key combination like Option-Shift? Could you please get in touch with someone on the Mac accessibility team?
Alexey Proskuryakov
Comment 3 2008-09-26 03:40:04 PDT
Control+Option was the only available combination I could find. For example, Option+Shift is used to enter extended characters (e.g. the Apple logo is Option+Shift+K), and thus cannot be used for access keys. There is no doubt that we need to resolve the conflict with VoiceOver, now that we know about it.
Alexey Proskuryakov
Comment 4 2008-10-02 09:30:29 PDT
Alexey Proskuryakov
Comment 5 2008-11-06 01:10:41 PST
Created attachment 24938 [details] proposed fix Use Ctrl for access keys if VoiceOver is enabled; keep Ctrl+Option otherwise.
Darin Adler
Comment 6 2008-11-06 09:30:55 PST
Comment on attachment 24938 [details] proposed fix > + Use Ctrl when VoiceOver is enabled, because a conflict with Emacs-style key binsings is Bindings rather than "binsings". > + * page/EventHandler.cpp: (WebCore::EventHandler::handleAccessKey): > + Also fix an access key matching bug introduced in r32424 - Any superset of specified > + modifier set invoked access keys. We can use simple equality comparison instead because > + CapsLock is not part of modifiers(), so it doesn't need to be ignored explicitly. What about the shift key? > + // Control+Option key combinations are usually unused on Mac OS X, but not when VoiceOver is enabled. > + // So, we use Control in this case, even though it conflicts with Emacs-style key bindings. > + // See <https://bugs.webkit.org/show_bug.cgi?id=21107> for more detail. > + if (AXObjectCache::accessibilityEnhancedUserInterfaceEnabled()) > + return PlatformKeyboardEvent::CtrlKey; > + else > + return PlatformKeyboardEvent::CtrlKey | PlatformKeyboardEvent::AltKey; Even in parallel cases like this we normally don't do else after return. r=me
Alexey Proskuryakov
Comment 7 2008-11-06 09:49:26 PST
(In reply to comment #6) > > + modifier set invoked access keys. We can use simple equality comparison instead because > > + CapsLock is not part of modifiers(), so it doesn't need to be ignored explicitly. > > What about the shift key? What I meant was: CapsLock state shouldn't matter when deciding whether current modifiers match access key ones. Since modifiers() doesn't include its state, there is no need to explicitly mask it out (other APIs are not that nice, so it's a common mistake).
Alexey Proskuryakov
Comment 8 2008-11-06 21:53:25 PST
Committed revision 38211.
Alexey Proskuryakov
Comment 9 2008-11-07 01:24:25 PST
Follow-up committed revision 38218. Shift behavior is actually more complicated than I thought - restored the old behavior for now, and added a FIXME describing what other browsers do.
Note You need to log in before you can comment on or make changes to this bug.