keymanapp / keyman

Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
https://keyman.com/
Other
377 stars 104 forks source link

bug(android): keyboard output broken on Android 5.0 #10283

Closed jahorton closed 6 months ago

jahorton commented 6 months ago

I happened to discover this one while vetting recent work on #10274.

I've also narrowed down the cause: es6-shim does not adequately polyfill the Map type. This type is used in main Web for fat-finger correction checks, as originally suggested here: https://github.com/keymanapp/keyman/pull/9655#discussion_r1360005626.

Not sure how regression testing didn't catch this before the gestures feature-branch merge, since we should have tested against API 21 / Chrome 37 for that... but at least it's been caught now.

There are two ways to remedy this:

  1. Find a better Map polyfill.
  2. Revert to using an object as a stand-in.
    • Though... after accepting the suggestion at the linked comment, Map use did propagate to a number of other places within Web. This might actually take a decent bit of work to revert.

If it were just this block that were affected, we could allow silent failure... but there are other, more critical things that are also dependent on Map - such as the multitap context-rewinding mechanism. That's... a touch more critical.

bharanidharanj commented 6 months ago

I noticed the OSK is not working with the recent Keyman 17.0.232 build in the Android 5.0 / API 21 emulator. I tried different versions, and the problem started from Keyman 17.0.130 onward.

jahorton commented 6 months ago

from Keyman 17.0.130 onward.

Assuming you meant 17.0.230...

https://github.com/keymanapp/keyman/blob/master/HISTORY.md#170230-alpha-2023-12-14

Guess when the feature-gesture branch landed?


Granted, there have been a lot of times during this alpha cycle where the keyboard was broken in one way or another... so .130 isn't actually out of the question.