-
-
Notifications
You must be signed in to change notification settings - Fork 112
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
bug(web): The base context for the multitap could not be found #13344
Comments
I've been trying to investigate this one today, though admittedly without much success. Noted facts + patterns:
keyman/web/src/engine/main/src/headless/inputProcessor.ts Lines 102 to 124 in 7ab6887
The error message seen in the event requires a "truthy" |
I've tested multitapping the That said... a thought occurs to me. Back in 17.0's late-alpha / beta cycle, we had a series of issues arise with rapid typing on lower-powered Android devices. Essentially, keystrokes might end up being processed significantly after the actual touch-interaction occurred. My belief was that the final solution for that problem - #10843 - essentially acted as Web's version of a keystroke serializer like what we've had to implement for our desktop platforms (internal doc). Alternatively, maybe I need to inspect the gesture-specs more closely to make 100% sure there's no way for something to slip through. While that Shift multitap is likely one of the most common cases possible, it's also significant that Shift can be modipressed - the associated gesture models are more complicated as a result. |
I just realized one potential angle: a held backspace fires somewhat rapidly, though it shouldn't be rapidly enough to force the base context of a multitap out of the cache. That said, once a held backspace is held, there's currently nothing to prevent someone from multitapping on a different key while that held backspace repeatedly fires. (Say... to reach the caps layer?) Inspecting the gesture model, we don't even auto-stop backspace repetition once a new, separate keystroke starts... and we probably should do so to be safe. (Granted, the fact that we haven't seen obvious issues from this is encouraging!) Compare the
keyman/web/src/engine/osk/src/input/gestures/specsForLayout.ts Lines 1070 to 1090 in 7ab6887
keyman/web/src/engine/osk/src/input/gestures/specsForLayout.ts Lines 667 to 679 in 7ab6887
The second entry in |
As identified in the analysis for #13344, held backspaces have not been cancelled when receiving new inputs. It's better and cleaner to have it act similarly to normal keystrokes - receiving a new key input autocompletes any currently-held output keys. The current, existing behavior also has the potential to get particularly messy with multitaps, which restore the context at their start. If a backspace is held and then a multitap begins, each new tap of the multitap would undo the backspaces that triggered since the first tap of the multitap.
As identified in the analysis for #13344, held backspaces have not been cancelled when receiving new inputs. It's better and cleaner to have it act similarly to normal keystrokes - receiving a new key input autocompletes any currently-held output keys. The current, existing behavior also has the potential to get particularly messy with multitaps, which restore the context at their start. If a backspace is held and then a multitap begins, each new tap of the multitap would undo the backspaces that triggered since the first tap of the multitap.
To facilitate debugging cases where gestures don't work as intended, this adds sanitized logging for keystrokes resulting for gestures. These are only to be output when a relevant error or warning is emitted. This is primarily being added to facilitate investigation of #13344.
Sentry Issue: KEYMAN-WEB-MY
The text was updated successfully, but these errors were encountered: