I'm on AnySoft, but it's not perfect, and I gotta say that the onscreen keyboard situation for Android was one of my biggest unexpected disappointments when moving to the platform. What I'd expected was that there'd be one FOSS keyboard that would be incredibly configurable and take over, but everything seems to significantly lack in some ways:
Some keyboards aren't great when it comes to arrow keys/control keys/other keys useful in Termux or ConnectBot to Linux systems.
Lack of keyboards that provide a straightforward way for users to create their own bindings. The ability to resize and relocate keys and to assign tap/hold/swipe bindings to individual keys seems like it'd be straightforward to me, but it doesn't seem to be a thing. I mean, why can't I remove a key that I don't use or want (say, the "mic" key if I don't use that functionality) and add my own key. Even better, my own modifier keys a la Shift to add more functionality to the other keys?
Some keyboards don't have typo correction. My accuracy on onscreen keyboards on a phone-size screen isn't good enough for me to really operate without that. I really wish that typo correction was an external program that the keyboard program could just plug into, so that this gets solved once and every new keyboard developer doesn't have to deal with reimplementing this.
Unicode input. I mean, we have this incredibly rich character set these days. Most on-screen keyboards seem to let one choose a language and to make it easy to input the common characters in that language, akin to a traditional physical keyboard. And they often provide for some common extensions to that, like superscript characters. And for some reason, a lot provide emoji support, though damned if I can see how that's essential other than maybe on something like traditional Twitter, where character count is artificially-constrained. But support for inputting Unicode seems to be remarkably limited. On desktop computers, I'm used to using emacs, which has a ton of arbitrary input methods for inputting characters. I can use various mechanisms that do things like ^2 becomes "²" or lets you search by name for Unicode characters (C-x 8 RET and then a tab-completable and searchable DIVISION SIGN becomes "÷") or lets you use TeX sequences (rightarrow becomes "→"), lets you input Unicode characters by codepoint, or a zillion other things and lets you switch among them as is convenient. An on-screen Android keyboard could do all that and unlike emacs has the ability to manipulate the actual keyboard in front of a user and could leverage "long press" and the like, but nothing like that actually exists.
Chording seems remarkably underused. I mean, you've got the ability to detect multiple finger presses, but it doesn't really seem to be exploited. I get that one-hand use is a thing, but I'd think that there'd be at least a toggle between one-hand and two-hand use to be able to leverage that.
The "drag on spacebar to move the cursor" isn't offered in AnySoft and some other keyboards, which seems like a reasonable way to deal with cursor movement where one doesn't have the precision of a mouse.
No macro support. I mean, okay, in the absence of fully-configurable keys, I'd have at least expected some limited ability to assign user-specified snippets of text to some menu or keys.
No external editor support. For some long chunks of text -- like, say, Markdown on kbin/lemmy -- I'd just as soon use one of the various dedicated Markdown editors than the in-browser editor.