w3c / wcag21

Repository used during WCAG 2.1 development. New issues, Technique ideas, and comments should be filed at the WCAG repository at https://github.com/w3c/wcag.
https://w3c.github.io/wcag/21/guidelines/
Other
140 stars 55 forks source link

Single key shortcut alternative #69

Closed kwahlbin closed 7 years ago

kwahlbin commented 7 years ago

Current versions of SC and Definitions

Open issues and Surveys

Open issues: https://www.w3.org/WAI/GL/wiki/WCAG_2.1_SC_status#Issue_69_-_Single_key_shortcut_alternative Surveys: (Links to surveys require W3C Member access)

SC Shortname

Character Key Shortcuts

SC Text

If a keyboard shortcut consisting entirely of one or more character keys is implemented by the content, then a mechanism is available to turn it off or to remap it to a shortcut that uses at least one non-character key.

Suggestion for Priority Level (A/AA/AAA)

Level A

Related Glossary additions or changes:

Keyboard shortcut: An alternative means of triggering an action by the pressing of one or more keys.

Character key: single printable Unicode code point, any keyboard character that is printable, i.e. letters of the alphabet including capitals, punctuation, numbers, and symbols. Note that the Space and Enter keys, which return empty spaces rather than characters, are not character keys.

What Principle and Guideline the SC falls within.

Principle 2, guideline 4

Description

Speech Input users generally work in a single mode where they can use a mix of dictation and speech commands. This works well because the user knows to pause before and after commands, and commands are usually at least two words long. So, for instance, a user might say a bit of dictation, e.g. "the small boat", then pause, and say a command to delete that dictation, e.g. "Delete Line". In contrast, if the user were to say the two phrases together without a pause, the whole phrase would come out as dictation, e.g. "the small boat delete line". Although speech input programs often include modes that listen only for dictation or only for commands, most speech users use the all-encompassing mode all the time because it is a much more efficient workflow (it would increase command inefficiency by 300% if users were to change to command mode and back before and after issuing a command).

Speech users can also speak most keyboard commands, e.g. "press Control Foxtrot" without any problems. If the website or app is keyboard enabled, the speech user can also write a native speech macro that calls the keyboard command, e.g. "This Print" to carry out "Ctrl+F"

Single key shortcuts are the exception. While using single letter keys as controls might be appropriate and efficient for keyboard users, single key shortcuts are disastrous for speech users. Because only a single key is used to trip a command, a spoken word can become a barrage of single key commands if the cursor focus happens to be in the wrong place.

If the cursor focus is in the gmail main window, for instance, and someone enters an office and says "Hey Kim" and the speech user's microphone picks that up, "y" archives the current message. "k" moves down one conversation and "m" mutes a message or thread. Or, if the speech user looks up and says "Hey Mike" without remembering to turn off the microphone, the same three things happen in a different sequence. In contrast, in a webpage or app that doesn't use single-character shortcuts nothing happens (or if the focus is in text field there's a bit of stray text that be easily seen and undone.)

So to fully include speech users, single-key shortcuts must not be implemented to carry out a control, or a mechanism must be available to turn off all single key shortcuts.

This success criterion is becoming increasingly important in the mobile realm as growing number of apps more fully enable keyboard controls (see resources).

Note that this doesn’t affect components such as list boxes and drop-down menus that contain words that may be selected by one or more character keys, because the container is first accessed or opened with an initial, non-single character shortcut, e.g. “ALT” or “ALT-F”. This makes the full path to invoking a menu or drop-down item a two-step shortcut that includes a nonprinting key.

Note that Accesskeys are not affected because they include modifier keys.

Benefits

Speech users will be able to turn off single key shortcuts so they can avoid accidentally firing batches of them at once. This will allow speech users to make full use of programs that offer single key shortcuts to keyboard users.

Keyboard-only users who have mobility issues can also be prone to accidentally hitting keys. Those users would be able to to avoid problematic single character shortcuts by turning off or modifying the shortcuts to include more than one key.Keyboard-only users who have mobility issues can also be prone to accidentally hitting keys. Those users would be able to to avoid problematic single character shortcuts by turning off or modifying the shortcuts to include more than one key.

Example 1

A speech user is checking Gmail. A colleague enters the office and says "Hey Kim" before the speech user can turn off her microphone and the microphone picks up the colleagues greeting. Because the speech user has turned off single key shortcuts, The three letters that, when they are single key shortcuts, carry out actions – "y" for archive, "k" for move down one conversation and "m" form you conversation – did not carry out any actions.

Example 2

A keyboard-only user is using Github and is in a long issues thread. While reading the thread she accidentally hits the “s” key, which moves focus to the search bar at the top of the document. This causes her to lose her place and her train of thought. She changes the shortcut to include another key so she can avoid future interruptions.

Testability

Identify all shortcuts that can be used. If single key shortcuts are used, check if the user can turn off shortcuts or remap them to other shortcut keys.

Techniques

  1. Allow users to turn off single key shortcuts
  2. Provide a way for users to remap shortcut keys
  3. The user can adjust any customizable key shortcut on the webpage to an alternative control of a string of up to 25 Characters, including spaces.
KimPatch commented 7 years ago

My notes from 2017-05-11 call: Version at end of call: "If a shortcut consisting entirely of character keys is implemented by the web page to activate a control, then a mechanism is available to turn it off or to remap it to a shortcut that uses at least one non-character key."

  1. @mbgower Suggestion to change "at least one non-character key" to "modifier key". If we do this, we lose the ability to change a single character key shortcut to, for instance, F10. I think clarifying that Space and Enter are not character keys may address the concern that led to the suggestion. There may be an argument that they are printable, but they're not characters. We could clear up any possible misunderstanding by specifying this in the definition: Character key: any keyboard character that is printable, i.e. letters of the alphabet including capitals, punctuation, numbers, and symbols. Note that the Space and Enter keys, which return empty spaces rather than characters, are not character keys.

  2. @Ryladog If a shortcut consisting entirely of character keys is implemented to activate a custom control… change suggested because of concern about Access keys. My understanding of access keys is that they are always modifier keys, not single character keys, so there is no actual clash here. Is this correct? I think the concern was that there might be a misunderstanding that access keys might fall under this. But from the user's point of view doesn't matter what type of shortcut it is, single character is going to mess them up. Would it help to add a note to the understanding that this does not affect any controls including access keys that use modifier keys?

  3. Greg pointed out use cases that involve more than one character key, including add-ons like vim that enable shortcuts that are strings of character keys, any assistive technology that pipes a string into an application, and typing ahead using high magnification.

  4. One other thing that we talked about: our current examples – Gmail, Twitter, Github, Google docs – all use role = application. Suggestion to narrow SC to specify role = application. But looking to the future it would be better to keep it broad.

  5. Jason White comments from the survey need to be addressed – I'll address them in a separate entry.

johnfoliot commented 7 years ago

Hi Mike,

Once again, I am concerned about the impact of this on "accesskey" implementations, where the modifier key is pre-determined by the user-agent. As such, any remapping there would need to involve the user-agent, as it is no longer a custom "scripted" interaction, it is a default user-agent action (outside of the control of the content author).

Additionally, HTML 5 is looking to actually remove the term printable character in favor of "single printable Unicode code point." (Please see: https://github.com/w3c/html/issues/485). There are some additional internationalization issues articulated in that Git Hub thread as well, and I will suggest that we all should look there while we have this discussion.

I will continue to assert that the bright line I am seeing here is really centered around content that is actually role="application" (where the responsibility of all keyboard interactions are on the content author), as opposed to other forms of keyboard shortcuts (like accesskey) that are dependent on browser default behaviors. In the first scenario, the author would be obligated to create a mechanism that allowed for the kind of remapping envisioned here, but with the accesskey scenario, until such time as the browser offers that option, the content author has no control over whether or not the end user can or cannot remap activator keys or modifier keys.

Finally, while I appreciate that currently Dragon is not handling this kind of stuff well, how much of that is on the software, versus what a content author can do?

JF

On Thu, May 11, 2017 at 12:37 PM, Mike Gower notifications@github.com wrote:

If a shortcut consisting entirely of character keys is implemented to activate a custom control, then a mechanism is available to turn it off or to remap it to a shortcut that includes a modifier key

I’m not sure why it matters if it’s a custom control or a standard control.

Yes, @mraccess77 https://github.com/mraccess77 , that's why II'm inclined to take out the part that I've bolded in Katie's suggestion. I wasn't sure it should be confined to custom controls either. @Ryladog https://github.com/ryladog , one could still assign a problematic shortcut to a standard control, couldn't one?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/w3c/wcag21/issues/69#issuecomment-300862753, or mute the thread https://github.com/notifications/unsubscribe-auth/ABK-c4VoAiSG_GtI-h1-jO_VpWFfWU9_ks5r40dPgaJpZM4K-jN2 .

-- John Foliot Principal Accessibility Strategist Deque Systems Inc. john.foliot@deque.com

Advancing the mission of digital accessibility and inclusion

KimPatch commented 7 years ago

@johnfoliot So the access key issue has to do with offering users a mechanism to remap keys and these potentially clashing with access key implementations and so having to involve the browser? Am I understanding this correctly?

I'm not sure that I understand the internationalization issue. On the call it seemed like the issue had to do with hitting two keys to get a single character, but I don't see how that affects this SC (or the version that addresses access key): "If a shortcut consisting entirely of character keys is implemented by the web page to activate a control, then a mechanism is available to turn it off or to remap it to a shortcut that uses at least one non-character key." Is there something else about internationalization that I'm not seeing?

About speech input via Dragon or any other speech engine – this is an issue because the currency of speech input is strings of characters. And this currency works efficiently and well except in the case of single character key shortcuts (there's a lot more about this in my explanations above).

mbgower commented 7 years ago

@KimPatch

If we do this, we lose the ability to change a single character key shortcut to, for instance, F10.

Well, yes and no. If you start with an alphanumeric character, then you have this problem. But if F10 is the assigned key in the first place, the SC doesn't apply. So the easy out for someone authoring is not to use text-only characters. So I don't really see that as a big deal being this prescriptive, and a lot of gains from telling them to use a modifier key. But if you really want to include that....

If a shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to a shortcut that either includes a modifier key or is a non-printing character key.

Greg pointed out use cases that involve more than one character key, including add-ons like vim that enable shortcuts that are strings of character keys, any assistive technology that pipes a string into an application, and typing ahead using high magnification.

I thought bringing vim and other text-only unix editors into this discussion was a real mis-step. But to the degree that they are part of the discussion, the ability to remap keys in such apps is the norm.

mbgower commented 7 years ago

@johnfoliot

Once again, I am concerned about the impact of this on "accesskey" implementations, where the modifier key is pre-determined by the user-agent. As such, any remapping there would need to involve the user-agent, as it is no longer a custom "scripted" interaction, it is a default user-agent action (outside of the control of the content author).

I don't see the issue. An accesskey as currently enabled requires a modifier key. We can include content in the Intent document clarifying this if necessary.

I get what you're saying about role="application", but since anyone can put in listeners without putting in that role, it doesn't really serve well to encapsulate the issue.

KimPatch commented 7 years ago

@DavidMacDonald let's try this as an update, at least for the moment: Short name: Character key shortcuts SC: "If a shortcut consisting entirely of character keys is implemented by the web page to activate a control, then a mechanism is available to turn it off or to remap it to a shortcut that uses at least one non-printing key." Definition: Character key: any keyboard character that is printable, i.e. letters of the alphabet including capitals, punctuation, numbers, and symbols. Note that the Space and Enter keys, which return empty spaces rather than characters, are not character keys. Addition to the end of understanding: Note that this doesn’t affect components such as list boxes and drop-down menus that contain words that may be selected by one or more character keys, because the container is first accessed or opened with an initial, non-single character shortcut, e.g. “ALT” or “ALT-F”. This makes the full path to invoking a menu or drop-down item a two-step shortcut that includes a nonprinting key. Search-and-replace single-key shortcut change to: character key shortcut

KimPatch commented 7 years ago

@mbgower "either includes a modifier key or is a non-printing character key." Escape isn't a character key, so would have to be modifier key or non-printing key. But modifier is nonprinting. So that gets us back to at least one non-printing key…

mbgower commented 7 years ago

Escape isn't a character key, so would have to be modifier key or non-printing key. But modifier is nonprinting. So that gets us back to at least one non-printing key…

Yeah, there's no need for it to specify character key. It can just be

If a shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to a shortcut that either includes a modifier key or is a non-printing key.

mbgower commented 7 years ago

BTW, I wouldn't consider ESC a shortcut key, and I don't think it really needs to factor in here. Like the cursor keys, it is an operative key, and I don't think it really needs to be factored in here (except to maybe put language in the Intent section stating that).

KimPatch commented 7 years ago

@JasonWhite Addressing comments from this survey: https://www.w3.org/2002/09/wbs/35422/Top3_18Apr2017/results#xsc

In particular, it fails to make a convincing technical case for the claim that speech input systems could not be designed to detect whether the system caret is in a text input field.

There are issues detecting, but that's not the reason for this SC. There's a good thread above that explains. I think this entry sums it up: https://github.com/w3c/wcag21/issues/69#issuecomment-299636958 If you need more details see the couple of entries above it.

And here are a couple of illustrations (repeating from earlier in the thread):

  1. Google Docs: How single key shortcuts affect speech input This video shows how a single word or phrase can trip several single key shortcuts at once in Google Docs. There are two examples. The first one, a single word, opens the information dialog box and opens a Google drawing in a new window. The second one, a short phrase, opens the information dialog box, opens a drop-down, and changes the document list from a list to tiles. https://youtu.be/xzSyIA4OWYE
  2. Twitter: I'm using Dragon commands "Press J" and "Press K" to test the single keys, and words that contain those letters also trip them, which is what causes the problems. Here's an example of a word tripping a couple of single character key shortcuts at once on Twitter: https://youtu.be/OPjfpDU9S08
mbgower commented 7 years ago

@KimPatch, as you probably realized, Jason White does not seem to have a recognizable git username. Maybe Andrew or Josh can figure out how to get his attention in the thread?

I want to go on record as supporting the principle of this SC because I do think it is not just a speech issue. As an example, I have accidentally tripped the one-key shortcuts in the Firefox Accessibility Extensions. That app has an ability to turn those keys off, which solves the problem. Similar issues have occasionally happened to me in Yahoo mail when something 'goes wrong' and attempts to type in the message are hijacked for other things.

Here are some of the keys in Yahoo.

M Check mail (jumps to Inbox) N Start a new email message [ Move to the previous tab ] Move to the next tab S Search R Reply to a message A Reply all to a message F Forward a message K Mark as read/unread L Star/Unstar a message P Print message

Now, having said all that, I do think that there are legitimate points being raised by Jason and others about the role the AT needs to play in this. Nuance should be able to coordinate with APIs enough to understand whether the focus cursor is in an editable field. If it isn't in an edit field, it shouldn't be sending text streams down the pipe. The default should be that any speech in a situation where it is not in an edit field is treated as a command in the app. If the user wants to consciously send a key press to the app or browser that has focus, the user should be stating "Press K" etc. Even if it is doing this well, there are still going to be situations where single-character shortcuts can cause problems (and thus the reason for this SC) but they would be reduced if DNS was playing by the rules.

jasonwhite commented 7 years ago

@KimPatch I am not the Jason White you are looking for, but I'd be happy to stand in for my evil doppelnamer. ;-)

KimPatch commented 7 years ago

@jasonwhite – apologies

KimPatch commented 7 years ago

@mbgower Thanks. For the record, there are Single character key shortcuts in Github Issues as well. I've discovered them this week by accidentally running into them (c, s)

It seems like it would be helpful to users if speech input that's not in an edit field is treated as a command. But practical use is not as clear-cut. Hands-free speech users regularly run up against annoying exceptions that are frustrating and make computing slower. It's practical to follow keyboard use – allow speech input users to use letter keys in nontext areas the same way a keyboard user can. This enables things like going through lists more quickly, e.g. a long list of fonts.

Keeping the two input methods aligned also reduces cognitive load – sometimes you're looking at the keyboard, picturing what you can do on the keyboard, or remembering what you have done on the keyboard to come up with a speech command. This affords the speech user all the efficiencies of the keyboard. Another example is going through a multilevel drop-down menu using a string of letters. (In this situation I use a custom command "Letter a b" because I can't use the Dragon "Spell a b"command because Dragon assumes that you wouldn't want to spell in a menu and so it's not available there. I've had to explain this to many users who think that the spell functionality is broken. And when users can't use a command like this in one situation, there's a tendency to generally steer clear of it. They don't necessarily remember the details – just that it's flaky and has frustrated them.)

It's also important to keep the keyboard and speech input aligned for folks who use both.

(I'll also reiterate here that enabling a string of character keys in a menu is different than the character keyshortcuts that we want to give users the option to turn off or change because there's an effective gatekeeper – a non-character-only command – to reach the menu.)

mbgower commented 7 years ago

Yep, I get those points -- the luxury of being able to send keystrokes anywhere for whatever reason, etc. Although in your example, if you're in an actual list, Dragon should, again, be able to discern that and allow text to the control. It should be able to parse the values in that list and allow you to select an option by name. I also don't understand why you wouldn't be able to say "Press a, Press b". Same thing in menus. I get the load on the user; it tends to be the reason one is either a dedicated (and successful) Dragon user, or the app doesn't get used much unless one's RSI recurs, etc.

BTW, I also accidentally archive or mark as read email in Google almost every day. As I type this, I don't know why I haven't turned off the single key shortcuts, as I don't use them for the most part, and they've only caused me grief. It would be nice if I could reassign them on an individual basis (which I assume will be one of the techniques we will write for this, if it gets adopted).

mraccess77 commented 7 years ago

@johnfoliot accesskey is not an issue as it's implemented in all known browsers by pressing a modifier key.

johnfoliot commented 7 years ago

Hi Jon,

I get the difference between accesskey and author-scripted single-key shortcuts - I have been documenting and following issues related to accesskey http://john.foliot.ca/?s=accesskey for more than 15 years now. However, will everyone? That's a serious question.

My concern is that this difference seems to now be getting lost. The current draft language https://rawgit.com/w3c/wcag21/single-key-shortcuts_ISSUE-69/guidelines/sc/21/single-key-shortcuts.html says:

If a shortcut consisting entirely of character keys is implemented by the web page to activate a control that does not have focus or to activate a control in a component that is not focused, then a mechanism is available to do one of the following:

...and while the "short name" does state Single-Character Key Shortcuts there is nothing in the current language that specifically excludes "accesskey" - so whether we get that into the normative language (as an exception) or we REALLY ensure we're clear in the Understanding documents, I see a concern going forward.

The significant difference here is that with accesskey, any remapping will be at the User-Agent level (and so NO, content authors DO NOT need to create some additional widget/interface to allow remapping in those instances - and you know we're going to be asked...). Additionally, the current draft language seems to suggest multiple keys are used to create the shortcut ("If a shortcut consisting entirely of character keys" << pluralized) so some editorial tightening would be welcomed.

What this really applies to is content-author scripted behaviors only (with or without role="application", although if you are taking over the end-users keyboard and remapping default user-agent keys & behaviors, I'd argue that without the role="application" you are failing SC 4.1.2), and so I am wondering aloud if we can articulate that key difference?

Additionally, after reading through the current Git Hub issue related to HTML 5 Accesskey (previously linked at https://github.com/w3c/ html/issues/485), and specifically:

The accessKey attribute is now defined to be a single Unicode code point with it being a single printable character. We are proposing a change to the restriction limiting the accessKey to a single Unicode code point. There are examples where a single key stroke could result in multiple code points. For example, on the Hindi INSCRIPT keyboard layout on Windows the TRA key (on number 6) when pressed generates the following Unicode code point sequence: U+0924 (TA) + U+094D (Virama) + U+0930 (RA).

We suggest the following wording:

If specified, the value must consist of a string representing an available keystroke. For most languages, this will be a single printable Unicode code point.

...I have concerns that we are not recognizing a potential internationalization concern at this time. Sure, we can publish the current Draft text for more feedback, but at some point I believe we should be addressing THIS issue too as it is not going to go away, and I believe that we should be seeking to be in alignment with other W3C Recommendations (with regard to terms, etc.) as a matter of principle. At a minimum, if we choose to continue with "character key" (or equivalent) that we clearly define in the Glossary what that means (per the information in the referenced GH issue above).

Meanwhile, Mike Gower wrote:

It would be nice if I could reassign them on an individual basis (which I assume will be one of the techniques we will write for this, if it gets adopted).

Question: can this be done today? Has anyone seen an example of this ability anywhere in the wild?

JF

On Fri, May 12, 2017 at 8:55 AM, Jonathan Avila notifications@github.com wrote:

@johnfoliot https://github.com/johnfoliot accesskey is not an issue as it's implemented in all known browsers by pressing a modifier key.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/w3c/wcag21/issues/69#issuecomment-301082971, or mute the thread https://github.com/notifications/unsubscribe-auth/ABK-c24u9PwQ9qfzx5RVL6PNxWwqeWSTks5r5GTLgaJpZM4K-jN2 .

-- John Foliot Principal Accessibility Strategist Deque Systems Inc. john.foliot@deque.com

Advancing the mission of digital accessibility and inclusion

mbgower commented 7 years ago

@johnfoliot

I get the difference between accesskey and author-scripted single-key shortcuts... However, will everyone? That's a serious question. My concern is that this difference seems to now be getting lost. The current draft language...

I'm not sure why you're quoting the current git language when the discussion in this thread, to which you have been a party, has moved significantly beyond that. Here's the latest draft I proposed:

If a shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to a shortcut that either includes a modifier key or is a non-printing key.

As well, clarification of accesskey in this discussion can be covered in the Intent document, so I really don't see a show stopper.

Question: can this be done today? Has anyone seen an example of this ability anywhere in the wild?

Examples abound in software. For it to work on the web, I assume personalization would need to be invoked, since obviously the application is going to need to be aware of the user preferences for key assignments and accommodate variable assignments for actions, etc.

But let's not get side-tracked by my off-the-cuff futuristic musings about possible techniques! User preferences is not part of this SC language, and that doesn't have to enter into an already long discussion.

KimPatch commented 7 years ago

Here are a couple of examples that might help:

  1. Gmail has extensive character key shortcuts, allows the user to turn them off in Settings/General, and also allows the user to remap all of them to a string of as many as three keys in Setting/Keyboard shortcuts.
  2. WordPress has a few character key shortcuts just for the comments field. The user can turn off just the comments character key shortcuts in Options.
KimPatch commented 7 years ago

@johnfoliot @mbgower @Ryladog Does the following definition of character work for you? If not, suggestions? Is this enough to clear up any misunderstanding with accesskey or should we add a phrase about it to the understanding as well?

Character key: any keyboard character that is printable, i.e. letters of the alphabet including capitals, punctuation, numbers, and symbols. Note: that the Space and Enter keys, which return empty spaces rather than characters, are not character keys, and that accesskeys are not affected because they include modifier keys.

I'm still not sure that I'm understanding the internationalization issue. This covers any printable keyboard character or string of characters whether it's a single character that returns a single character, a single character that returns multiple characters, or multiple characters that return a single character. What am I missing?

DavidMacDonald commented 7 years ago

I've updated the text of the linked github file.... Changing title from Single Key to Character key will be messy and take some time. The entire thread is hanging off the "single key" handle... I've got to create an entirely new branch because the branch is named Single Key... I'll need to take a half hour to an hour to figure it out... @KimPatch

KimPatch commented 7 years ago

@DavidMacDonald I don't think we should change the title of the page – sorry – I Meant SC Short name, not page title

mbgower commented 7 years ago

@KimPatch the version David has posted is a few iterations back now. Wanted to confirm if the following is friendly:

If a shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to a shortcut that either includes a modifier key or uses non-printing keys.

Rationale for changes

  1. No need to specify a web page
  2. Seems to be agreement this does not have to specify "control"
  3. Had good traction on modifier key
  4. Originally I had "uses a non-printing key" but based on your alteration I'm suggesting "uses non-printing keys".

Also fine with "at least one non-printing key" although I have a technical question on whether the issue is resolved if it only requires at least one non-printing key, or if all the keys need to be non-printing.

mbgower commented 7 years ago

actually, it could even be trimmed down more...

If a shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to either include a modifier key or use non-printing keys.

KimPatch commented 7 years ago

@DavidMacDonald @mbgower The top of the file is still old. This is the newer version: https://github.com/w3c/wcag21/issues/69#issuecomment-300966137 (Also reiterating that I meant SC Short name not page title – we shouldn't change the title of this page)

mbgower commented 7 years ago

@KimPatch David posted the new content at the SC for Viewing link, which is I thought where such stuff was going. Please review my last two posts, which contain what I believe is updated/improved language on that version, along with rationale. Thanks!

Ryladog commented 7 years ago

+1 to this simplified version.

Katie Haritos-Shea 703-371-5545

On May 12, 2017 1:13 PM, "Mike Gower" notifications@github.com wrote:

actually, it could even be trimmed down more...

If a shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to either include a modifier key or use non-printing keys.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/w3c/wcag21/issues/69#issuecomment-301134075, or mute the thread https://github.com/notifications/unsubscribe-auth/AFfqyn-IG_6taicq4C08NSOUaHp6jVguks5r5JM8gaJpZM4K-jN2 .

KimPatch commented 7 years ago

@mbgower

If a shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to either include a modifier key or non-printing key.

I'm good with losing "by the webpage" and nice editorial tightening – remap works alone. I think the last part could still be confusing because a modifier key is a non-printing key, but I think this one word change will clear that up.

… or other non-printing key.

And then one additional editorial change for clarity:

If a shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to include either a modifier key or other non-printing key.

mbgower commented 7 years ago

I think of modifier keys as being a very defined set of keys that are used in combination with other keys:

As such, I view them as distinct from function keys or operable keys like Pg, Spacebar, Enter, Esc. But now that I think about it, JAWS of course assigns INS and CapsLock in the same way, so I guess this makes sense.

DavidMacDonald commented 7 years ago

I have been reluctant to change the text in the issue because then we loose the context of the discussion below it... but I have done so now. @KimPatch

DavidMacDonald commented 7 years ago

@mbgower

No need to specify a web page

If we loose "by the content" or "by the webpage", we may end up with confusion. Some may think it applies to assistive technology shortcuts, others might think its browser shortcuts.

Seems to be agreement this does not have to specify "control"

if we loose "to activate a control" then we may need a definition of "shortcut". Currently that language is what defines the shortcut. There an old saying. "Make things as simple as possible but no simpler."

KimPatch commented 7 years ago

@mgower @DavidMacDonald @Ryladog

1 - How about adding this to the end of the description section for clarity: Note that Accesskeys are not affected because they include modifier keys.

2 - We’ve been talking about how this benefits keyboard only users as well, but there's not yet anything in the understanding about this. Proposed addition to cover that (feel free to jump in with a better example).

Addition under Benefits: Keyboard-only users who have mobility issues can also be prone to accidentally hitting keys. Those users would be able to to avoid problematic single character shortcuts by turning off or modifying the shortcuts to include more than one key.

Addition under Example: A keyboard-only user is using Github and is in a long issues thread. While reading the thread she accidentally hits the “s” key, which moves focus to the search bar at the top of the document. This causes her to lose her place and her train of thought. She changes the shortcut to include another key so she can avoid future interruptions.

mbgower commented 7 years ago

@DavidMacDonald

If we loose "by the content" or "by the webpage", we may end up with confusion. Some may think it applies to assistive technology shortcuts, others might think its browser shortcuts.

I never saw "by the content" language. In regard to 'by the webpage", these are Web Content Authoring guidelines. Suggesting we need to put in language to keep people from misapplying it to the design of any other information or UI seems unnecessary -- and to turn 180 degrees, the degree to which it can apply to other content, we shouldn't unnecessarily restrict.

That said, if you feel it is necessary, how about : If an author-created shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to include either a modifier key or other non-printing key.

if we loose "to activate a control" then we may need a definition of "shortcut"

I'm fine with a definition for shortcut.. I'd rather have that than have a definition baked into the SC that restricts a shortcut to something that activates a control. Otherwise, shortcuts that carry out actions for which there are no controls would seem to be exempt.

DavidMacDonald commented 7 years ago

If an author-created shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to include either a modifier key or other non-printing key.

We don't use "author" in any SCs currently. The WCAG 2 way has been to talk about the web page that was created by the author.

Otherwise, shortcuts that carry out actions for which there are no controls would seem to be exempt.

It may widen the SC, I'm not sure of a non-control that could be activated, but I can live with a definition of shortcut... " have to look for a good definition. @KimPatch I've added your edits to the description etc..

Ryladog commented 7 years ago

Kim,

I like all three additons. They improve the context for why the SC is needed, and is helpful to users.

Thanks!

Katie Haritos-Shea 703-371-5545

On May 15, 2017 11:57 AM, "David MacDonald" notifications@github.com wrote:

If an author-created shortcut consists entirely of character keys, then a mechanism is available to turn it off or to remap it to include either a modifier key or other non-printing key.

We don't use "author" in any SCs currently. The WCAG 2 way has been to talk about the web page that was created by the author.

Otherwise, shortcuts that carry out actions for which there are no controls would seem to be exempt.

It may widen the SC, I'm not sure of a non-control that could be activated, but I can live with a definition of shortcut... " have to look for a good definition.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/w3c/wcag21/issues/69#issuecomment-301536458, or mute the thread https://github.com/notifications/unsubscribe-auth/AFfqytFyBZdL5G_sYb9zxjzjdCUBG-KKks5r6IQHgaJpZM4K-jN2 .

mbgower commented 7 years ago

@DavidMacDonald

We don't use "author" in any SCs currently. The WCAG 2 way has been to talk about the web page that was created by the author.

But "author" does appear in numerous places in glossary, so I think we can make it part of the definition of "shortcut".

I'm not sure of a non-control that could be activated,

There are UIs where you may have to drill down, etc., to get to an affordance to do something. In example, if a shortcut can do something that is an item in a submenu, I'm not sure folks would think that the menu is the control being activated. Think of the gmail example, where there are no buttons or other visible controls present in the UI that match a bunch of single-key shortcuts like Archive.

mbgower commented 7 years ago

For a definition of shortcut, here's a first draft:

An alternative means of triggering an action by the pressing of one or more keys.

or if we want to not make it keyboard-specific

An alternative means of triggering an action, typically executed by the pressing of a combination of keys.

DavidMacDonald commented 7 years ago

We may want to say "keyboard shortcut" in the SC. and then use your first definition as a working definition.

But "author" does appear in numerous places in glossary, so I think we can make it part of the definition of "shortcut".

Except for one instance in the glossary, it only appears in notes for definitions. The place it appears in a definition is Programmatically determinable as "author-supplied data". So yes there is a precedence, but a thin one. I'm not sure why using "web page" in the SC is objectionable, except for just trying tighten it up. It seems to make it clearer to my eye, and is consistent with WCAG 2 formation of many SCs. I've left in "Web page" for the time being until I can see a good reason and group momentum behind the amendment.

I'm not sure folks would think that the menu is the control being activated

I'd call it a control, but we don't have a definition of control in WCAG, just user interface component, so I'm fine with leaving off "control" for the draft, and defining shortcut. I've updated the SC to drop Control.

I've updated everything to the latest, I believe.

greg-lowney commented 7 years ago

The latest draft wording as of 2017-05-15 reads "Character Key Shortcuts: If a keyboard shortcut consisting entirely of character keys is implemented by the web page, then a mechanism is available to turn it off or to remap it to a shortcut that uses at least one non-printing key. (Level A)".

On further reflection, I see no reason to limit this SC to keyboard shortcuts implemented by content rather than have it apply more broadly to all keyboard commands implemented by content. That is, if a script traps the F key and uses it to toggle between normal and full-screen modes, it is equally bad for the user whether it does so by activating a button on the page that toggles the mode (making it a shortcut) or merely toggling the mode independently of any controls (in which case it’s not a shortcut). This also lets us avoid having to define keyboard shortcuts.

However, if the keyboard command is the only way to carry out a action, then it is not acceptable for the content to merely disable the keyboard command. We can address this by adding the caveat “without loss of content of functionality” we're using elsewhere. In fact, this should probably be added in any case.

I also have three purely editorial comments: (1) We're supposed to use the term "content" rather than "web page". (2) We should standardize on either "character key" or "printing key" rather than mixing the two terms in the same to mean the same thing. While "printing key" is the one I'm more used to seeing in the past, I think "character key" is more intuitive to readers unfamiliar with the concept. (3) Although it may be overly pedantic, "entirely of character keys" actually introduces ambiguity as to whether the plural implies it must be more than one character key. To avoid that we could say "consisting entirely of one or more character keys" or "that does not include any non-character keys".

Incorporating the editorial changes alone would change it to read: "Character Key Shortcuts: If a keyboard shortcut consisting entirely of one or more character keys is implemented by the content, then a mechanism is available to turn it off or to remap it to a shortcut that uses at least one non-character key. (Level A)"

Incorporating the change to keyboard commands alone would change it to read: "Character Key Commands: If a keyboard command consisting entirely of character keys is implemented by the web page, then a mechanism is available to turn it off or to remap it to a command that uses at least one non-printing key, without loss of content or functionality. (Level A)".

Incorporating both sets of changes would change it to read: "Character Key Commands: If a keyboard command consisting entirely of one or more character keys is implemented by the content, then a mechanism is available to turn it off or to remap it to use at least one non-character key, without loss of content or functionality. (Level A)"

johnfoliot commented 7 years ago

The WCAG 2 way has been to talk about the web page that was created by the author. [...] I'm not sure why using "web page" in the SC is objectionable

Hi David,

With all due respect, I think the web has advanced beyond simply the notion of a "web page", and I will argue we need to keep up as well. We also have "web apps", including "single-page apps", and other forms of Web Content (Netflix/Hulu, etc) that far transcends a "page", and so while the term "web page" may have worked 9 years ago, I hope we can recognize that "the times, they are a changing..." I will argue that content is in fact the correct term to be using, simply because we're working on WCAG 2.1, and not WPAG 2.1 (Web 'Page' Accessibility Guidelines) :-)

JF

On Tue, May 16, 2017 at 12:17 AM, Greg Lowney notifications@github.com wrote:

The latest draft wording as of 2017-05-15 reads "Character Key Shortcuts: If a keyboard shortcut consisting entirely of character keys is implemented by the web page, then a mechanism is available to turn it off or to remap it to a shortcut that uses at least one non-printing key. (Level A)".

On further reflection, I see no reason to limit this SC to keyboard shortcuts implemented by content rather than have it apply more broadly to all keyboard commands implemented by content. That is, if a script traps the F key and uses it to toggle between normal and full-screen modes, it is equally bad for the user whether it does so by activating a button on the page that toggles the mode (making it a shortcut) or merely toggling the mode independently of any controls (in which case it’s not a shortcut). This also lets us avoid having to define keyboard shortcuts.

However, if the keyboard command is the only way to carry out a action, then it is not acceptable for the content to merely disable the keyboard command. We can address this by adding the caveat “without loss of content of functionality” we're using elsewhere. In fact, this should probably be added in any case.

I also have three purely editorial comments: (1) We're supposed to use the term "content" rather than "web page". (2) We should standardize on either "character key" or "printing key" rather than mixing the two terms in the same to mean the same thing. While "printing key" is the one I'm more used to seeing in the past, I think "character key" is more intuitive to readers unfamiliar with the concept. (3) Although it may be overly pedantic, "entirely of character keys" actually introduces ambiguity as to whether the plural implies it must be more than one character key. To avoid that we could say "consisting entirely of one or more character keys" or "that does not include any non-character keys".

Incorporating the editorial changes alone would change it to read: "Character Key Shortcuts: If a keyboard shortcut consisting entirely of one or more character keys is implemented by the content, then a mechanism is available to turn it off or to remap it to a shortcut that uses at least one non-character key. (Level A)"

Incorporating the change to keyboard commands alone would change it to read: "Character Key Shortcuts: If a keyboard shortcut consisting entirely of character keys is implemented by the web page, then a mechanism is available to turn it off or to remap it to a shortcut that uses at least one non-printing key with no loss of content or functionality. (Level A)".

Incorporating both sets of changes would change it to read: "Character Key Shortcuts: If a keyboard shortcut consisting entirely of one or more character keys is implemented by the content, then a mechanism is available to turn it off or to remap it to a shortcut that uses at least one non-character key without loss of content or functionality. (Level A)"

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/w3c/wcag21/issues/69#issuecomment-301677855, or mute the thread https://github.com/notifications/unsubscribe-auth/ABK-c6siYJ4VxqtQrTInrBOn81aY1wAmks5r6TFSgaJpZM4K-jN2 .

-- John Foliot Principal Accessibility Strategist Deque Systems Inc. john.foliot@deque.com

Advancing the mission of digital accessibility and inclusion

DavidMacDonald commented 7 years ago

@johnfoliot @gclowney

I'm not seeing the advantage of the wording here. I think of any keyboard command implemented by the content as a keyboard shortcut. Can you point me to a definition somewhere that necessitates this distinction between keyboard command and keyboard shortcut?

KimPatch commented 7 years ago

@DavidMacDonald can you make these three additions to the understanding for clarity: https://github.com/w3c/wcag21/issues/69#issuecomment-301447393

It looks to me like we are close.

DavidMacDonald commented 7 years ago

@KimPatch Done!

KimPatch commented 7 years ago

Here's one more example of implementing single-character shortcuts and a way to turn them off: Opera/ settings/browser/shortcut/enable advanced keyboard shortcuts.

patrickhlauke commented 7 years ago

Here's one more example of implementing single-character shortcuts and a way to turn them off: Opera/ settings/browser/shortcut/enable advanced keyboard shortcuts.

that's a user agent feature though, not a web content one...

mbgower commented 7 years ago

I'd like to help revise the Understanding doc to make it less biased towards speech recognition. Many other user groups are affected.

mbgower commented 7 years ago

@kwahlbin, I put my hand up on today's call to help make the Understanding doc more broad and less speech focused. Specific asks included more explanation on the use of modifier keys, and focusing on other users groups: keyboard users, low vision, cognitive. Let me know if you want me to go ahead and just make a draft, or if there's a process you want me to follow.

kwahlbin commented 7 years ago

@mbgower If you would like to write the changes to the understanding, I would be happy to incorporate this into the understanding doc.

KimPatch commented 7 years ago

Adding this Email reply to survey comment https://www.w3.org/2002/09/wbs/35422/character-key-issue69/results just keep everything in one place: Jason's comment:

If the user interface control that has focus (including its role) can be "programmatically determined", then speech recognition systems can implement a policy of not forwarding dictated text (e.g., as simulated keystrokes) to the browser whenever the currently focused control is not editable text. This working group should investigate (via horizontal review from the ARIA Working Group or discussion with speech technology developers, especially those who have implemented ARIA already) whether platform accessibility APIs can be used, or adapted, to fill this need.

Two things :

First, solving the single character shortcut problem by not forwarding dictated text doesn't work for people who have mobility issues and might accidentally hit single character shortcuts. Other user groups will benefit from the ability to turn off or change single character shortcuts too.

Second, I can say from long experience with speech recognition as my main and for a time my only means of input (Kurzweil, ViaVoice, the original DragonDictate, Dragon NaturallySpeaking, MacSpeech Dictate, Mac Dragon, Windows Speech Recognition, and native Mac speech recognition) that this not a good path to go down. Whenever a speech input company has tried to limit areas that the user can send keystrokes by speech, users have been frustrated because it's too hard to anticipate what users will want to do. It’s too prescriptive and limiting (I previously mentioned the example of speech users being frustrated because they couldn’t use Dragon’s spell command to go through menus several steps at once). It is important to let speech users do anything the keyboard user can do.

Letting speech users do anything the keyboard user can do generally works really well – with the exception of single character shortcuts. This proposed solution - to allow the user to turn off or change the shortcuts – is intuitive. I've had many users ask me how to turn off or change single-character shortcuts. I have a good answer for them if it's Gmail or WordPress. Not so much if it's Twitter.

I think it would cause a bigger problem trying to solve this one by taking away the ability for users to do anything a keyboard user can do. If I can change single-character shortcuts I can use the changed shortcuts or call them in speech macros. If Dragon decides for me that my means of input should ignore these I can’t get to them at all. Here’s a use case: I need to be able to test anything on my computer using speech input – including single key shortcuts that are good for keyboard users. I just need the ability to control them – to turn them off when I'm not testing, or even better to change them to something more appropriate for the mix of input I use on the computer.

KimPatch commented 7 years ago

Adding this reply to https://www.w3.org/2002/09/wbs/35422/character-key-issue69/results survey: Oliver Keim's comment:

Character Key Shortcuts help to improve keyboard efficiency very much and is used on a number of standard web UIs, like GitHub, Confluence, etc. It would be a huge drawback for keyboard-centric users. A command vector based on character keys is much easier to implement as most of the User Agents (namely Browsers) have inconsistent keyboard shortcut architectures for Hotkeys (triggering commands without focus change) and Accesskeys (changing focus without automatically triggering commands).

Agreed that character key shortcuts are great for keyboard users. This SC doesn't change character key shortcuts for keyboard users. It just gives users a way to turn them off or change character key shortcuts. This is important for several types of users, including mobility impaired users who may accidentally hit single keys and speech users, whose currency is strings of letter keys.