New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use 'data-at-shortcutkeys' to pass access keys to JAWS #111
Comments
Information from Freedom Scientific here: |
Testing their example, I notice that IE and FF both work. Chrome does not seem to support this. |
The domElement.setAttribute( 'data-at-shortcutkeys', "{'j': 'Key to start jumping', 'w': 'Key to jump to wall', 's': 'Key to jump to sweater'}" ); This seems to work very well for Firefox and JAWS! It is not working yet with IE. This is the first time I am testing JAWS, but nothing seems to work with IE + JAWS. |
In Firefox, @terracoda provided another helpful piece of documentation: http://tink.uk/time-to-revisit-accesskey/ According to this source,
Until this is done, complex drag and drop with the arrow keys will not work in JAWS. |
@jessegreenberg said:
Interesting. JAWS is supposed to work best with IE. Btw, what version of JAWS and IE are you using? |
@jessegreenberg as I mentioned earlier I spoke with David Best, an expert screen reader user and programmer. He seemed to think that it would be possible to put an id on a containing element (the Play Area, for example) and use an event listener to listen for the arrow keys and then with Javascript make the Arrow keys do something else in that context. Is something like this possible? Should we discuss tomorrow? |
That was my understanding as well, so I am surprised too. I am using JAWS 17 with IE 11. |
Regarding
It would be great to discuss this further in case we are missing something. That description sounds like what we are doing. Here is an example of the JavaScript: domElement.addEventListener( 'keydown', function( event ) {
// functions in here define behavior for arrow keys
} ); The event listener is added to the element. The issue is that the AT grabs the event for itself without passing to to the DOM. Adding the event listener to a containing element would mean that using arrow keys could drag the element when it does not have focus. |
I should specify that using the 'insert + 3' method will still work, but arrow keys will be intercepted for the aria roles that I am aware of. |
@jessegreenberg regarding event listener and arrow keys, David mentioned passing "Insert+3" as an example (keep in mind this is a JAWS-only hack) in that context to prefix the key event. Is something like that possible? Some how I thought this would already happen naturally with the input element. It would be great for you to meet David. |
Yes that is possible, that is what is happening now. By pressing 'insert + 3' the event is passed to the browser, no matter what the element is. Input elements naturally get certain keystrokes depending on the type. For example, buttons get spacebar and enter. All other keystrokes are intercepted. |
Can the application send 'insert+3' for the user? Is that what you are describing? |
That is not what I was describing, I hadn't thought of that! Perhaps that would be possible, maybe with something like dispatchEvent? It feels a little hacky, but I will need to play with it and see if this could work. I am not sure if we can dispatch events from the browser to the screen reader. |
It is very hacky, but that is what David described. It would not be a long term solution. Garaventa's wise words are ringing in my ears :-)
I'd still like to see what David was thinking. |
I am curious about this approach as well, looking forward to discussion at the meeting. Though I do not like the idea of forcing the device to do something that the user did not ask for. |
@jessegreenberg Thinking back in history of this design idea. The original idea was to grab the balloon with Enter key. Since |
That is an interesting idea @terracoda. I can't picture yet how we could use this to solve the issue. I believe keyboard interactions would still be intercepted after pressing the button and we can't use the button to toggle AT modes. Were you thinking of a description design like "Enter forms mode to grab the balloon" or something like that? |
Actually, @jessegreenberg, I was just thinking |
I see. I think you are right, it should ultimately be up to us to seamlessly toggle the AT between forms and browse mode Unfortunately, I don't think interacting with the button will help with this issue. Nothing changes for the AT once the button has been pressed in terms of interaction modes. |
This is frustrating. @jessegreenberg, I am grasping at straws here, but there may two HTML syntax issues with the code that might be causing issues:
These details are on MDN
We discussed the incorrect closing input tag before. As for Phrasing content a No idea if this would matter, but the code would be very correct. |
@jessegreenberg one more thought. There is such a thing as a double slider, a slider with 2 values. Am I dreaming, or could one value represent the x-value and one represent the y-value, and still be one control? Hans Hillen discusses ARIA Sliders in a 3-part series. He has a page of examples as well. Could values 0-99 represent the x axis and then 100-199, the y-axis? Could you restrict the the left-right arrow keys for x values and the up-down arrow keys for y-values? |
@terracoda, these are all great points, and I think they could be causing issues for the screen reader beyond just the key press interception. To respond to your comments:
|
What if the balloon were represented by an input of type text? Continuing the conversation here:#108 (comment) since it pertains to that issue. |
@jessegreenberg @terracoda Do you want to wait and see what he comes back with? |
@jhung, Thank you for reviewing this issue! I agree with all concerns about the translation. The draggable balloon is not a text field nor a button. I considered the input text to be a short term workaround. It is just a way to get us up and running until accessibility API's and screen readers let us pass all desired key events to the browser for application behavior. A text field was the only input I could think of that would accomplish this. Any suggestions would be wonderful, we would appreciate any recommendations from Joseph Scheuhammer. |
@jhung thanks for this initiative. I have also discussed this problem with Dr. Clayton Lewis, my thesis advisor, and was planning on reaching out to the Web Standards community. Maybe we could coordinate this effort. Jesse and I discussed this issue a lot, but not in a direct face-to-face brain storming. |
In Issue #116, it was determined that the application role works to specification in most browsers with the letter keys. The arrow keys are generally intercepted regardless of the role. See issue #116 for more information. Considering this, I am inclined to replace the text input with a |
Progress with the application role is being tracked in #116. |
Thanks for closing @jessegreenberg. Agreed. |
From #109:
@terracoda said:
@jessegreenberg said:
Here are some results after playing around with this.
The text was updated successfully, but these errors were encountered: