Android allows you to swap the virtual keyboard. I use unexpected keyboard which is also free software. It's excellent for programming. Before that I used Hacker's Keyboard which has actual arrow keys.
Termux also has a configurable bar at the bottom where you can map any keys you want. I use it for function and arrow keys plus a bunch of common symbols.
Not sure what you mean by modal keyboard, but there is fully customizable row of keys in termux.
I disabled it, because I use special android keyboard app[0] with a custom layout made from scratch[1]: all common symbols, arrows, esc, ctrl, alt, forward delete, paste and enter gestures etc. etc.
[0] - https://jbak2.ucoz.net/ (yes it's horrible website, but it's free and easy to maintain for the handicapped developer)
Well, the modal command system is sort of hacked onto the qwerty keyboard. Surely it'd be more natural to just "insert" directly rather than hitting "i".
Termux also has a configurable bar at the bottom where you can map any keys you want. I use it for function and arrow keys plus a bunch of common symbols.
Here's an example from my dotfiles:
https://github.com/matheusmoreira/.files/blob/38565320fefb92...