Spell Checking in Keyman

What if Keyman, as a way of spell-checking, made it possible for a keyboard (or lexical model) to underline words not found in the wordlist.

Some words typed have multiple matches, out of which only three will show up on the suggestion bar. A word may be correct but doesn’t show up in the suggestion. In such case, a writer has no way to ascertain whether the word he has decided to keep in the document is wrongly spelt or is among the several possibilities that did not show up. Underlining those words that are not in the wordlist can help to clear that confusion.

The Other Challenge:
For under-resourced languages, some words may be correct but are not in the wordlist due to the size of textual data crawled while generating the corpus. In that case, we expect the wordlist to be updated as more data, new words and coinages become available.

The Point:
Can the Keyman team consider adding this feature of underlining words that are not in the wordlist?

Which app is this a screenshot of? I’m pretty sure it’s all up to the app that’s displaying the text to figure out what is going to be underlined; all it gets from the keyboard is the characters, not an indication of whether this words was considered a valid spelling by the keyboard. I wonder if the reason that one line of text has underlines and the other does not has to do with the app choosing to underline the first occurrence of an unknown word. You could verify that by typing a Line 3 using Gboard, which I expect will not be underlined.

Google Notebook app

I don’t really know if it is the keyboard or the OS that does the underlining, but I suspect it must be an interaction between the two that produces the underlining. If my assumption is correct, then there should be a way for the Keyman team to make the app interact with the Android OS to underline words that are not found in the wordlist. The advantage is that it will help the user to know which word was valid but couldn’t make it to the prediction bar for lack of space.

If I type any word that doesn’t exist in the dictionary of the language I’m typing in on Gboard, that word will be underlined. So words get underlined or not based on the keyboard and language used, the app one is typing in doesn’t affect the underlining (from my experience).

I know that both Android and iOS offer a bunch of additional services around text prediction which we only scratch the surface of. This would certainly be on our future roadmap as our team grows in capacity to implement this kind of functionality.

Tracking in a new predictive text ‘feature’ issue: https://github.com/keymanapp/keyman/issues/5673

1 Like

I’m fairly certain that this is currently impossible to do on Apple devices:


Because a custom keyboard can draw only within the primary view of its UIInputViewController object, it cannot select text. Text selection is under the control of the app that is using the keyboard. If that app provides an editing menu interface (such as for Cut, Copy, and Paste), the keyboard has no access to it. A custom keyboard cannot offer inline autocorrection controls near the insertion point.

Yes, iOS is much more limited than Android – almost no ability to do nice autocorrect interactions and highlights, unlike with Android. Even so, we can use UILexicon to get a list of user-specific words and integrate that in our autocorrect.