keymanapp / keyman

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

feat: support normalization in keyboards #5809

Open mcdurdin opened 2 years ago

mcdurdin commented 2 years ago

Is your feature request related to a problem? Please describe.

Per Keyman Developer 14 release video feedback -- automatic normalization support would be very useful, that is both: handling NFC and NFD transparently in context, and targeting a specific normalization form for output.

Describe the solution you'd like

This would require changes to Keyman Core and KeymanWeb, along with appropriate flags in keyboards (for default output normalization) and possibly advanced user interface to allow for normalization mode selection.

Describe alternatives you've considered

It is possible to define multiple rules that handle NFC and NFD context, but tedious. It is more difficult to handle partially normalized context by defining multiple rules -- somewhat impractical.

srl295 commented 1 year ago

cross link to LDML normalisation #9468

mcdurdin commented 12 months ago

c.f. #3306.

MattGyverLee commented 12 months ago

Moved from https://github.com/keymanapp/keyman/issues/9598 :

(One further wrinkle: even if backspacing is built into the keyboard, you are going to see divergent behaviour on backspace when switching between different language keyboards. Probably not a major problem though.)

A difference in backspacing seems fine when switching keyboards or languages...it seems MUCH weirder with the same keyboard and same language in the same writing system inside the same word, right? Maybe others don't lose sleep over this, but how did we get to a place where users accept that "témɛ́" takes 5 backspaces and "témá" takes 4?

Anyways...back to something practical. I support global output normalization. This is the way. image

I'd suggest that the KB developer sets a default and the user can override it. If someone did want NFC from the Cameroon Keyboard (which is orthography-based and not language-based), I'd prefer automagic output normalization rather than writing a separate keyboard to compose the 101 composed possibilities out out of 17,600 theoretical base+1-3 diacritic combinations. We could make everyone happy if composition was configurable by the user.

Automagic normalization of the context (the parts preceding the cursor) would be a gamechanger! If this existed, I could get my backspacing without extra rules.

What are the chances that automatic normalization of output and context could make it into LDML keyboards?

srl295 commented 12 months ago

@MattGyverLee

What are the chances that automatic normalization of output and context could make it into LDML keyboards?

It’s planned already to be part of the spec, at CLDR-16943

mcdurdin commented 12 months ago

Automagic normalization of the context (the parts preceding the cursor) would be a gamechanger! If this existed, I could get my backspacing without extra rules.

What are the chances that automatic normalization of output and context could make it into LDML keyboards?

All of this is planned for LDML and will in future percolate down into KMN as well.