-
-
Notifications
You must be signed in to change notification settings - Fork 111
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
change(web): now utilizes 'inputMode="none"' on supported touch devices 📴 #7343
Conversation
User Test ResultsTest specification and instructions
Test Artifacts
|
5c80a53
to
a85dbb1
Compare
2855922
to
5825921
Compare
Later edit: and, resolved. |
Found a couple more bits to remove and fixed an issue with touch-based text selection within attached inputs causing the OSK to hide. |
Still waiting on a response to this, @bharanidharanj. |
Finally bothered trying to check the Safari version requirement via the Xcode's iOS Simulator. In iOS 12.4: 🟥 In iOS 13.2: ✅ Here, there's even a period where neither is shown (as the KMW OSK loads). It's clearly an "either-or" situation, unlike with 12.4. I'd need to go downloading extra runtimes to provide a more precise investigation, but I get the feeling this means that the breaking point is iOS 13. Also, I'm not sure if it's a Simulator-only thing, but "connecting" a hardware keyboard instantly disables the "software" (visual) keyboard on iOS. This prevented the odd Android-Chrome scenario mentioned in one of the comment threads - the issue where typing a physical keystroke force-displayed the OSK, regardless of |
Now that we have a better idea what the minimum iOS version needed is... @keymanapp-test-bot retest GROUP_IOS TEST_KEYBOARD_DISPLAY TEST_CONTENT_EDITABLE TEST_STANDARD_IFRAME TEST_INPUT_FORMATTING |
Changes in this pull request will be available for download in Keyman version 16.0.82-alpha |
Addresses #3030.
This will remove our old "touch alias element" workaround for touch devices; said workaround predates widespread support
inputMode
attribute, hence why it's stuck around for so long. Note current compatibility charts: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode#browser_compatibilityThat said, we're not 100% sure which version of Safari is actually needed for proper compatibility: iOS 12.2 Safari doesn't interpret "none" in the manner we expect. Current iOS versions definitely do, though.
Note that this will cause a break in behavior for older devices than those indicated above. It's not the "best" thing, but we're doing this for a number of reasons - this allows the Keyman Engine for Web to handle input on touch-based devices much better than before.
contentEditable
elements - see 95706dcNote that design-mode iframes (which are used for some forms of rich-text editing) are still off-limits due to some internal architectural issues for related event-handler setup. I imagine that it would be possible to address, but the changes there would be too significant to "fold in" to this PR. (Such changes would deserve their own focused PR for review.)
While this does drop a feature used by notably old browsers, based on the notes above, we've determined that continuing to maintain the feature would come at too high of an ongoing cost to the majority of users. While it might be possible to instead add some sort of auto-detection to selectively enable touch-aliasing when needed for older devices, adding that would further increase complexity and the maintenance load involved, especially for parts managing the element types listed above. Note the scale of the changeset - there's been quite a significant amount of code devoted to maintaining the status quo on this.
User Testing
This is a very notable change to KMW as used in web browsers, rather than in the mobile apps. As such, user testing will be focused on such environments.
Test Environments
Use the KeymanWeb Test Home link below for all user tests!
Test Specs
TEST_KEYBOARD_DISPLAY: Using the "Test unminified Keymanweb" test page, verify that only one keyboard is ever displayed at a time.
Note: it is possible that the OSK may be partially obscured by parts of the browser at the bottom of the web page - especially on iOS/Safari.
Do not fail this test if the full OSK would have been visible if the browser's UI were not covering the unseen parts.
Passing screenshot
Note how the address bar is covering up part of the spacebar. Recent versions of iOS/Safari have... interesting behaviors, shall we say, that make it very difficult to 100% prevent this.
Do fail this text if the OSK would have been partially offscreen anyway, or if there is empty space below it that is not filled by browser UI (that is, if part of the webpage itself is visible underneath it).
TEST_CONTENT_EDITABLE: Using the "Tests the new Attachment/Enablement API functionality" test page link, verify that interactions with content-editable elements feel natural on touch devices.
Ensure that you are "currently testing under the auto attachment mode." (First sentence of the page's second paragraph.) Otherwise, click the "Auto" link that should be present.
Click the "Create editable DIV" button once - the last button from the set of five.
Scroll down the page - you should see a bordered area containing the text "Edit me!" underneath the
contenteditable
Elements header. An example screenshot (for phones):Scroll the page so that the "Edit me!" section is displayed just above the bottom of the page's border within the browser / at the bottom of your device's screen.
Touch the "Edit me!" text as if you wished to type there.
Swap to the Lao keyboard and type a letter or two. Verify that the keyboard operates normally.
TEST_STANDARD_IFRAME: Using the "Tests the new Attachment/Enablement API functionality" test page link, verify that interactions with "normal" IFrame elements operates as expected.
TEST_INPUT_FORMATTING: Using the "Test unminified Keymanweb" test page, verify that font formatting for the active keyboard is properly applied.
the
in the input area should shift again.the
should become narrower.TEST_DRAG_SELECT: Using the "Test unminified Keymanweb" test page, verify that the OSK is not hidden when selecting text on mobile devices.
is
part of the test you just typed. Verify that the OSK did not disappear during or after selection of that part of your input.There's a strong argument to be made for more unit tests, though that may be best addressed via Web regression testing at the end of the chain.
Ideas for more:
Other notes:
Known bug:
_DISABLED_TEST_CONTEXT_AND_PREDICTIONS: Using the "Predictive Text: robust testing" test page, verify that interactions between moving the caret and text predictions works correctly.
trials and
.t
oftrials
. The suggestions forand
should disappear and be replaced by predictions based ont
.t
to become the full word, with text to the right remaining after the whitespace added by the suggestion.This (disabled) test will fail because standard elements do not reset predictive context when the caret is relocated. In fact... there's a fair shot they may not properly be updating context at all. Either way, this matches current behavior on
master
.