I think Hypnospace Outlaw did it this way and it was made with Construct. So it had all the drawbacks you listed.
The best results I got so far was having a text input object always set to focus when active and hidden, then change a spritefont to its text on a text change, but it's still not ideal because you can do everything, except the cursor being visible or being able to place a sprite for it anywhere in the faked text entry. Otherwise, copy and paste and everything works. But you can't change the sprite cursor based on input like left and right keys, because the keyboard object can't detect input while a text entry is focused.