Instead of manually resizing each key everytime the keyboard needs to relayout, have a special grid container that will preserve aspect when resized.
This actor works in two stages though, first the keys need to be added and then layoutButtons() need to be called for the actors to be reparented to the container with the right attachment options.
70bc94946 keyboard: add a special KeyContainer actor to contain keyboard layers
js/ui/keyboard.js | 189 ++++++++++++++++++++++++++++++++++++------------------
1 file changed, 126 insertions(+), 63 deletions(-)