m-land
Well, dynamically positioning buttons is not absolutely necessary after all. I also suspect that TextEdit stuff consumes more resources than a simple label. You could try to do it with static labels grouped for each row, say up to 8 rows, with one group per row. (referencing them is also easy, if you use ids like row0,row1, bn1,bn2 etc). Keyboard selector could be on the bottom row. (like [Lat][123][Русский][ქართული], with current highlighted somehow)
|