CarrotKeys APP
Also since it does not require much "visual precision" instead relying mainly on relative motions (with configurable accuracy) after learning the mappings, one can use it without looking at screen (or possibly could also be used by visually impaired people); additionally due to how input works one can use it while moving (say walking) with much better luck/accuracy than traditional on-screen keyboard, though for safety this is not really recommended :) . It is more suited for "landscape screen orientation" and two handed use, though it can be used in portrait mode with one hand, though more awkwardly.
Note on screenshots: they just show some app and CarrotKeys help displayed while typing/fingers down on screen; fingers generally go near the sides of screen, but help/guide is displayed in center with finger trackers, so that it would not be obscured by hands. When not inputting/touching screen, CarrotKeys show nothing - thus whole screen available for the applications! (hence rather boring screenshots)
For more details on usage, see video description on YouTube for links.
If you like CarrotKeys donation would be appreciated, see YouTube video description for links.
Note that it is input method, so it requires you to explicitly enable it after installation. Settings -> System -> Language and Input -> On Screen Keyboard -> Manage On Screen Keyboards