Skip to content
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): dropped chars and unintended upflicks with 17.0.307-beta #11221

Closed
mcdurdin opened this issue Apr 13, 2024 · 10 comments · Fixed by #11245
Closed

bug(web): dropped chars and unintended upflicks with 17.0.307-beta #11221

mcdurdin opened this issue Apr 13, 2024 · 10 comments · Fixed by #11245
Assignees
Milestone

Comments

@mcdurdin
Copy link
Member

mcdurdin commented Apr 13, 2024

Regression from 17.0.301-beta.

Video on drive: https://drive.google.com/file/d/1AWCRAX1eT6Ql9TRycP2c3U36k5LbTqOY/view?usp=drivesdk

@alex-larkin
Copy link

I observe the same behavior using Keyman Beta for Android 10.0.307-beta and my own keyboard. I have "Show taps" activated on my device (Samsung Galaxy S21 running Android 12) helping to confirm the issue:

https://drive.google.com/file/d/1vb5A0XvwKIHn72ww38XSLotKl9fgwSQk/view?usp=sharing
(Sorry for the many sincere typos not related to the issue 😂. Had to type quickly.)

Not in recording:

Observed no dropped characters when typing slowly.

I tried to reproduce the issue on the keyboard I installed from my KAB app (using the same .kmp file) but found that the issue was not present there.

@mcdurdin
Copy link
Member Author

17.0.304 is good

@mcdurdin
Copy link
Member Author

17.0.305 is good

@mcdurdin
Copy link
Member Author

17.0.306 is good. Regression definitely introduced in 17.0.307-beta.

@jahorton
Copy link
Contributor

The most likely influence would be #11216, then. And I do recall seeing cases when rapid-typing that a longpress in the middle of rapid-typing sometimes cancelled out further keystrokes; I should've documented it at the time. (I noticed this while addressing the previous rapid-typing issue.) Given #10647, if a longpress were accidentally triggered when rapidly typing, and then the prior bug triggered, that could easily cause dropped keystrokes.

Gives me something to look at and chase down, at least.

@jahorton jahorton added this to the B17S6 milestone Apr 17, 2024
@jahorton jahorton self-assigned this Apr 17, 2024
@jahorton jahorton changed the title bug(web): droppd chars and unintended upflicks with 17.0.307-beta bug(web): dropped chars and unintended upflicks with 17.0.307-beta Apr 17, 2024
@jahorton
Copy link
Contributor

Device used in the initial error report: Samsung Galaxy A53 5G

  • Usually used in portrait
  • Official resolution spec: 1080 x 2400 pixels, ~405ppi.

@jahorton
Copy link
Contributor

I think I found one repro, at least:

Type the following sequence with the pattern described below: alskdjfhg (the full second row, starting from opposite ends)

  1. Press and hold 'a'
  2. Press and hold 'l'
  3. Release 'a'
  4. Press and hold 's'
  5. Release 's'
  6. Continue the pattern, only releasing a key after the next key in the sequence has been pressed and held.

Of course, also make sure you don't take long enough for a longpress to trigger.

Expected result: obviously, alskdjfhg
Actual result: asdfg (or similar).

  • In other words, if executed perfectly, every other key will be dropped.

@mcdurdin
Copy link
Member Author

That repro correlates well with what I'd expect when typing rapidly.

@jahorton
Copy link
Contributor

I believe I've now identified why it showed up with .307.

In #11216, the "resolution priority" of the base longpress model was raised significantly in order to ensure that the longpress up-flick wasn't blocked by flick-start for keys with both longpresses and downflicks. This new priority is also significantly higher than that of a basic 'initial-tap'.

This has an unfortunate side-effect in which a missing flag from the longpress model had a cross-effect with certain longpress cancellation patterns. If a second touch starts during the longpress wait, we cancel the longpress. Unfortunately, the flag that said "the second touch isn't part of the longpress" wasn't present... meaning that failure of the longpress also auto-cancelled the touch and input of the cancelling touch.

@mcdurdin
Copy link
Member Author

Glad you were about to figure this out @jahorton!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants