-
Notifications
You must be signed in to change notification settings - Fork 3
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
Alternative Input support #53
Comments
4/9/21 Zoom discussion with @jbphet:
4/12/21 Zoom discussion with @arouinfar:
|
4/15/21 design meeting: @Kathy would like to proceed with:
Start with the Discrete screen. Wave Game is going to be a little challenging. Components from vegas (level selection, reward dialog,...) and will need to be instrumented. Next steps:
|
4/22/21 design meeting @kathy-phet @arouinfar @jessegreenberg @pixelzoom Add @arouinfar is going to put all of this in the appropriate design document. Discrete screen Traversal order:
Keyboard navigation options for amplitude sliders need to be added. @arouinfar will specify. Measurement tools will need keyboard navigation. Look at ISLCRulerNode (used in coulombs-law) for example of 2-step grab and drag (seems cumbersome). The other alternative is tab to tool, then move it around. @arouinfar will discuss with @terracoda. Info dialog needs some work to set focus to close button when it opens. Wave Game screen @arouinfar will spec this out. Next button is a question. Should we move focus to Next button automatically? (It's a bit rude and not a best practice for web accessibility.) Keyboard shortcut for Next button? Reward dialog: start focus with "Keep Going" button, then "New Level", then "X' close button. |
I'm guessing (but not entirely certain) that we'll want to specify these options for the amplitude sliders. Here they are, shown with their defaults as they appear in AccessibleValueHandler.js:
|
Slack post to a11y channel: Chris Malley 3:08 PM Sam Reid 3:14 PM Michael Kauzmann 3:16 PM Chris Malley 3:17 PM Michael Kauzmann 3:18 PM |
We have missed the 5/15/21 milestone. I have not investigated how to add keyboard navigation, or whether we have sim-specific structural problems that will make it difficult to assemble the desired order. We are currently waiting for @arouinfar to produce the design document, and discuss how to handle the measurement tools with @terracoda. |
For the record, @arouinfar and @terracoda met on May 3rd, 2021. I shared with @arouinfar why we have a two-step drag interaction for some draggable objects like the balloons in BASE, the Chemistry book in Friction, and the Bar Magnet in FL. And why we don't for the Both Hands interaction in Ratio and Proportion. |
Thanks for the update @terracoda. That info wasn't passed on to me, and I don't see it mentioned here. Can @terracoda or @arouinfar please summarize what you discussed, and which interaction is appropriate for this sim? |
Sure, the balloon, book and magnet objects are the main interactions for the sim. If a learner cannot explore using that object, they cannot use the sim for anything useful. Browser support for Web Standards has improved, and continues to do so, but when I designed BASE, I had no ability as a designer to make the Yellow Balloon interaction sound interesting and intuitive to move as a straight-up custom interaction. When focus was moved to the balloon, screen reader users would hear something like this:
Not fun, not engaging, not intuitive, not usable! A button is a very intuitive interaction. Upon focus, hearing:
is very intuitive. And once grabbed and in Application Mode, the user hears further instructions (appropriate to device platform) on how to move the balloon. This pattern works great for screen reader users, but doesn't work for visual keyboard users because the balloon does not look like a button. We then designed the visual hint to support visual keyboard users. The interaction is very intuitive for everyone once it is learned. It usually takes one go at it to learn it, so the hints go away until the sim is reset. For Ratio and Proportion The Rulers in CL and GFLB In Gravity Force Lab, however, which has Interactive Description, the ruler is a grab then drag interaction, similar to the balloon. This ruler, however, is not a primary interaction. We had to do extra work in the interactive description design to make screen users understand that it was not needed for productive exploration. The ruler's name in GFL is "Measure Distance Ruler" instead of "Grab Ruler". And the help text is, "If needed, grab ruler to measure distance between centers of spheres. Once grabbed, use keyboard shortcuts to move ruler." In this sim, the value for distance is provided through the Move m1 and Move m2 slider interactions. For non-visual users there is no specific need to grab the ruler. For Fourier Making Waves, @arouinfar and you will find the right balance. Reach out when/if you have questions. |
5/20/21 design meeting: @arouinfar @kathy-phet @pixelzoom @arouinfar is working on the doc here: https://docs.google.com/document/d/1wOdmPMD704u4OLl9avI9tl2jpTvsAAcZwMaNfnr0qSs/edit?pli=1#heading=h.qbkcpoz1vzlo This is probably ready for me to start working with. For now, treat measurement tools like Coulomb's Law. Can revisit when we do interactive descriptions. |
Thanks for the summary @terracoda! For now, I think it makes the most sense to skip the grab button. When it comes time to design the descriptions, we can reevaluate. @pixelzoom I updated the focus order in the linked table to include the erase button and the updated layout on the Game screen. We also need to specify step sizes for the sliders and NumberSpinners. I reviewed the mass controls in GFL (NumberControl) and GFLB (NumberPicker) for comparison. In GFL, the standard step size for alt input is not the same as Amplitude sliders:
NumberSpinners:
I don't know if NumberSpinner has support for a bigger step like NumberPicker. If it does, great. If not, I'm fine with deferring until we get to a sim with a NumberSpinner with a larger range. |
|
@arouinfar I see this in the design doc, in the Focus Order column of Table: Discrete Screen Outline:
I don't know how to interpret this. Please provide more description/clarification. And we're skipping the amplitude NumberDisplays for keyboard nav, correct? EDIT: It might be easier to just check this in master, to see if I interpreted this correctly. |
@arouinfar Looking at the code for other sims that support keyboard navigation, it looks like we need to decide what to connect to the "play area" vs "control area". For example, in greenhouse-effect MicroScreenView.js: // PDOM - the accessible order for the control area contents
this.pdomPlayAreaNode.pdomOrder = [ this.observationWindow, clipRectangle, windowFrameNode, photonEmissionControlPanel, moleculeControlPanel ];
this.pdomControlAreaNode.pdomOrder = [ timeControlNode, showLightSpectrumButton, resetAllButton ]; I don't see this information specified in the design doc. Raising priority to high. |
@arouinfar I recall a discussion where we speculated that we could ignore "play area" vs "control area" for now, because we're not doing interactive descriptions. Well, each screen has 2 top-level Nodes, named EDIT: Since I'm creating my own root Node in my ScreenViews ( |
@jessegreenberg pointed out that we've been using "interactive description" incorrectly during this design process. The definition is at https://github.com/phetsims/phet-info/blob/master/doc/interactive-description-technical-guide.md#what-does-interactive-description-mean, and it includes 3 components:
Relevant discussion with @jessegreenberg on Slack: Chris Malley 4:32 PM Jesse Greenberg 4:32 PM Chris Malley 4:34 PM Jesse Greenberg 4:40 PM |
Re:
I discussed with @jessegreenberg on Zoom. accessibleName is the option to use. innerContent is older style, and could be replaced by accessibleName. He doesn't feel like this would be a big win. The sim will not be promoted publically as having "labels only" (there's no icon for that). And for things like eraser button and info button, it's not clear whether to "label" or "describe". |
Hmm, I feel there could be some big wins actually by adding accessibleName. That is, if the implementation time is not particularly heavy.
|
Of course, I don't want adding accessible names to derail anything about adding alternative input. I just want to add some context to the benefits. |
@terracoda I appreciate the enthusiasm and definitely agree that there could be "wins" to adding I'll happily implement whatever PhET wants. But we definitely need to pause, do a sanity check, decide what features are essential for 1.0, and reset milestones. |
@jessegreenberg and I also discussed slider issues today, specifically the If we did want to add keypad to keyboard navigation... If you open the keypad using a mouse/touch, you then tab around in the keypad, and it appears to be usable. So we could revisit adding amplitude NumberDisplays to the pdomOrder. Issues with that:
DECISION: No traversal for NumberDisplay or Keypad. Eventually would like to type numbers into Keypad. |
For 6/10/2021 design meeting, discuss the outstanding checklist items in these comments: |
6/10/21 Fourier design meeting: @arouinfar @kathy-phet @jessegreenberg @KatieWoe @pixelzoom Notes and decisions were added to above checklist items, see "DECISION" comments. Summary:
|
Alternative input support is done for Discrete and Wave Game screens. @arouinfar Remaining tasks for Continuous screen:
|
I am not sure if NumberDisplay is the same component as I've seen in the Arithmetic simulation, but I think it might be. I think it is an interface component that allows a learner to touch or click numbers in order to enter values into a textbox in the sim. I agree if a learner can get to those discrete values right on the slider using the keyboard (or some alternative input method), they do not need to have access to the NumberDisplay component. That just needs to be made clear in the Teacher Tips for the sim. Making that clear will help all learners. Mouse users might switch to using the keyboard when they need a precise number. I think of NumberDisplay as an accessibility feature for learners using mouse and touch who would otherwise have a hard time entering exact values. In the future, should we want to make NumberDisplay available to other input methods, I think it would make sense that the component is a navigable region or group, that is thoughtfully designed to not exponentially increase the number of Tab stops in the PDOM. |
@terracoda said:
NumberDisplay is a display only. It is not interactive, has no support for any kind of input. In Fourier, I've added a mouse/touch listener (PressListener) that open a keypad. There is currently no support for this in common-code, and it must be done on a sim-specific basic. Adding keyboard support to open a keypad would involve more sim-specific work, as described in #53 (comment):
I do not think that input support should be added to NumberDisplay - it is useful to have a UI component that is a display only, without the overhead of input handling. I do think it would be useful to have a common-code subclass of NumberDisplay that adds support for opening a keypad. But there is currently no proposal or GitHub issue for such a component. |
Thinking about this more, I've changed my mind - an option to NumberDisplay would be preferrable to a subclass. NumberDisplay is (or should be) used as a subcomponet on many other UI components: NumberControl, NumberSpinner,... It would be nice to have keypad entry as an option for those controls, probably via the nested |
I've converted all remaining checklist items to individual GitHub issues. I've moved the general discussion about NumberDisplay input handling to phetsims/scenery-phet#678. So this issue can be closed. |
From 4/13/21 Q2 planning meeting:
Investigate adding keyboard navigation for the 1.0 release.
Milestones:
start = 4/1/21
end = 5/15/21
Desig doc: Fourier: Making Waves - Interactive Description Design
The text was updated successfully, but these errors were encountered: