[gnome-shell/wip/carlosg/osk-updates: 4/33] data: Update OSK JSON files to new format




commit 915a31578e71688871bea777e17c2c31eb5544ce
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Apr 13 17:02:59 2022 +0200

    data: Update OSK JSON files to new format
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2278>

 data/osk-layouts/am.json          | 1354 +++++++++++++++++++-------------
 data/osk-layouts/ara.json         | 1074 +++++++++++++++-----------
 data/osk-layouts/at.json          | 1256 ++++++++++++++++++------------
 data/osk-layouts/be.json          | 1337 +++++++++++++++++++-------------
 data/osk-layouts/bg.json          | 1198 +++++++++++++++++-----------
 data/osk-layouts/by.json          | 1218 +++++++++++++++++------------
 data/osk-layouts/ca.json          | 1314 ++++++++++++++++++-------------
 data/osk-layouts/ch+fr.json       | 1258 ++++++++++++++++++------------
 data/osk-layouts/ch.json          | 1258 ++++++++++++++++++------------
 data/osk-layouts/cz.json          | 1342 +++++++++++++++++++-------------
 data/osk-layouts/de.json          | 1256 ++++++++++++++++++------------
 data/osk-layouts/dk.json          | 1308 ++++++++++++++++++-------------
 data/osk-layouts/ee.json          | 1460 ++++++++++++++++++++---------------
 data/osk-layouts/epo.json         | 1542 +++++++++++++++++++++----------------
 data/osk-layouts/es+cat.json      | 1324 ++++++++++++++++++-------------
 data/osk-layouts/es.json          | 1328 +++++++++++++++++++-------------
 data/osk-layouts/fi.json          | 1268 ++++++++++++++++++------------
 data/osk-layouts/fr.json          | 1348 +++++++++++++++++++-------------
 data/osk-layouts/ge.json          |  904 +++++++++++++---------
 data/osk-layouts/gr.json          | 1180 +++++++++++++++++-----------
 data/osk-layouts/hr.json          | 1178 +++++++++++++++++-----------
 data/osk-layouts/hu.json          | 1274 +++++++++++++++++-------------
 data/osk-layouts/id.json          | 1130 ++++++++++++++++-----------
 data/osk-layouts/il.json          |  930 +++++++++++++---------
 data/osk-layouts/in+bolnagri.json |  974 +++++++++++++----------
 data/osk-layouts/in+mal.json      | 1244 ++++++++++++++++++------------
 data/osk-layouts/ir.json          | 1090 +++++++++++++++-----------
 data/osk-layouts/is.json          | 1282 +++++++++++++++++-------------
 data/osk-layouts/it.json          | 1276 +++++++++++++++++-------------
 data/osk-layouts/ke.json          | 1270 +++++++++++++++++-------------
 data/osk-layouts/kg.json          | 1230 +++++++++++++++++------------
 data/osk-layouts/kh.json          | 1084 +++++++++++++++-----------
 data/osk-layouts/la.json          | 1066 +++++++++++++++----------
 data/osk-layouts/latam.json       | 1326 ++++++++++++++++++-------------
 data/osk-layouts/lt.json          | 1410 +++++++++++++++++++--------------
 data/osk-layouts/lv.json          | 1406 +++++++++++++++++++--------------
 data/osk-layouts/mk.json          | 1218 +++++++++++++++++------------
 data/osk-layouts/mn.json          | 1230 +++++++++++++++++------------
 data/osk-layouts/my.json          | 1130 ++++++++++++++++-----------
 data/osk-layouts/nl.json          | 1284 +++++++++++++++++-------------
 data/osk-layouts/no.json          | 1308 ++++++++++++++++++-------------
 data/osk-layouts/ph.json          | 1130 ++++++++++++++++-----------
 data/osk-layouts/pl.json          | 1274 +++++++++++++++++-------------
 data/osk-layouts/pt.json          | 1284 +++++++++++++++++-------------
 data/osk-layouts/ro.json          | 1210 +++++++++++++++++------------
 data/osk-layouts/rs.json          | 1218 +++++++++++++++++------------
 data/osk-layouts/ru.json          | 1218 +++++++++++++++++------------
 data/osk-layouts/se.json          | 1376 +++++++++++++++++++--------------
 data/osk-layouts/si.json          | 1152 ++++++++++++++++-----------
 data/osk-layouts/sk.json          | 1412 +++++++++++++++++++--------------
 data/osk-layouts/th.json          | 1492 +++++++++++++++++++++--------------
 data/osk-layouts/tr.json          | 1248 ++++++++++++++++++------------
 data/osk-layouts/ua.json          | 1226 +++++++++++++++++------------
 data/osk-layouts/uk.json          | 1268 +++++++++++++++++-------------
 data/osk-layouts/us.json          | 1266 ++++++++++++++++++------------
 data/osk-layouts/vn.json          | 1402 +++++++++++++++++++--------------
 data/osk-layouts/za.json          | 1294 ++++++++++++++++++-------------
 57 files changed, 42562 insertions(+), 28775 deletions(-)
---
diff --git a/data/osk-layouts/am.json b/data/osk-layouts/am.json
index 23c86ba745..b5957fda9b 100644
--- a/data/osk-layouts/am.json
+++ b/data/osk-layouts/am.json
@@ -5,138 +5,220 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "է"
-          ],
-          [
-            "թ"
-          ],
-          [
-            "փ"
-          ],
-          [
-            "ձ"
-          ],
-          [
-            "ջ"
-          ],
-          [
-            "ր"
-          ],
-          [
-            "չ"
-          ],
-          [
-            "ճ"
-          ],
-          [
-            "ժ"
-          ],
-          [
-            "ծ"
-          ]
+          {
+            "strings": [
+              "է"
+            ]
+          },
+          {
+            "strings": [
+              "թ"
+            ]
+          },
+          {
+            "strings": [
+              "փ"
+            ]
+          },
+          {
+            "strings": [
+              "ձ"
+            ]
+          },
+          {
+            "strings": [
+              "ջ"
+            ]
+          },
+          {
+            "strings": [
+              "ր"
+            ]
+          },
+          {
+            "strings": [
+              "չ"
+            ]
+          },
+          {
+            "strings": [
+              "ճ"
+            ]
+          },
+          {
+            "strings": [
+              "ժ"
+            ]
+          },
+          {
+            "strings": [
+              "ծ"
+            ]
+          }
         ],
         [
-          [
-            "ք"
-          ],
-          [
-            "ո"
-          ],
-          [
-            "ե",
-            "և"
-          ],
-          [
-            "ռ"
-          ],
-          [
-            "տ"
-          ],
-          [
-            "ը"
-          ],
-          [
-            "ւ"
-          ],
-          [
-            "ի"
-          ],
-          [
-            "օ"
-          ],
-          [
-            "պ"
-          ]
+          {
+            "strings": [
+              "ք"
+            ]
+          },
+          {
+            "strings": [
+              "ո"
+            ]
+          },
+          {
+            "strings": [
+              "ե",
+              "և"
+            ]
+          },
+          {
+            "strings": [
+              "ռ"
+            ]
+          },
+          {
+            "strings": [
+              "տ"
+            ]
+          },
+          {
+            "strings": [
+              "ը"
+            ]
+          },
+          {
+            "strings": [
+              "ւ"
+            ]
+          },
+          {
+            "strings": [
+              "ի"
+            ]
+          },
+          {
+            "strings": [
+              "օ"
+            ]
+          },
+          {
+            "strings": [
+              "պ"
+            ]
+          }
         ],
         [
-          [
-            "ա"
-          ],
-          [
-            "ս"
-          ],
-          [
-            "դ"
-          ],
-          [
-            "ֆ"
-          ],
-          [
-            "գ"
-          ],
-          [
-            "հ"
-          ],
-          [
-            "յ"
-          ],
-          [
-            "կ"
-          ],
-          [
-            "լ"
-          ],
-          [
-            "խ"
-          ]
+          {
+            "strings": [
+              "ա"
+            ]
+          },
+          {
+            "strings": [
+              "ս"
+            ]
+          },
+          {
+            "strings": [
+              "դ"
+            ]
+          },
+          {
+            "strings": [
+              "ֆ"
+            ]
+          },
+          {
+            "strings": [
+              "գ"
+            ]
+          },
+          {
+            "strings": [
+              "հ"
+            ]
+          },
+          {
+            "strings": [
+              "յ"
+            ]
+          },
+          {
+            "strings": [
+              "կ"
+            ]
+          },
+          {
+            "strings": [
+              "լ"
+            ]
+          },
+          {
+            "strings": [
+              "խ"
+            ]
+          }
         ],
         [
-          [
-            "զ"
-          ],
-          [
-            "ղ"
-          ],
-          [
-            "ց"
-          ],
-          [
-            "վ"
-          ],
-          [
-            "բ"
-          ],
-          [
-            "ն"
-          ],
-          [
-            "մ"
-          ],
-          [
-            "շ"
-          ]
+          {
+            "strings": [
+              "զ"
+            ]
+          },
+          {
+            "strings": [
+              "ղ"
+            ]
+          },
+          {
+            "strings": [
+              "ց"
+            ]
+          },
+          {
+            "strings": [
+              "վ"
+            ]
+          },
+          {
+            "strings": [
+              "բ"
+            ]
+          },
+          {
+            "strings": [
+              "ն"
+            ]
+          },
+          {
+            "strings": [
+              "մ"
+            ]
+          },
+          {
+            "strings": [
+              "շ"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            "։"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              "։"
+            ]
+          }
         ]
       ]
     },
@@ -145,138 +227,220 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Է"
-          ],
-          [
-            "Թ"
-          ],
-          [
-            "Փ"
-          ],
-          [
-            "Ձ"
-          ],
-          [
-            "Ջ"
-          ],
-          [
-            "Ր"
-          ],
-          [
-            "Չ"
-          ],
-          [
-            "Ճ"
-          ],
-          [
-            "Ժ"
-          ],
-          [
-            "Ծ"
-          ]
+          {
+            "strings": [
+              "Է"
+            ]
+          },
+          {
+            "strings": [
+              "Թ"
+            ]
+          },
+          {
+            "strings": [
+              "Փ"
+            ]
+          },
+          {
+            "strings": [
+              "Ձ"
+            ]
+          },
+          {
+            "strings": [
+              "Ջ"
+            ]
+          },
+          {
+            "strings": [
+              "Ր"
+            ]
+          },
+          {
+            "strings": [
+              "Չ"
+            ]
+          },
+          {
+            "strings": [
+              "Ճ"
+            ]
+          },
+          {
+            "strings": [
+              "Ժ"
+            ]
+          },
+          {
+            "strings": [
+              "Ծ"
+            ]
+          }
         ],
         [
-          [
-            "Ք"
-          ],
-          [
-            "Ո"
-          ],
-          [
-            "Ե",
-            "ԵՒ"
-          ],
-          [
-            "Ռ"
-          ],
-          [
-            "Տ"
-          ],
-          [
-            "Ը"
-          ],
-          [
-            "Ւ"
-          ],
-          [
-            "Ի"
-          ],
-          [
-            "Օ"
-          ],
-          [
-            "Պ"
-          ]
+          {
+            "strings": [
+              "Ք"
+            ]
+          },
+          {
+            "strings": [
+              "Ո"
+            ]
+          },
+          {
+            "strings": [
+              "Ե",
+              "ԵՒ"
+            ]
+          },
+          {
+            "strings": [
+              "Ռ"
+            ]
+          },
+          {
+            "strings": [
+              "Տ"
+            ]
+          },
+          {
+            "strings": [
+              "Ը"
+            ]
+          },
+          {
+            "strings": [
+              "Ւ"
+            ]
+          },
+          {
+            "strings": [
+              "Ի"
+            ]
+          },
+          {
+            "strings": [
+              "Օ"
+            ]
+          },
+          {
+            "strings": [
+              "Պ"
+            ]
+          }
         ],
         [
-          [
-            "Ա"
-          ],
-          [
-            "Ս"
-          ],
-          [
-            "Դ"
-          ],
-          [
-            "Ֆ"
-          ],
-          [
-            "Գ"
-          ],
-          [
-            "Հ"
-          ],
-          [
-            "Յ"
-          ],
-          [
-            "Կ"
-          ],
-          [
-            "Լ"
-          ],
-          [
-            "Խ"
-          ]
+          {
+            "strings": [
+              "Ա"
+            ]
+          },
+          {
+            "strings": [
+              "Ս"
+            ]
+          },
+          {
+            "strings": [
+              "Դ"
+            ]
+          },
+          {
+            "strings": [
+              "Ֆ"
+            ]
+          },
+          {
+            "strings": [
+              "Գ"
+            ]
+          },
+          {
+            "strings": [
+              "Հ"
+            ]
+          },
+          {
+            "strings": [
+              "Յ"
+            ]
+          },
+          {
+            "strings": [
+              "Կ"
+            ]
+          },
+          {
+            "strings": [
+              "Լ"
+            ]
+          },
+          {
+            "strings": [
+              "Խ"
+            ]
+          }
         ],
         [
-          [
-            "Զ"
-          ],
-          [
-            "Ղ"
-          ],
-          [
-            "Ց"
-          ],
-          [
-            "Վ"
-          ],
-          [
-            "Բ"
-          ],
-          [
-            "Ն"
-          ],
-          [
-            "Մ"
-          ],
-          [
-            "Շ"
-          ]
+          {
+            "strings": [
+              "Զ"
+            ]
+          },
+          {
+            "strings": [
+              "Ղ"
+            ]
+          },
+          {
+            "strings": [
+              "Ց"
+            ]
+          },
+          {
+            "strings": [
+              "Վ"
+            ]
+          },
+          {
+            "strings": [
+              "Բ"
+            ]
+          },
+          {
+            "strings": [
+              "Ն"
+            ]
+          },
+          {
+            "strings": [
+              "Մ"
+            ]
+          },
+          {
+            "strings": [
+              "Շ"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            "։"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              "։"
+            ]
+          }
         ]
       ]
     },
@@ -285,167 +449,229 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "՜",
-            "¡"
-          ],
-          [
-            "?",
-            "՞",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "՜",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "՞",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            "՝"
-          ],
-          [
-            "։",
-            "!",
-            "?",
-            ",",
-            ".",
-            "֊",
-            "՜",
-            "՝",
-            "՞",
-            ":",
-            ";",
-            "@",
-            "ՙ",
-            "՚",
-            "՛",
-            "՟"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              "՝"
+            ]
+          },
+          {
+            "strings": [
+              "։",
+              "!",
+              "?",
+              ",",
+              ".",
+              "֊",
+              "՜",
+              "՝",
+              "՞",
+              ":",
+              ";",
+              "@",
+              "ՙ",
+              "՚",
+              "՛",
+              "՟"
+            ]
+          }
         ]
       ]
     },
@@ -454,142 +680,204 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            "՝"
-          ],
-          [
-            "։",
-            "!",
-            "?",
-            ",",
-            ".",
-            "֊",
-            "՜",
-            "՝",
-            "՞",
-            ":",
-            ";",
-            "@",
-            "ՙ",
-            "՚",
-            "՛",
-            "՟"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              "՝"
+            ]
+          },
+          {
+            "strings": [
+              "։",
+              "!",
+              "?",
+              ",",
+              ".",
+              "֊",
+              "՜",
+              "՝",
+              "՞",
+              ":",
+              ";",
+              "@",
+              "ՙ",
+              "՚",
+              "՛",
+              "՟"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ara.json b/data/osk-layouts/ara.json
index 0a4900cab1..d8be7c5adf 100644
--- a/data/osk-layouts/ara.json
+++ b/data/osk-layouts/ara.json
@@ -5,156 +5,226 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "ض"
-          ],
-          [
-            "ص"
-          ],
-          [
-            "ث"
-          ],
-          [
-            "ق",
-            "ڨ"
-          ],
-          [
-            "ف",
-            "ڤ",
-            "ڢ",
-            "ڥ"
-          ],
-          [
-            "غ"
-          ],
-          [
-            "ع"
-          ],
-          [
-            "ه",
-            "ه‍"
-          ],
-          [
-            "خ"
-          ],
-          [
-            "ح"
-          ],
-          [
-            "ج",
-            "چ"
-          ]
+          {
+            "strings": [
+              "ض"
+            ]
+          },
+          {
+            "strings": [
+              "ص"
+            ]
+          },
+          {
+            "strings": [
+              "ث"
+            ]
+          },
+          {
+            "strings": [
+              "ق",
+              "ڨ"
+            ]
+          },
+          {
+            "strings": [
+              "ف",
+              "ڤ",
+              "ڢ",
+              "ڥ"
+            ]
+          },
+          {
+            "strings": [
+              "غ"
+            ]
+          },
+          {
+            "strings": [
+              "ع"
+            ]
+          },
+          {
+            "strings": [
+              "ه",
+              "ه‍"
+            ]
+          },
+          {
+            "strings": [
+              "خ"
+            ]
+          },
+          {
+            "strings": [
+              "ح"
+            ]
+          },
+          {
+            "strings": [
+              "ج",
+              "چ"
+            ]
+          }
         ],
         [
-          [
-            "ش",
-            "ڜ"
-          ],
-          [
-            "س"
-          ],
-          [
-            "ي",
-            "ئ",
-            "ى"
-          ],
-          [
-            "ب",
-            "پ"
-          ],
-          [
-            "ل",
-            "لا",
-            "لأ",
-            "لإ",
-            "لآ"
-          ],
-          [
-            "ا",
-            "آ",
-            "ء",
-            "أ",
-            "إ",
-            "ٱ"
-          ],
-          [
-            "ت"
-          ],
-          [
-            "ن"
-          ],
-          [
-            "م"
-          ],
-          [
-            "ك",
-            "گ",
-            "ک"
-          ],
-          [
-            "ط"
-          ]
+          {
+            "strings": [
+              "ش",
+              "ڜ"
+            ]
+          },
+          {
+            "strings": [
+              "س"
+            ]
+          },
+          {
+            "strings": [
+              "ي",
+              "ئ",
+              "ى"
+            ]
+          },
+          {
+            "strings": [
+              "ب",
+              "پ"
+            ]
+          },
+          {
+            "strings": [
+              "ل",
+              "لا",
+              "لأ",
+              "لإ",
+              "لآ"
+            ]
+          },
+          {
+            "strings": [
+              "ا",
+              "آ",
+              "ء",
+              "أ",
+              "إ",
+              "ٱ"
+            ]
+          },
+          {
+            "strings": [
+              "ت"
+            ]
+          },
+          {
+            "strings": [
+              "ن"
+            ]
+          },
+          {
+            "strings": [
+              "م"
+            ]
+          },
+          {
+            "strings": [
+              "ك",
+              "گ",
+              "ک"
+            ]
+          },
+          {
+            "strings": [
+              "ط"
+            ]
+          }
         ],
         [
-          [
-            "ذ"
-          ],
-          [
-            "ء"
-          ],
-          [
-            "ؤ"
-          ],
-          [
-            "ر"
-          ],
-          [
-            "ى",
-            "ئ"
-          ],
-          [
-            "ة"
-          ],
-          [
-            "و"
-          ],
-          [
-            "ز",
-            "ژ"
-          ],
-          [
-            "ظ"
-          ],
-          [
-            "د"
-          ]
+          {
+            "strings": [
+              "ذ"
+            ]
+          },
+          {
+            "strings": [
+              "ء"
+            ]
+          },
+          {
+            "strings": [
+              "ؤ"
+            ]
+          },
+          {
+            "strings": [
+              "ر"
+            ]
+          },
+          {
+            "strings": [
+              "ى",
+              "ئ"
+            ]
+          },
+          {
+            "strings": [
+              "ة"
+            ]
+          },
+          {
+            "strings": [
+              "و"
+            ]
+          },
+          {
+            "strings": [
+              "ز",
+              "ژ"
+            ]
+          },
+          {
+            "strings": [
+              "ظ"
+            ]
+          },
+          {
+            "strings": [
+              "د"
+            ]
+          }
         ],
         [
-          [
-            "،"
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "\"",
-            "'",
-            "#",
-            "-",
-            ":",
-            "!",
-            "،",
-            "؟",
-            "@",
-            "&",
-            "%",
-            "+",
-            "؛",
-            "/",
-            ")",
-            "("
-          ]
+          {
+            "strings": [
+              "،"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "\"",
+              "'",
+              "#",
+              "-",
+              ":",
+              "!",
+              "،",
+              "؟",
+              "@",
+              "&",
+              "%",
+              "+",
+              "؛",
+              "/",
+              ")",
+              "("
+            ]
+          }
         ]
       ]
     },
@@ -163,175 +233,237 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "١",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "٢",
-            "²",
-            "⅔"
-          ],
-          [
-            "٣",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "٤",
-            "⁴"
-          ],
-          [
-            "٥",
-            "⅝"
-          ],
-          [
-            "٦"
-          ],
-          [
-            "٧",
-            "⅞"
-          ],
-          [
-            "٨"
-          ],
-          [
-            "٩"
-          ],
-          [
-            "٠",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "١",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "٢",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "٣",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "٤",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "٥",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "٦"
+            ]
+          },
+          {
+            "strings": [
+              "٧",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "٨"
+            ]
+          },
+          {
+            "strings": [
+              "٩"
+            ]
+          },
+          {
+            "strings": [
+              "٠",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "٪",
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "﴿",
-            ">",
-            "}",
-            "]"
-          ],
-          [
-            ")",
-            "﴾",
-            "<",
-            "{",
-            "["
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "٪",
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "﴿",
+              ">",
+              "}",
+              "]"
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              "﴾",
+              "<",
+              "{",
+              "["
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "★",
-            "٭"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            "؛",
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "؟",
-            "?"
-          ]
+          {
+            "strings": [
+              "*",
+              "★",
+              "٭"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              "؛",
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "؟",
+              "?"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            "،",
-            "؟",
-            "؛",
-            "!",
-            ":",
-            "-",
-            "/",
-            "'",
-            "\""
-          ],
-          [
-            ".",
-            "ٕ",
-            "ٔ",
-            "ْ",
-            "ٍ",
-            "ٌ",
-            "ً",
-            "ّ",
-            "ٖ",
-            "ٰ",
-            "ٓ",
-            "ِ",
-            "ُ",
-            "َ",
-            "ـ"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              "،",
+              "؟",
+              "؛",
+              "!",
+              ":",
+              "-",
+              "/",
+              "'",
+              "\""
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "ٕ",
+              "ٔ",
+              "ْ",
+              "ٍ",
+              "ٌ",
+              "ً",
+              "ّ",
+              "ٖ",
+              "ٰ",
+              "ٓ",
+              "ِ",
+              "ُ",
+              "َ",
+              "ـ"
+            ]
+          }
         ]
       ]
     },
@@ -340,145 +472,207 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            ">",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            " "
-          ],
-          [
-            "،",
-            "؟",
-            "؛",
-            "!",
-            ":",
-            "-",
-            "/",
-            "'",
-            "\""
-          ],
-          [
-            ".",
-            "ٕ",
-            "ٔ",
-            "ْ",
-            "ٍ",
-            "ٌ",
-            "ً",
-            "ّ",
-            "ٖ",
-            "ٰ",
-            "ٓ",
-            "ِ",
-            "ُ",
-            "َ",
-            "ـ"
-          ]
+          {
+            "strings": [
+              "<",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              "،",
+              "؟",
+              "؛",
+              "!",
+              ":",
+              "-",
+              "/",
+              "'",
+              "\""
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "ٕ",
+              "ٔ",
+              "ْ",
+              "ٍ",
+              "ٌ",
+              "ً",
+              "ّ",
+              "ٖ",
+              "ٰ",
+              "ٓ",
+              "ِ",
+              "ُ",
+              "َ",
+              "ـ"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/at.json b/data/osk-layouts/at.json
index 6eefa061b9..b61153a6ca 100644
--- a/data/osk-layouts/at.json
+++ b/data/osk-layouts/at.json
@@ -5,138 +5,196 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ê",
-            "ë",
-            "ė"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "z"
-          ],
-          [
-            "u",
-            "ü",
-            "û",
-            "ù",
-            "ú",
-            "ū"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o",
-            "ö",
-            "ô",
-            "ò",
-            "ó",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ê",
+              "ë",
+              "ė"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ü",
+              "û",
+              "ù",
+              "ú",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ö",
+              "ô",
+              "ò",
+              "ó",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "ä",
-            "â",
-            "à",
-            "á",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s",
-            "ß",
-            "ś",
-            "š"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "ä",
+              "â",
+              "à",
+              "á",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß",
+              "ś",
+              "š"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "y"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -145,138 +203,196 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ê",
-            "Ë",
-            "Ė"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Z"
-          ],
-          [
-            "U",
-            "Ü",
-            "Û",
-            "Ù",
-            "Ú",
-            "Ū"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O",
-            "Ö",
-            "Ô",
-            "Ò",
-            "Ó",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ê",
+              "Ë",
+              "Ė"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ü",
+              "Û",
+              "Ù",
+              "Ú",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ö",
+              "Ô",
+              "Ò",
+              "Ó",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Ä",
-            "Â",
-            "À",
-            "Á",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S",
-            "SS",
-            "Ś",
-            "Š"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Ä",
+              "Â",
+              "À",
+              "Á",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "SS",
+              "Ś",
+              "Š"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Y"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -285,151 +401,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -438,129 +616,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/be.json b/data/osk-layouts/be.json
index 7406463e3b..030c87f96b 100644
--- a/data/osk-layouts/be.json
+++ b/data/osk-layouts/be.json
@@ -5,157 +5,218 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "a",
-            "á",
-            "ä",
-            "â",
-            "à",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "z"
-          ],
-          [
-            "e",
-            "é",
-            "ë",
-            "ê",
-            "è",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y",
-            "ÿ",
-            "ij"
-          ],
-          [
-            "u",
-            "ú",
-            "ü",
-            "û",
-            "ù",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "ï",
-            "ì",
-            "î",
-            "į",
-            "ī",
-            "ij"
-          ],
-          [
-            "o",
-            "ó",
-            "ö",
-            "ô",
-            "ò",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "ä",
+              "â",
+              "à",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "ë",
+              "ê",
+              "è",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ÿ",
+              "ij"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ü",
+              "û",
+              "ù",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ï",
+              "ì",
+              "î",
+              "į",
+              "ī",
+              "ij"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ö",
+              "ô",
+              "ò",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "q"
-          ],
-          [
-            "s",
-            "ß"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            "w"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç",
-            "ć",
-            "č"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ]
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç",
+              "ć",
+              "č"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -164,157 +225,217 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "A",
-            "Á",
-            "Ä",
-            "Â",
-            "À",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "Z"
-          ],
-          [
-            "E",
-            "É",
-            "Ë",
-            "Ê",
-            "È",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y",
-            "Ÿ",
-            "IJ"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ü",
-            "Û",
-            "Ù",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Ï",
-            "Ì",
-            "Î",
-            "Į",
-            "Ī",
-            "IJ"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ö",
-            "Ô",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "Ä",
+              "Â",
+              "À",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "Ë",
+              "Ê",
+              "È",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ÿ",
+              "IJ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ü",
+              "Û",
+              "Ù",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ï",
+              "Ì",
+              "Î",
+              "Į",
+              "Ī",
+              "IJ"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ö",
+              "Ô",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "Q"
-          ],
-          [
-            "S",
-            "ẞ"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "ẞ"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            "W"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç",
-            "Ć",
-            "Č"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ]
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç",
+              "Ć",
+              "Č"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -323,151 +444,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -476,129 +659,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/bg.json b/data/osk-layouts/bg.json
index 5c8528f555..f82faf2520 100644
--- a/data/osk-layouts/bg.json
+++ b/data/osk-layouts/bg.json
@@ -5,120 +5,186 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "я"
-          ],
-          [
-            "в"
-          ],
-          [
-            "е"
-          ],
-          [
-            "р"
-          ],
-          [
-            "т"
-          ],
-          [
-            "ъ"
-          ],
-          [
-            "у"
-          ],
-          [
-            "и",
-            "ѝ"
-          ],
-          [
-            "о"
-          ],
-          [
-            "п"
-          ],
-          [
-            "ч"
-          ]
+          {
+            "strings": [
+              "я"
+            ]
+          },
+          {
+            "strings": [
+              "в"
+            ]
+          },
+          {
+            "strings": [
+              "е"
+            ]
+          },
+          {
+            "strings": [
+              "р"
+            ]
+          },
+          {
+            "strings": [
+              "т"
+            ]
+          },
+          {
+            "strings": [
+              "ъ"
+            ]
+          },
+          {
+            "strings": [
+              "у"
+            ]
+          },
+          {
+            "strings": [
+              "и",
+              "ѝ"
+            ]
+          },
+          {
+            "strings": [
+              "о"
+            ]
+          },
+          {
+            "strings": [
+              "п"
+            ]
+          },
+          {
+            "strings": [
+              "ч"
+            ]
+          }
         ],
         [
-          [
-            "а"
-          ],
-          [
-            "с"
-          ],
-          [
-            "д"
-          ],
-          [
-            "ф"
-          ],
-          [
-            "г"
-          ],
-          [
-            "х"
-          ],
-          [
-            "й"
-          ],
-          [
-            "к"
-          ],
-          [
-            "л"
-          ],
-          [
-            "ш"
-          ],
-          [
-            "щ"
-          ]
+          {
+            "strings": [
+              "а"
+            ]
+          },
+          {
+            "strings": [
+              "с"
+            ]
+          },
+          {
+            "strings": [
+              "д"
+            ]
+          },
+          {
+            "strings": [
+              "ф"
+            ]
+          },
+          {
+            "strings": [
+              "г"
+            ]
+          },
+          {
+            "strings": [
+              "х"
+            ]
+          },
+          {
+            "strings": [
+              "й"
+            ]
+          },
+          {
+            "strings": [
+              "к"
+            ]
+          },
+          {
+            "strings": [
+              "л"
+            ]
+          },
+          {
+            "strings": [
+              "ш"
+            ]
+          },
+          {
+            "strings": [
+              "щ"
+            ]
+          }
         ],
         [
-          [
-            "з"
-          ],
-          [
-            "ь"
-          ],
-          [
-            "ц"
-          ],
-          [
-            "ж"
-          ],
-          [
-            "б"
-          ],
-          [
-            "н"
-          ],
-          [
-            "м"
-          ],
-          [
-            "ю"
-          ]
+          {
+            "strings": [
+              "з"
+            ]
+          },
+          {
+            "strings": [
+              "ь"
+            ]
+          },
+          {
+            "strings": [
+              "ц"
+            ]
+          },
+          {
+            "strings": [
+              "ж"
+            ]
+          },
+          {
+            "strings": [
+              "б"
+            ]
+          },
+          {
+            "strings": [
+              "н"
+            ]
+          },
+          {
+            "strings": [
+              "м"
+            ]
+          },
+          {
+            "strings": [
+              "ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -127,120 +193,186 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Я"
-          ],
-          [
-            "В"
-          ],
-          [
-            "Е"
-          ],
-          [
-            "Р"
-          ],
-          [
-            "Т"
-          ],
-          [
-            "Ъ"
-          ],
-          [
-            "У"
-          ],
-          [
-            "И",
-            "Ѝ"
-          ],
-          [
-            "О"
-          ],
-          [
-            "П"
-          ],
-          [
-            "Ч"
-          ]
+          {
+            "strings": [
+              "Я"
+            ]
+          },
+          {
+            "strings": [
+              "В"
+            ]
+          },
+          {
+            "strings": [
+              "Е"
+            ]
+          },
+          {
+            "strings": [
+              "Р"
+            ]
+          },
+          {
+            "strings": [
+              "Т"
+            ]
+          },
+          {
+            "strings": [
+              "Ъ"
+            ]
+          },
+          {
+            "strings": [
+              "У"
+            ]
+          },
+          {
+            "strings": [
+              "И",
+              "Ѝ"
+            ]
+          },
+          {
+            "strings": [
+              "О"
+            ]
+          },
+          {
+            "strings": [
+              "П"
+            ]
+          },
+          {
+            "strings": [
+              "Ч"
+            ]
+          }
         ],
         [
-          [
-            "А"
-          ],
-          [
-            "С"
-          ],
-          [
-            "Д"
-          ],
-          [
-            "Ф"
-          ],
-          [
-            "Г"
-          ],
-          [
-            "Х"
-          ],
-          [
-            "Й"
-          ],
-          [
-            "К"
-          ],
-          [
-            "Л"
-          ],
-          [
-            "Ш"
-          ],
-          [
-            "Щ"
-          ]
+          {
+            "strings": [
+              "А"
+            ]
+          },
+          {
+            "strings": [
+              "С"
+            ]
+          },
+          {
+            "strings": [
+              "Д"
+            ]
+          },
+          {
+            "strings": [
+              "Ф"
+            ]
+          },
+          {
+            "strings": [
+              "Г"
+            ]
+          },
+          {
+            "strings": [
+              "Х"
+            ]
+          },
+          {
+            "strings": [
+              "Й"
+            ]
+          },
+          {
+            "strings": [
+              "К"
+            ]
+          },
+          {
+            "strings": [
+              "Л"
+            ]
+          },
+          {
+            "strings": [
+              "Ш"
+            ]
+          },
+          {
+            "strings": [
+              "Щ"
+            ]
+          }
         ],
         [
-          [
-            "З"
-          ],
-          [
-            "Ь"
-          ],
-          [
-            "Ц"
-          ],
-          [
-            "Ж"
-          ],
-          [
-            "Б"
-          ],
-          [
-            "Н"
-          ],
-          [
-            "М"
-          ],
-          [
-            "Ю"
-          ]
+          {
+            "strings": [
+              "З"
+            ]
+          },
+          {
+            "strings": [
+              "Ь"
+            ]
+          },
+          {
+            "strings": [
+              "Ц"
+            ]
+          },
+          {
+            "strings": [
+              "Ж"
+            ]
+          },
+          {
+            "strings": [
+              "Б"
+            ]
+          },
+          {
+            "strings": [
+              "Н"
+            ]
+          },
+          {
+            "strings": [
+              "М"
+            ]
+          },
+          {
+            "strings": [
+              "Ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -249,151 +381,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -402,128 +596,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/by.json b/data/osk-layouts/by.json
index 1f98cd25e2..4c66a77083 100644
--- a/data/osk-layouts/by.json
+++ b/data/osk-layouts/by.json
@@ -5,124 +5,192 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "й"
-          ],
-          [
-            "ц"
-          ],
-          [
-            "у"
-          ],
-          [
-            "к"
-          ],
-          [
-            "е",
-            "ё"
-          ],
-          [
-            "н"
-          ],
-          [
-            "г"
-          ],
-          [
-            "ш"
-          ],
-          [
-            "ў"
-          ],
-          [
-            "з"
-          ],
-          [
-            "х"
-          ]
+          {
+            "strings": [
+              "й"
+            ]
+          },
+          {
+            "strings": [
+              "ц"
+            ]
+          },
+          {
+            "strings": [
+              "у"
+            ]
+          },
+          {
+            "strings": [
+              "к"
+            ]
+          },
+          {
+            "strings": [
+              "е",
+              "ё"
+            ]
+          },
+          {
+            "strings": [
+              "н"
+            ]
+          },
+          {
+            "strings": [
+              "г"
+            ]
+          },
+          {
+            "strings": [
+              "ш"
+            ]
+          },
+          {
+            "strings": [
+              "ў"
+            ]
+          },
+          {
+            "strings": [
+              "з"
+            ]
+          },
+          {
+            "strings": [
+              "х"
+            ]
+          }
         ],
         [
-          [
-            "ф"
-          ],
-          [
-            "ы"
-          ],
-          [
-            "в"
-          ],
-          [
-            "а"
-          ],
-          [
-            "п"
-          ],
-          [
-            "р"
-          ],
-          [
-            "о"
-          ],
-          [
-            "л"
-          ],
-          [
-            "д"
-          ],
-          [
-            "ж"
-          ],
-          [
-            "э"
-          ]
+          {
+            "strings": [
+              "ф"
+            ]
+          },
+          {
+            "strings": [
+              "ы"
+            ]
+          },
+          {
+            "strings": [
+              "в"
+            ]
+          },
+          {
+            "strings": [
+              "а"
+            ]
+          },
+          {
+            "strings": [
+              "п"
+            ]
+          },
+          {
+            "strings": [
+              "р"
+            ]
+          },
+          {
+            "strings": [
+              "о"
+            ]
+          },
+          {
+            "strings": [
+              "л"
+            ]
+          },
+          {
+            "strings": [
+              "д"
+            ]
+          },
+          {
+            "strings": [
+              "ж"
+            ]
+          },
+          {
+            "strings": [
+              "э"
+            ]
+          }
         ],
         [
-          [
-            "я"
-          ],
-          [
-            "ч"
-          ],
-          [
-            "с"
-          ],
-          [
-            "м"
-          ],
-          [
-            "і"
-          ],
-          [
-            "т"
-          ],
-          [
-            "ь",
-            "ъ"
-          ],
-          [
-            "б"
-          ],
-          [
-            "ю"
-          ]
+          {
+            "strings": [
+              "я"
+            ]
+          },
+          {
+            "strings": [
+              "ч"
+            ]
+          },
+          {
+            "strings": [
+              "с"
+            ]
+          },
+          {
+            "strings": [
+              "м"
+            ]
+          },
+          {
+            "strings": [
+              "і"
+            ]
+          },
+          {
+            "strings": [
+              "т"
+            ]
+          },
+          {
+            "strings": [
+              "ь",
+              "ъ"
+            ]
+          },
+          {
+            "strings": [
+              "б"
+            ]
+          },
+          {
+            "strings": [
+              "ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -131,124 +199,192 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Й"
-          ],
-          [
-            "Ц"
-          ],
-          [
-            "У"
-          ],
-          [
-            "К"
-          ],
-          [
-            "Е",
-            "Ё"
-          ],
-          [
-            "Н"
-          ],
-          [
-            "Г"
-          ],
-          [
-            "Ш"
-          ],
-          [
-            "Ў"
-          ],
-          [
-            "З"
-          ],
-          [
-            "Х"
-          ]
+          {
+            "strings": [
+              "Й"
+            ]
+          },
+          {
+            "strings": [
+              "Ц"
+            ]
+          },
+          {
+            "strings": [
+              "У"
+            ]
+          },
+          {
+            "strings": [
+              "К"
+            ]
+          },
+          {
+            "strings": [
+              "Е",
+              "Ё"
+            ]
+          },
+          {
+            "strings": [
+              "Н"
+            ]
+          },
+          {
+            "strings": [
+              "Г"
+            ]
+          },
+          {
+            "strings": [
+              "Ш"
+            ]
+          },
+          {
+            "strings": [
+              "Ў"
+            ]
+          },
+          {
+            "strings": [
+              "З"
+            ]
+          },
+          {
+            "strings": [
+              "Х"
+            ]
+          }
         ],
         [
-          [
-            "Ф"
-          ],
-          [
-            "Ы"
-          ],
-          [
-            "В"
-          ],
-          [
-            "А"
-          ],
-          [
-            "П"
-          ],
-          [
-            "Р"
-          ],
-          [
-            "О"
-          ],
-          [
-            "Л"
-          ],
-          [
-            "Д"
-          ],
-          [
-            "Ж"
-          ],
-          [
-            "Э"
-          ]
+          {
+            "strings": [
+              "Ф"
+            ]
+          },
+          {
+            "strings": [
+              "Ы"
+            ]
+          },
+          {
+            "strings": [
+              "В"
+            ]
+          },
+          {
+            "strings": [
+              "А"
+            ]
+          },
+          {
+            "strings": [
+              "П"
+            ]
+          },
+          {
+            "strings": [
+              "Р"
+            ]
+          },
+          {
+            "strings": [
+              "О"
+            ]
+          },
+          {
+            "strings": [
+              "Л"
+            ]
+          },
+          {
+            "strings": [
+              "Д"
+            ]
+          },
+          {
+            "strings": [
+              "Ж"
+            ]
+          },
+          {
+            "strings": [
+              "Э"
+            ]
+          }
         ],
         [
-          [
-            "Я"
-          ],
-          [
-            "Ч"
-          ],
-          [
-            "С"
-          ],
-          [
-            "М"
-          ],
-          [
-            "І"
-          ],
-          [
-            "Т"
-          ],
-          [
-            "Ь",
-            "Ъ"
-          ],
-          [
-            "Б"
-          ],
-          [
-            "Ю"
-          ]
+          {
+            "strings": [
+              "Я"
+            ]
+          },
+          {
+            "strings": [
+              "Ч"
+            ]
+          },
+          {
+            "strings": [
+              "С"
+            ]
+          },
+          {
+            "strings": [
+              "М"
+            ]
+          },
+          {
+            "strings": [
+              "І"
+            ]
+          },
+          {
+            "strings": [
+              "Т"
+            ]
+          },
+          {
+            "strings": [
+              "Ь",
+              "Ъ"
+            ]
+          },
+          {
+            "strings": [
+              "Б"
+            ]
+          },
+          {
+            "strings": [
+              "Ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -257,151 +393,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -410,128 +608,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ca.json b/data/osk-layouts/ca.json
index 2b2bedc3d4..0a8c69c416 100644
--- a/data/osk-layouts/ca.json
+++ b/data/osk-layouts/ca.json
@@ -5,153 +5,211 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ê",
-            "ë",
-            "%",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y",
-            "%",
-            "ÿ"
-          ],
-          [
-            "u",
-            "ù",
-            "û",
-            "%",
-            "ü",
-            "ú",
-            "ū"
-          ],
-          [
-            "i",
-            "î",
-            "%",
-            "ï",
-            "ì",
-            "í",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ô",
-            "œ",
-            "%",
-            "ö",
-            "ò",
-            "ó",
-            "õ",
-            "ø",
-            "ō",
-            "º"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ê",
+              "ë",
+              "%",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "%",
+              "ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ù",
+              "û",
+              "%",
+              "ü",
+              "ú",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "î",
+              "%",
+              "ï",
+              "ì",
+              "í",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ô",
+              "œ",
+              "%",
+              "ö",
+              "ò",
+              "ó",
+              "õ",
+              "ø",
+              "ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "à",
-            "â",
-            "%",
-            "æ",
-            "á",
-            "ä",
-            "ã",
-            "å",
-            "ā",
-            "ª"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "à",
+              "â",
+              "%",
+              "æ",
+              "á",
+              "ä",
+              "ã",
+              "å",
+              "ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç",
-            "ć",
-            "č"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç",
+              "ć",
+              "č"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -160,153 +218,211 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ê",
-            "Ë",
-            "%",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y",
-            "%",
-            "Ÿ"
-          ],
-          [
-            "U",
-            "Ù",
-            "Û",
-            "%",
-            "Ü",
-            "Ú",
-            "Ū"
-          ],
-          [
-            "I",
-            "Î",
-            "%",
-            "Ï",
-            "Ì",
-            "Í",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ô",
-            "Œ",
-            "%",
-            "Ö",
-            "Ò",
-            "Ó",
-            "Õ",
-            "Ø",
-            "Ō",
-            "º"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ê",
+              "Ë",
+              "%",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "%",
+              "Ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ù",
+              "Û",
+              "%",
+              "Ü",
+              "Ú",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Î",
+              "%",
+              "Ï",
+              "Ì",
+              "Í",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ô",
+              "Œ",
+              "%",
+              "Ö",
+              "Ò",
+              "Ó",
+              "Õ",
+              "Ø",
+              "Ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "À",
-            "Â",
-            "%",
-            "Æ",
-            "Á",
-            "Ä",
-            "Ã",
-            "Å",
-            "Ā",
-            "ª"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "À",
+              "Â",
+              "%",
+              "Æ",
+              "Á",
+              "Ä",
+              "Ã",
+              "Å",
+              "Ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç",
-            "Ć",
-            "Č"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç",
+              "Ć",
+              "Č"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -315,151 +431,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -468,128 +646,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ch+fr.json b/data/osk-layouts/ch+fr.json
index d8b6ea7a33..998bc59e45 100644
--- a/data/osk-layouts/ch+fr.json
+++ b/data/osk-layouts/ch+fr.json
@@ -5,138 +5,196 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ê",
-            "ë",
-            "ė"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "z"
-          ],
-          [
-            "u",
-            "ü",
-            "û",
-            "ù",
-            "ú",
-            "ū"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o",
-            "ö",
-            "ô",
-            "ò",
-            "ó",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ê",
+              "ë",
+              "ė"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ü",
+              "û",
+              "ù",
+              "ú",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ö",
+              "ô",
+              "ò",
+              "ó",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "ä",
-            "â",
-            "à",
-            "á",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s",
-            "ß",
-            "ś",
-            "š"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "ä",
+              "â",
+              "à",
+              "á",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß",
+              "ś",
+              "š"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "y"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -145,138 +203,196 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ê",
-            "Ë",
-            "Ė"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Z"
-          ],
-          [
-            "U",
-            "Ü",
-            "Û",
-            "Ù",
-            "Ú",
-            "Ū"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O",
-            "Ö",
-            "Ô",
-            "Ò",
-            "Ó",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ê",
+              "Ë",
+              "Ė"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ü",
+              "Û",
+              "Ù",
+              "Ú",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ö",
+              "Ô",
+              "Ò",
+              "Ó",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Ä",
-            "Â",
-            "À",
-            "Á",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S",
-            "SS",
-            "Ś",
-            "Š"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Ä",
+              "Â",
+              "À",
+              "Á",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "SS",
+              "Ś",
+              "Š"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Y"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -285,151 +401,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -438,133 +616,195 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
   ],
   "locale": "fr-CH",
   "name": "Swiss French"
-}
\ No newline at end of file
+}
diff --git a/data/osk-layouts/ch.json b/data/osk-layouts/ch.json
index dd08c670d7..c95e7f8b0c 100644
--- a/data/osk-layouts/ch.json
+++ b/data/osk-layouts/ch.json
@@ -5,138 +5,196 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ê",
-            "ë",
-            "ė"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "z"
-          ],
-          [
-            "u",
-            "ü",
-            "û",
-            "ù",
-            "ú",
-            "ū"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o",
-            "ö",
-            "ô",
-            "ò",
-            "ó",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ê",
+              "ë",
+              "ė"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ü",
+              "û",
+              "ù",
+              "ú",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ö",
+              "ô",
+              "ò",
+              "ó",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "ä",
-            "â",
-            "à",
-            "á",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s",
-            "ß",
-            "ś",
-            "š"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "ä",
+              "â",
+              "à",
+              "á",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß",
+              "ś",
+              "š"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "y"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -145,138 +203,196 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ê",
-            "Ë",
-            "Ė"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Z"
-          ],
-          [
-            "U",
-            "Ü",
-            "Û",
-            "Ù",
-            "Ú",
-            "Ū"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O",
-            "Ö",
-            "Ô",
-            "Ò",
-            "Ó",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ê",
+              "Ë",
+              "Ė"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ü",
+              "Û",
+              "Ù",
+              "Ú",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ö",
+              "Ô",
+              "Ò",
+              "Ó",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Ä",
-            "Â",
-            "À",
-            "Á",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S",
-            "SS",
-            "Ś",
-            "Š"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Ä",
+              "Â",
+              "À",
+              "Á",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "SS",
+              "Ś",
+              "Š"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Y"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -285,151 +401,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -438,133 +616,195 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
   ],
   "locale": "de-CH",
   "name": "Swiss German"
-}
\ No newline at end of file
+}
diff --git a/data/osk-layouts/cz.json b/data/osk-layouts/cz.json
index 9bad074029..d491a595ad 100644
--- a/data/osk-layouts/cz.json
+++ b/data/osk-layouts/cz.json
@@ -5,160 +5,218 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "ě",
-            "è",
-            "ê",
-            "ë",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r",
-            "ř"
-          ],
-          [
-            "t",
-            "ť"
-          ],
-          [
-            "z",
-            "ž",
-            "ź",
-            "ż"
-          ],
-          [
-            "u",
-            "ú",
-            "ů",
-            "û",
-            "ü",
-            "ù",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "î",
-            "ï",
-            "ì",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ó",
-            "ö",
-            "ô",
-            "ò",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "ě",
+              "è",
+              "ê",
+              "ë",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r",
+              "ř"
+            ]
+          },
+          {
+            "strings": [
+              "t",
+              "ť"
+            ]
+          },
+          {
+            "strings": [
+              "z",
+              "ž",
+              "ź",
+              "ż"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ů",
+              "û",
+              "ü",
+              "ù",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "î",
+              "ï",
+              "ì",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ö",
+              "ô",
+              "ò",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "à",
-            "â",
-            "ä",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s",
-            "š",
-            "ß",
-            "ś"
-          ],
-          [
-            "d",
-            "ď"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "à",
+              "â",
+              "ä",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "š",
+              "ß",
+              "ś"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "ď"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "y",
-            "ý",
-            "ÿ"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "č",
-            "ç",
-            "ć"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ň",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "y",
+              "ý",
+              "ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "č",
+              "ç",
+              "ć"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ň",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -167,160 +225,218 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "Ě",
-            "È",
-            "Ê",
-            "Ë",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R",
-            "Ř"
-          ],
-          [
-            "T",
-            "Ť"
-          ],
-          [
-            "Z",
-            "Ž",
-            "Ź",
-            "Ż"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ů",
-            "Û",
-            "Ü",
-            "Ù",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Î",
-            "Ï",
-            "Ì",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ö",
-            "Ô",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "Ě",
+              "È",
+              "Ê",
+              "Ë",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R",
+              "Ř"
+            ]
+          },
+          {
+            "strings": [
+              "T",
+              "Ť"
+            ]
+          },
+          {
+            "strings": [
+              "Z",
+              "Ž",
+              "Ź",
+              "Ż"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ů",
+              "Û",
+              "Ü",
+              "Ù",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Î",
+              "Ï",
+              "Ì",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ö",
+              "Ô",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "À",
-            "Â",
-            "Ä",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S",
-            "Š",
-            "SS",
-            "Ś"
-          ],
-          [
-            "D",
-            "Ď"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "À",
+              "Â",
+              "Ä",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Š",
+              "SS",
+              "Ś"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Ď"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Y",
-            "Ý",
-            "Ÿ"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Č",
-            "Ç",
-            "Ć"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ň",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Y",
+              "Ý",
+              "Ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Č",
+              "Ç",
+              "Ć"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ň",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -329,151 +445,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -482,128 +660,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/de.json b/data/osk-layouts/de.json
index 751a856031..0a71ef702d 100644
--- a/data/osk-layouts/de.json
+++ b/data/osk-layouts/de.json
@@ -5,138 +5,196 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ê",
-            "ë",
-            "ė"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "z"
-          ],
-          [
-            "u",
-            "ü",
-            "û",
-            "ù",
-            "ú",
-            "ū"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o",
-            "ö",
-            "ô",
-            "ò",
-            "ó",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ê",
+              "ë",
+              "ė"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ü",
+              "û",
+              "ù",
+              "ú",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ö",
+              "ô",
+              "ò",
+              "ó",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "ä",
-            "â",
-            "à",
-            "á",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s",
-            "ß",
-            "ś",
-            "š"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "ä",
+              "â",
+              "à",
+              "á",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß",
+              "ś",
+              "š"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "y"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -145,138 +203,196 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ê",
-            "Ë",
-            "Ė"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Z"
-          ],
-          [
-            "U",
-            "Ü",
-            "Û",
-            "Ù",
-            "Ú",
-            "Ū"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O",
-            "Ö",
-            "Ô",
-            "Ò",
-            "Ó",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ê",
+              "Ë",
+              "Ė"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ü",
+              "Û",
+              "Ù",
+              "Ú",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ö",
+              "Ô",
+              "Ò",
+              "Ó",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Ä",
-            "Â",
-            "À",
-            "Á",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S",
-            "SS",
-            "Ś",
-            "Š"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Ä",
+              "Â",
+              "À",
+              "Á",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "SS",
+              "Ś",
+              "Š"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Y"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -285,151 +401,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -438,129 +616,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/dk.json b/data/osk-layouts/dk.json
index 80df9ae652..7085fe7a1b 100644
--- a/data/osk-layouts/dk.json
+++ b/data/osk-layouts/dk.json
@@ -5,148 +5,212 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "ë"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y",
-            "ý",
-            "ÿ"
-          ],
-          [
-            "u",
-            "ú",
-            "ü",
-            "û",
-            "ù",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "ï"
-          ],
-          [
-            "o",
-            "ó",
-            "ô",
-            "ò",
-            "õ",
-            "œ",
-            "ō"
-          ],
-          [
-            "p"
-          ],
-          [
-            "å"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "ë"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ý",
+              "ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ü",
+              "û",
+              "ù",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ï"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ô",
+              "ò",
+              "õ",
+              "œ",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          },
+          {
+            "strings": [
+              "å"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "ä",
-            "à",
-            "â",
-            "ã",
-            "ā"
-          ],
-          [
-            "s",
-            "ß",
-            "ś",
-            "š"
-          ],
-          [
-            "d",
-            "ð"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l",
-            "ł"
-          ],
-          [
-            "æ",
-            "ä"
-          ],
-          [
-            "ø",
-            "ö"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "ä",
+              "à",
+              "â",
+              "ã",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß",
+              "ś",
+              "š"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "ð"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l",
+              "ł"
+            ]
+          },
+          {
+            "strings": [
+              "æ",
+              "ä"
+            ]
+          },
+          {
+            "strings": [
+              "ø",
+              "ö"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -155,148 +219,212 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "Ë"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y",
-            "Ý",
-            "Ÿ"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ü",
-            "Û",
-            "Ù",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Ï"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ô",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ō"
-          ],
-          [
-            "P"
-          ],
-          [
-            "Å"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "Ë"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ý",
+              "Ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ü",
+              "Û",
+              "Ù",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ï"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ô",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          },
+          {
+            "strings": [
+              "Å"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "Ä",
-            "À",
-            "Â",
-            "Ã",
-            "Ā"
-          ],
-          [
-            "S",
-            "SS",
-            "Ś",
-            "Š"
-          ],
-          [
-            "D",
-            "Ð"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L",
-            "Ł"
-          ],
-          [
-            "Æ",
-            "Ä"
-          ],
-          [
-            "Ø",
-            "Ö"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "Ä",
+              "À",
+              "Â",
+              "Ã",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "SS",
+              "Ś",
+              "Š"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Ð"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L",
+              "Ł"
+            ]
+          },
+          {
+            "strings": [
+              "Æ",
+              "Ä"
+            ]
+          },
+          {
+            "strings": [
+              "Ø",
+              "Ö"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -305,151 +433,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -458,129 +648,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ee.json b/data/osk-layouts/ee.json
index 5fd2f11fa6..30179bdb0d 100644
--- a/data/osk-layouts/ee.json
+++ b/data/osk-layouts/ee.json
@@ -5,186 +5,250 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "ē",
-            "è",
-            "ė",
-            "é",
-            "ê",
-            "ë",
-            "ę",
-            "ě"
-          ],
-          [
-            "r",
-            "ŗ",
-            "ř",
-            "ŕ"
-          ],
-          [
-            "t",
-            "ţ",
-            "ť"
-          ],
-          [
-            "y",
-            "ý",
-            "ÿ"
-          ],
-          [
-            "u",
-            "ü",
-            "ū",
-            "ų",
-            "ù",
-            "ú",
-            "û",
-            "ů",
-            "ű"
-          ],
-          [
-            "i",
-            "ī",
-            "ì",
-            "į",
-            "í",
-            "î",
-            "ï",
-            "ı"
-          ],
-          [
-            "o",
-            "ö",
-            "õ",
-            "ò",
-            "ó",
-            "ô",
-            "œ",
-            "ő",
-            "ø"
-          ],
-          [
-            "p"
-          ],
-          [
-            "ü"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "ē",
+              "è",
+              "ė",
+              "é",
+              "ê",
+              "ë",
+              "ę",
+              "ě"
+            ]
+          },
+          {
+            "strings": [
+              "r",
+              "ŗ",
+              "ř",
+              "ŕ"
+            ]
+          },
+          {
+            "strings": [
+              "t",
+              "ţ",
+              "ť"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ý",
+              "ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ü",
+              "ū",
+              "ų",
+              "ù",
+              "ú",
+              "û",
+              "ů",
+              "ű"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "ī",
+              "ì",
+              "į",
+              "í",
+              "î",
+              "ï",
+              "ı"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ö",
+              "õ",
+              "ò",
+              "ó",
+              "ô",
+              "œ",
+              "ő",
+              "ø"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          },
+          {
+            "strings": [
+              "ü"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "ä",
-            "ā",
-            "à",
-            "á",
-            "â",
-            "ã",
-            "å",
-            "æ",
-            "ą"
-          ],
-          [
-            "s",
-            "š",
-            "ß",
-            "ś",
-            "ş"
-          ],
-          [
-            "d",
-            "ď"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g",
-            "ģ",
-            "ğ"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k",
-            "ķ"
-          ],
-          [
-            "l",
-            "ļ",
-            "ł",
-            "ĺ",
-            "ľ"
-          ],
-          [
-            "ö",
-            "õ"
-          ],
-          [
-            "ä"
-          ]
+          {
+            "strings": [
+              "a",
+              "ä",
+              "ā",
+              "à",
+              "á",
+              "â",
+              "ã",
+              "å",
+              "æ",
+              "ą"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "š",
+              "ß",
+              "ś",
+              "ş"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "ď"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g",
+              "ģ",
+              "ğ"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k",
+              "ķ"
+            ]
+          },
+          {
+            "strings": [
+              "l",
+              "ļ",
+              "ł",
+              "ĺ",
+              "ľ"
+            ]
+          },
+          {
+            "strings": [
+              "ö",
+              "õ"
+            ]
+          },
+          {
+            "strings": [
+              "ä"
+            ]
+          }
         ],
         [
-          [
-            "z",
-            "ž",
-            "ż",
-            "ź"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "č",
-            "ç",
-            "ć"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ņ",
-            "ñ",
-            "ń",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z",
+              "ž",
+              "ż",
+              "ź"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "č",
+              "ç",
+              "ć"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ņ",
+              "ñ",
+              "ń",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -193,186 +257,250 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "Ē",
-            "È",
-            "Ė",
-            "É",
-            "Ê",
-            "Ë",
-            "Ę",
-            "Ě"
-          ],
-          [
-            "R",
-            "Ŗ",
-            "Ř",
-            "Ŕ"
-          ],
-          [
-            "T",
-            "Ţ",
-            "Ť"
-          ],
-          [
-            "Y",
-            "Ý",
-            "Ÿ"
-          ],
-          [
-            "U",
-            "Ü",
-            "Ū",
-            "Ų",
-            "Ù",
-            "Ú",
-            "Û",
-            "Ů",
-            "Ű"
-          ],
-          [
-            "I",
-            "Ī",
-            "Ì",
-            "Į",
-            "Í",
-            "Î",
-            "Ï",
-            "I"
-          ],
-          [
-            "O",
-            "Ö",
-            "Õ",
-            "Ò",
-            "Ó",
-            "Ô",
-            "Œ",
-            "Ő",
-            "Ø"
-          ],
-          [
-            "P"
-          ],
-          [
-            "Ü"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "Ē",
+              "È",
+              "Ė",
+              "É",
+              "Ê",
+              "Ë",
+              "Ę",
+              "Ě"
+            ]
+          },
+          {
+            "strings": [
+              "R",
+              "Ŗ",
+              "Ř",
+              "Ŕ"
+            ]
+          },
+          {
+            "strings": [
+              "T",
+              "Ţ",
+              "Ť"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ý",
+              "Ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ü",
+              "Ū",
+              "Ų",
+              "Ù",
+              "Ú",
+              "Û",
+              "Ů",
+              "Ű"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Ī",
+              "Ì",
+              "Į",
+              "Í",
+              "Î",
+              "Ï",
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ö",
+              "Õ",
+              "Ò",
+              "Ó",
+              "Ô",
+              "Œ",
+              "Ő",
+              "Ø"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          },
+          {
+            "strings": [
+              "Ü"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Ä",
-            "Ā",
-            "À",
-            "Á",
-            "Â",
-            "Ã",
-            "Å",
-            "Æ",
-            "Ą"
-          ],
-          [
-            "S",
-            "Š",
-            "SS",
-            "Ś",
-            "Ş"
-          ],
-          [
-            "D",
-            "Ď"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G",
-            "Ģ",
-            "Ğ"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K",
-            "Ķ"
-          ],
-          [
-            "L",
-            "Ļ",
-            "Ł",
-            "Ĺ",
-            "Ľ"
-          ],
-          [
-            "Ö",
-            "Õ"
-          ],
-          [
-            "Ä"
-          ]
+          {
+            "strings": [
+              "A",
+              "Ä",
+              "Ā",
+              "À",
+              "Á",
+              "Â",
+              "Ã",
+              "Å",
+              "Æ",
+              "Ą"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Š",
+              "SS",
+              "Ś",
+              "Ş"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Ď"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G",
+              "Ģ",
+              "Ğ"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K",
+              "Ķ"
+            ]
+          },
+          {
+            "strings": [
+              "L",
+              "Ļ",
+              "Ł",
+              "Ĺ",
+              "Ľ"
+            ]
+          },
+          {
+            "strings": [
+              "Ö",
+              "Õ"
+            ]
+          },
+          {
+            "strings": [
+              "Ä"
+            ]
+          }
         ],
         [
-          [
-            "Z",
-            "Ž",
-            "Ż",
-            "Ź"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Č",
-            "Ç",
-            "Ć"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ņ",
-            "Ñ",
-            "Ń",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z",
+              "Ž",
+              "Ż",
+              "Ź"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Č",
+              "Ç",
+              "Ć"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ņ",
+              "Ñ",
+              "Ń",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -381,151 +509,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -534,129 +724,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/epo.json b/data/osk-layouts/epo.json
index 71f9ef8d9c..9b11969c02 100644
--- a/data/osk-layouts/epo.json
+++ b/data/osk-layouts/epo.json
@@ -5,209 +5,269 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "ŝ",
-            "q"
-          ],
-          [
-            "ĝ",
-            "w",
-            "ŵ"
-          ],
-          [
-            "e",
-            "é",
-            "ě",
-            "è",
-            "ê",
-            "ë",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r",
-            "ř",
-            "ŕ",
-            "ŗ"
-          ],
-          [
-            "t",
-            "ť",
-            "ț",
-            "ţ",
-            "ŧ"
-          ],
-          [
-            "ŭ",
-            "y",
-            "ý",
-            "ŷ",
-            "ÿ",
-            "þ"
-          ],
-          [
-            "u",
-            "ú",
-            "ů",
-            "û",
-            "ü",
-            "ù",
-            "ū",
-            "ũ",
-            "ű",
-            "ų",
-            "µ"
-          ],
-          [
-            "i",
-            "í",
-            "î",
-            "ï",
-            "ĩ",
-            "ì",
-            "į",
-            "ī",
-            "ı",
-            "ij"
-          ],
-          [
-            "o",
-            "ó",
-            "ö",
-            "ô",
-            "ò",
-            "õ",
-            "œ",
-            "ø",
-            "ō",
-            "ő",
-            "º"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "ŝ",
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "ĝ",
+              "w",
+              "ŵ"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "ě",
+              "è",
+              "ê",
+              "ë",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r",
+              "ř",
+              "ŕ",
+              "ŗ"
+            ]
+          },
+          {
+            "strings": [
+              "t",
+              "ť",
+              "ț",
+              "ţ",
+              "ŧ"
+            ]
+          },
+          {
+            "strings": [
+              "ŭ",
+              "y",
+              "ý",
+              "ŷ",
+              "ÿ",
+              "þ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ů",
+              "û",
+              "ü",
+              "ù",
+              "ū",
+              "ũ",
+              "ű",
+              "ų",
+              "µ"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "î",
+              "ï",
+              "ĩ",
+              "ì",
+              "į",
+              "ī",
+              "ı",
+              "ij"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ö",
+              "ô",
+              "ò",
+              "õ",
+              "œ",
+              "ø",
+              "ō",
+              "ő",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "à",
-            "â",
-            "ä",
-            "æ",
-            "ã",
-            "å",
-            "ā",
-            "ă",
-            "ą",
-            "ª"
-          ],
-          [
-            "s",
-            "ß",
-            "š",
-            "ś",
-            "ș",
-            "ş"
-          ],
-          [
-            "d",
-            "ð",
-            "ď",
-            "đ"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g",
-            "ğ",
-            "ġ",
-            "ģ"
-          ],
-          [
-            "h",
-            "ĥ",
-            "ħ"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k",
-            "ķ",
-            "ĸ"
-          ],
-          [
-            "l",
-            "ĺ",
-            "ļ",
-            "ľ",
-            "ŀ",
-            "ł"
-          ],
-          [
-            "ĵ"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "à",
+              "â",
+              "ä",
+              "æ",
+              "ã",
+              "å",
+              "ā",
+              "ă",
+              "ą",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß",
+              "š",
+              "ś",
+              "ș",
+              "ş"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "ð",
+              "ď",
+              "đ"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g",
+              "ğ",
+              "ġ",
+              "ģ"
+            ]
+          },
+          {
+            "strings": [
+              "h",
+              "ĥ",
+              "ħ"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k",
+              "ķ",
+              "ĸ"
+            ]
+          },
+          {
+            "strings": [
+              "l",
+              "ĺ",
+              "ļ",
+              "ľ",
+              "ŀ",
+              "ł"
+            ]
+          },
+          {
+            "strings": [
+              "ĵ"
+            ]
+          }
         ],
         [
-          [
-            "z",
-            "ź",
-            "ż",
-            "ž"
-          ],
-          [
-            "ĉ",
-            "x"
-          ],
-          [
-            "c",
-            "ć",
-            "č",
-            "ç",
-            "ċ"
-          ],
-          [
-            "v",
-            "w",
-            "ŵ"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń",
-            "ņ",
-            "ň",
-            "ʼn",
-            "ŋ"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z",
+              "ź",
+              "ż",
+              "ž"
+            ]
+          },
+          {
+            "strings": [
+              "ĉ",
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ć",
+              "č",
+              "ç",
+              "ċ"
+            ]
+          },
+          {
+            "strings": [
+              "v",
+              "w",
+              "ŵ"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń",
+              "ņ",
+              "ň",
+              "ʼn",
+              "ŋ"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -216,209 +276,269 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Ŝ",
-            "Q"
-          ],
-          [
-            "Ĝ",
-            "W",
-            "Ŵ"
-          ],
-          [
-            "E",
-            "É",
-            "Ě",
-            "È",
-            "Ê",
-            "Ë",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R",
-            "Ř",
-            "Ŕ",
-            "Ŗ"
-          ],
-          [
-            "T",
-            "Ť",
-            "Ț",
-            "Ţ",
-            "Ŧ"
-          ],
-          [
-            "Ŭ",
-            "Y",
-            "Ý",
-            "Ŷ",
-            "Ÿ",
-            "Þ"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ů",
-            "Û",
-            "Ü",
-            "Ù",
-            "Ū",
-            "Ũ",
-            "Ű",
-            "Ų",
-            "Μ"
-          ],
-          [
-            "I",
-            "Í",
-            "Î",
-            "Ï",
-            "Ĩ",
-            "Ì",
-            "Į",
-            "Ī",
-            "I",
-            "IJ"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ö",
-            "Ô",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō",
-            "Ő",
-            "º"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Ŝ",
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "Ĝ",
+              "W",
+              "Ŵ"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "Ě",
+              "È",
+              "Ê",
+              "Ë",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R",
+              "Ř",
+              "Ŕ",
+              "Ŗ"
+            ]
+          },
+          {
+            "strings": [
+              "T",
+              "Ť",
+              "Ț",
+              "Ţ",
+              "Ŧ"
+            ]
+          },
+          {
+            "strings": [
+              "Ŭ",
+              "Y",
+              "Ý",
+              "Ŷ",
+              "Ÿ",
+              "Þ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ů",
+              "Û",
+              "Ü",
+              "Ù",
+              "Ū",
+              "Ũ",
+              "Ű",
+              "Ų",
+              "Μ"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Î",
+              "Ï",
+              "Ĩ",
+              "Ì",
+              "Į",
+              "Ī",
+              "I",
+              "IJ"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ö",
+              "Ô",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō",
+              "Ő",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "À",
-            "Â",
-            "Ä",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā",
-            "Ă",
-            "Ą",
-            "ª"
-          ],
-          [
-            "S",
-            "SS",
-            "Š",
-            "Ś",
-            "Ș",
-            "Ş"
-          ],
-          [
-            "D",
-            "Ð",
-            "Ď",
-            "Đ"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G",
-            "Ğ",
-            "Ġ",
-            "Ģ"
-          ],
-          [
-            "H",
-            "Ĥ",
-            "Ħ"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K",
-            "Ķ",
-            "ĸ"
-          ],
-          [
-            "L",
-            "Ĺ",
-            "Ļ",
-            "Ľ",
-            "Ŀ",
-            "Ł"
-          ],
-          [
-            "Ĵ"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "À",
+              "Â",
+              "Ä",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā",
+              "Ă",
+              "Ą",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "SS",
+              "Š",
+              "Ś",
+              "Ș",
+              "Ş"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Ð",
+              "Ď",
+              "Đ"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G",
+              "Ğ",
+              "Ġ",
+              "Ģ"
+            ]
+          },
+          {
+            "strings": [
+              "H",
+              "Ĥ",
+              "Ħ"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K",
+              "Ķ",
+              "ĸ"
+            ]
+          },
+          {
+            "strings": [
+              "L",
+              "Ĺ",
+              "Ļ",
+              "Ľ",
+              "Ŀ",
+              "Ł"
+            ]
+          },
+          {
+            "strings": [
+              "Ĵ"
+            ]
+          }
         ],
         [
-          [
-            "Z",
-            "Ź",
-            "Ż",
-            "Ž"
-          ],
-          [
-            "Ĉ",
-            "X"
-          ],
-          [
-            "C",
-            "Ć",
-            "Č",
-            "Ç",
-            "Ċ"
-          ],
-          [
-            "V",
-            "W",
-            "Ŵ"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń",
-            "Ņ",
-            "Ň",
-            "ʼN",
-            "Ŋ"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z",
+              "Ź",
+              "Ż",
+              "Ž"
+            ]
+          },
+          {
+            "strings": [
+              "Ĉ",
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ć",
+              "Č",
+              "Ç",
+              "Ċ"
+            ]
+          },
+          {
+            "strings": [
+              "V",
+              "W",
+              "Ŵ"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń",
+              "Ņ",
+              "Ň",
+              "ʼN",
+              "Ŋ"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -427,151 +547,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -580,128 +762,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/es+cat.json b/data/osk-layouts/es+cat.json
index d0bd12575e..93630dce95 100644
--- a/data/osk-layouts/es+cat.json
+++ b/data/osk-layouts/es+cat.json
@@ -5,153 +5,213 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "è",
-            "é",
-            "ë",
-            "ê",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u",
-            "ú",
-            "ü",
-            "ù",
-            "û",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "ï",
-            "ì",
-            "î",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ò",
-            "ó",
-            "ö",
-            "ô",
-            "õ",
-            "ø",
-            "œ",
-            "ō",
-            "º"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "è",
+              "é",
+              "ë",
+              "ê",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ü",
+              "ù",
+              "û",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ï",
+              "ì",
+              "î",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ò",
+              "ó",
+              "ö",
+              "ô",
+              "õ",
+              "ø",
+              "œ",
+              "ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "à",
-            "á",
-            "ä",
-            "â",
-            "ã",
-            "å",
-            "ą",
-            "æ",
-            "ā",
-            "ª"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l",
-            "l·l",
-            "ł"
-          ],
-          [
-            "ç"
-          ]
+          {
+            "strings": [
+              "a",
+              "à",
+              "á",
+              "ä",
+              "â",
+              "ã",
+              "å",
+              "ą",
+              "æ",
+              "ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l",
+              "l·l",
+              "ł"
+            ]
+          },
+          {
+            "strings": [
+              "ç"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç",
-            "ć",
-            "č"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç",
+              "ć",
+              "č"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "·",
-            "!",
-            ",",
-            "?",
-            ":",
-            ";",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "·",
+              "!",
+              ",",
+              "?",
+              ":",
+              ";",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -160,153 +220,213 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "È",
-            "É",
-            "Ë",
-            "Ê",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ü",
-            "Ù",
-            "Û",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Ï",
-            "Ì",
-            "Î",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ò",
-            "Ó",
-            "Ö",
-            "Ô",
-            "Õ",
-            "Ø",
-            "Œ",
-            "Ō",
-            "º"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "È",
+              "É",
+              "Ë",
+              "Ê",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ü",
+              "Ù",
+              "Û",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ï",
+              "Ì",
+              "Î",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ò",
+              "Ó",
+              "Ö",
+              "Ô",
+              "Õ",
+              "Ø",
+              "Œ",
+              "Ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "À",
-            "Á",
-            "Ä",
-            "Â",
-            "Ã",
-            "Å",
-            "Ą",
-            "Æ",
-            "Ā",
-            "ª"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L",
-            "L·L",
-            "Ł"
-          ],
-          [
-            "Ç"
-          ]
+          {
+            "strings": [
+              "A",
+              "À",
+              "Á",
+              "Ä",
+              "Â",
+              "Ã",
+              "Å",
+              "Ą",
+              "Æ",
+              "Ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L",
+              "L·L",
+              "Ł"
+            ]
+          },
+          {
+            "strings": [
+              "Ç"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç",
-            "Ć",
-            "Č"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç",
+              "Ć",
+              "Č"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "·",
-            "!",
-            ",",
-            "?",
-            ":",
-            ";",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "·",
+              "!",
+              ",",
+              "?",
+              ":",
+              ";",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -315,152 +435,214 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "?",
-            "·"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "?",
+              "·"
+            ]
+          }
         ]
       ]
     },
@@ -469,130 +651,192 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "?",
-            "·"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "?",
+              "·"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/es.json b/data/osk-layouts/es.json
index 0bb5d72f4a..ec8193c10d 100644
--- a/data/osk-layouts/es.json
+++ b/data/osk-layouts/es.json
@@ -5,152 +5,212 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ë",
-            "ê",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u",
-            "ú",
-            "ü",
-            "ù",
-            "û",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "ï",
-            "ì",
-            "î",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ó",
-            "ò",
-            "ö",
-            "ô",
-            "õ",
-            "ø",
-            "œ",
-            "ō",
-            "º"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ë",
+              "ê",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ü",
+              "ù",
+              "û",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ï",
+              "ì",
+              "î",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ò",
+              "ö",
+              "ô",
+              "õ",
+              "ø",
+              "œ",
+              "ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "à",
-            "ä",
-            "â",
-            "ã",
-            "å",
-            "ą",
-            "æ",
-            "ā",
-            "ª"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ],
-          [
-            "ñ"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "à",
+              "ä",
+              "â",
+              "ã",
+              "å",
+              "ą",
+              "æ",
+              "ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          },
+          {
+            "strings": [
+              "ñ"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç",
-            "ć",
-            "č"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç",
+              "ć",
+              "č"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            ";",
-            "!",
-            ",",
-            "?",
-            ":",
-            "¡",
-            "@",
-            "¿"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              ";",
+              "!",
+              ",",
+              "?",
+              ":",
+              "¡",
+              "@",
+              "¿"
+            ]
+          }
         ]
       ]
     },
@@ -159,152 +219,212 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ë",
-            "Ê",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ü",
-            "Ù",
-            "Û",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Ï",
-            "Ì",
-            "Î",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ò",
-            "Ö",
-            "Ô",
-            "Õ",
-            "Ø",
-            "Œ",
-            "Ō",
-            "º"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ë",
+              "Ê",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ü",
+              "Ù",
+              "Û",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ï",
+              "Ì",
+              "Î",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ò",
+              "Ö",
+              "Ô",
+              "Õ",
+              "Ø",
+              "Œ",
+              "Ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "À",
-            "Ä",
-            "Â",
-            "Ã",
-            "Å",
-            "Ą",
-            "Æ",
-            "Ā",
-            "ª"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ],
-          [
-            "Ñ"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "À",
+              "Ä",
+              "Â",
+              "Ã",
+              "Å",
+              "Ą",
+              "Æ",
+              "Ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          },
+          {
+            "strings": [
+              "Ñ"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç",
-            "Ć",
-            "Č"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç",
+              "Ć",
+              "Č"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            ";",
-            "!",
-            ",",
-            "?",
-            ":",
-            "¡",
-            "@",
-            "¿"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              ";",
+              "!",
+              ",",
+              "?",
+              ":",
+              "¡",
+              "@",
+              "¿"
+            ]
+          }
         ]
       ]
     },
@@ -313,154 +433,216 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ",",
-            "!",
-            "¡"
-          ],
-          [
-            ".",
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ",",
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "?",
+              "¿"
+            ]
+          }
         ]
       ]
     },
@@ -469,132 +651,194 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ",",
-            "!",
-            "¡"
-          ],
-          [
-            ".",
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ",",
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "?",
+              "¿"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/fi.json b/data/osk-layouts/fi.json
index 3ba5b567c8..94793cdda3 100644
--- a/data/osk-layouts/fi.json
+++ b/data/osk-layouts/fi.json
@@ -5,138 +5,202 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u",
-            "ü"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o",
-            "ø",
-            "ô",
-            "ò",
-            "ó",
-            "õ",
-            "œ",
-            "ō"
-          ],
-          [
-            "p"
-          ],
-          [
-            "å"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ü"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ø",
+              "ô",
+              "ò",
+              "ó",
+              "õ",
+              "œ",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          },
+          {
+            "strings": [
+              "å"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "æ",
-            "à",
-            "á",
-            "â",
-            "ã",
-            "ā"
-          ],
-          [
-            "s",
-            "š",
-            "ß",
-            "ś"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ],
-          [
-            "ö",
-            "ø"
-          ],
-          [
-            "ä",
-            "æ"
-          ]
+          {
+            "strings": [
+              "a",
+              "æ",
+              "à",
+              "á",
+              "â",
+              "ã",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "š",
+              "ß",
+              "ś"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          },
+          {
+            "strings": [
+              "ö",
+              "ø"
+            ]
+          },
+          {
+            "strings": [
+              "ä",
+              "æ"
+            ]
+          }
         ],
         [
-          [
-            "z",
-            "ž",
-            "ź",
-            "ż"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z",
+              "ž",
+              "ź",
+              "ż"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -145,138 +209,202 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U",
-            "Ü"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O",
-            "Ø",
-            "Ô",
-            "Ò",
-            "Ó",
-            "Õ",
-            "Œ",
-            "Ō"
-          ],
-          [
-            "P"
-          ],
-          [
-            "Å"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ü"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ø",
+              "Ô",
+              "Ò",
+              "Ó",
+              "Õ",
+              "Œ",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          },
+          {
+            "strings": [
+              "Å"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Æ",
-            "À",
-            "Á",
-            "Â",
-            "Ã",
-            "Ā"
-          ],
-          [
-            "S",
-            "Š",
-            "SS",
-            "Ś"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ],
-          [
-            "Ö",
-            "Ø"
-          ],
-          [
-            "Ä",
-            "Æ"
-          ]
+          {
+            "strings": [
+              "A",
+              "Æ",
+              "À",
+              "Á",
+              "Â",
+              "Ã",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Š",
+              "SS",
+              "Ś"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          },
+          {
+            "strings": [
+              "Ö",
+              "Ø"
+            ]
+          },
+          {
+            "strings": [
+              "Ä",
+              "Æ"
+            ]
+          }
         ],
         [
-          [
-            "Z",
-            "Ž",
-            "Ź",
-            "Ż"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z",
+              "Ž",
+              "Ź",
+              "Ż"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -285,151 +413,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -438,129 +628,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/fr.json b/data/osk-layouts/fr.json
index dd572b1367..cf581b50c6 100644
--- a/data/osk-layouts/fr.json
+++ b/data/osk-layouts/fr.json
@@ -5,160 +5,220 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "a",
-            "à",
-            "â",
-            "%",
-            "æ",
-            "á",
-            "ä",
-            "ã",
-            "å",
-            "ā",
-            "ª"
-          ],
-          [
-            "z"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ê",
-            "ë",
-            "%",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y",
-            "%",
-            "ÿ"
-          ],
-          [
-            "u",
-            "ù",
-            "û",
-            "%",
-            "ü",
-            "ú",
-            "ū"
-          ],
-          [
-            "i",
-            "î",
-            "%",
-            "ï",
-            "ì",
-            "í",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ô",
-            "œ",
-            "%",
-            "ö",
-            "ò",
-            "ó",
-            "õ",
-            "ø",
-            "ō",
-            "º"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "a",
+              "à",
+              "â",
+              "%",
+              "æ",
+              "á",
+              "ä",
+              "ã",
+              "å",
+              "ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ê",
+              "ë",
+              "%",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "%",
+              "ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ù",
+              "û",
+              "%",
+              "ü",
+              "ú",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "î",
+              "%",
+              "ï",
+              "ì",
+              "í",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ô",
+              "œ",
+              "%",
+              "ö",
+              "ò",
+              "ó",
+              "õ",
+              "ø",
+              "ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "q"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            "w"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç",
-            "ć",
-            "č"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ]
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç",
+              "ć",
+              "č"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -167,160 +227,220 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "A",
-            "À",
-            "Â",
-            "%",
-            "Æ",
-            "Á",
-            "Ä",
-            "Ã",
-            "Å",
-            "Ā",
-            "ª"
-          ],
-          [
-            "Z"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ê",
-            "Ë",
-            "%",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y",
-            "%",
-            "Ÿ"
-          ],
-          [
-            "U",
-            "Ù",
-            "Û",
-            "%",
-            "Ü",
-            "Ú",
-            "Ū"
-          ],
-          [
-            "I",
-            "Î",
-            "%",
-            "Ï",
-            "Ì",
-            "Í",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ô",
-            "Œ",
-            "%",
-            "Ö",
-            "Ò",
-            "Ó",
-            "Õ",
-            "Ø",
-            "Ō",
-            "º"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "A",
+              "À",
+              "Â",
+              "%",
+              "Æ",
+              "Á",
+              "Ä",
+              "Ã",
+              "Å",
+              "Ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ê",
+              "Ë",
+              "%",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "%",
+              "Ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ù",
+              "Û",
+              "%",
+              "Ü",
+              "Ú",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Î",
+              "%",
+              "Ï",
+              "Ì",
+              "Í",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ô",
+              "Œ",
+              "%",
+              "Ö",
+              "Ò",
+              "Ó",
+              "Õ",
+              "Ø",
+              "Ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "Q"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            "W"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç",
-            "Ć",
-            "Č"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ]
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç",
+              "Ć",
+              "Č"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -329,151 +449,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -482,129 +664,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ge.json b/data/osk-layouts/ge.json
index a94b3bac47..60952d1e53 100644
--- a/data/osk-layouts/ge.json
+++ b/data/osk-layouts/ge.json
@@ -5,118 +5,176 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "ქ"
-          ],
-          [
-            "წ"
-          ],
-          [
-            "ე",
-            "ჱ"
-          ],
-          [
-            "რ"
-          ],
-          [
-            "ტ"
-          ],
-          [
-            "ყ",
-            "ჸ"
-          ],
-          [
-            "უ"
-          ],
-          [
-            "ი",
-            "ჲ"
-          ],
-          [
-            "ო"
-          ],
-          [
-            "პ"
-          ]
+          {
+            "strings": [
+              "ქ"
+            ]
+          },
+          {
+            "strings": [
+              "წ"
+            ]
+          },
+          {
+            "strings": [
+              "ე",
+              "ჱ"
+            ]
+          },
+          {
+            "strings": [
+              "რ"
+            ]
+          },
+          {
+            "strings": [
+              "ტ"
+            ]
+          },
+          {
+            "strings": [
+              "ყ",
+              "ჸ"
+            ]
+          },
+          {
+            "strings": [
+              "უ"
+            ]
+          },
+          {
+            "strings": [
+              "ი",
+              "ჲ"
+            ]
+          },
+          {
+            "strings": [
+              "ო"
+            ]
+          },
+          {
+            "strings": [
+              "პ"
+            ]
+          }
         ],
         [
-          [
-            "ა",
-            "ჺ"
-          ],
-          [
-            "ს"
-          ],
-          [
-            "დ"
-          ],
-          [
-            "ფ",
-            "ჶ"
-          ],
-          [
-            "გ",
-            "ჹ"
-          ],
-          [
-            "ჰ",
-            "ჵ"
-          ],
-          [
-            "ჯ",
-            "ჷ"
-          ],
-          [
-            "კ"
-          ],
-          [
-            "ლ"
-          ]
+          {
+            "strings": [
+              "ა",
+              "ჺ"
+            ]
+          },
+          {
+            "strings": [
+              "ს"
+            ]
+          },
+          {
+            "strings": [
+              "დ"
+            ]
+          },
+          {
+            "strings": [
+              "ფ",
+              "ჶ"
+            ]
+          },
+          {
+            "strings": [
+              "გ",
+              "ჹ"
+            ]
+          },
+          {
+            "strings": [
+              "ჰ",
+              "ჵ"
+            ]
+          },
+          {
+            "strings": [
+              "ჯ",
+              "ჷ"
+            ]
+          },
+          {
+            "strings": [
+              "კ"
+            ]
+          },
+          {
+            "strings": [
+              "ლ"
+            ]
+          }
         ],
         [
-          [
-            "ზ"
-          ],
-          [
-            "ხ",
-            "ჴ"
-          ],
-          [
-            "ც"
-          ],
-          [
-            "ვ",
-            "ჳ"
-          ],
-          [
-            "ბ"
-          ],
-          [
-            "ნ",
-            "ჼ"
-          ],
-          [
-            "მ"
-          ]
+          {
+            "strings": [
+              "ზ"
+            ]
+          },
+          {
+            "strings": [
+              "ხ",
+              "ჴ"
+            ]
+          },
+          {
+            "strings": [
+              "ც"
+            ]
+          },
+          {
+            "strings": [
+              "ვ",
+              "ჳ"
+            ]
+          },
+          {
+            "strings": [
+              "ბ"
+            ]
+          },
+          {
+            "strings": [
+              "ნ",
+              "ჼ"
+            ]
+          },
+          {
+            "strings": [
+              "მ"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -125,151 +183,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -278,128 +398,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/gr.json b/data/osk-layouts/gr.json
index b2337e54be..1c44a80150 100644
--- a/data/osk-layouts/gr.json
+++ b/data/osk-layouts/gr.json
@@ -5,119 +5,177 @@
       "mode": "default",
       "rows": [
         [
-          [
-            ";",
-            ":"
-          ],
-          [
-            "ς"
-          ],
-          [
-            "ε",
-            "έ"
-          ],
-          [
-            "ρ"
-          ],
-          [
-            "τ"
-          ],
-          [
-            "υ",
-            "ύ",
-            "ϋ",
-            "ΰ"
-          ],
-          [
-            "θ"
-          ],
-          [
-            "ι",
-            "ί",
-            "ϊ",
-            "ΐ"
-          ],
-          [
-            "ο",
-            "ό"
-          ],
-          [
-            "π"
-          ]
+          {
+            "strings": [
+              ";",
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              "ς"
+            ]
+          },
+          {
+            "strings": [
+              "ε",
+              "έ"
+            ]
+          },
+          {
+            "strings": [
+              "ρ"
+            ]
+          },
+          {
+            "strings": [
+              "τ"
+            ]
+          },
+          {
+            "strings": [
+              "υ",
+              "ύ",
+              "ϋ",
+              "ΰ"
+            ]
+          },
+          {
+            "strings": [
+              "θ"
+            ]
+          },
+          {
+            "strings": [
+              "ι",
+              "ί",
+              "ϊ",
+              "ΐ"
+            ]
+          },
+          {
+            "strings": [
+              "ο",
+              "ό"
+            ]
+          },
+          {
+            "strings": [
+              "π"
+            ]
+          }
         ],
         [
-          [
-            "α",
-            "ά"
-          ],
-          [
-            "σ"
-          ],
-          [
-            "δ"
-          ],
-          [
-            "φ"
-          ],
-          [
-            "γ"
-          ],
-          [
-            "η",
-            "ή"
-          ],
-          [
-            "ξ"
-          ],
-          [
-            "κ"
-          ],
-          [
-            "λ"
-          ]
+          {
+            "strings": [
+              "α",
+              "ά"
+            ]
+          },
+          {
+            "strings": [
+              "σ"
+            ]
+          },
+          {
+            "strings": [
+              "δ"
+            ]
+          },
+          {
+            "strings": [
+              "φ"
+            ]
+          },
+          {
+            "strings": [
+              "γ"
+            ]
+          },
+          {
+            "strings": [
+              "η",
+              "ή"
+            ]
+          },
+          {
+            "strings": [
+              "ξ"
+            ]
+          },
+          {
+            "strings": [
+              "κ"
+            ]
+          },
+          {
+            "strings": [
+              "λ"
+            ]
+          }
         ],
         [
-          [
-            "ζ"
-          ],
-          [
-            "χ"
-          ],
-          [
-            "ψ"
-          ],
-          [
-            "ω",
-            "ώ"
-          ],
-          [
-            "β"
-          ],
-          [
-            "ν"
-          ],
-          [
-            "μ"
-          ]
+          {
+            "strings": [
+              "ζ"
+            ]
+          },
+          {
+            "strings": [
+              "χ"
+            ]
+          },
+          {
+            "strings": [
+              "ψ"
+            ]
+          },
+          {
+            "strings": [
+              "ω",
+              "ώ"
+            ]
+          },
+          {
+            "strings": [
+              "β"
+            ]
+          },
+          {
+            "strings": [
+              "ν"
+            ]
+          },
+          {
+            "strings": [
+              "μ"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -126,119 +184,177 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            ";",
-            ":"
-          ],
-          [
-            "Σ"
-          ],
-          [
-            "Ε",
-            "Έ"
-          ],
-          [
-            "Ρ"
-          ],
-          [
-            "Τ"
-          ],
-          [
-            "Υ",
-            "Ύ",
-            "Ϋ",
-            "Ϋ́"
-          ],
-          [
-            "Θ"
-          ],
-          [
-            "Ι",
-            "Ί",
-            "Ϊ",
-            "Ϊ́"
-          ],
-          [
-            "Ο",
-            "Ό"
-          ],
-          [
-            "Π"
-          ]
+          {
+            "strings": [
+              ";",
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              "Σ"
+            ]
+          },
+          {
+            "strings": [
+              "Ε",
+              "Έ"
+            ]
+          },
+          {
+            "strings": [
+              "Ρ"
+            ]
+          },
+          {
+            "strings": [
+              "Τ"
+            ]
+          },
+          {
+            "strings": [
+              "Υ",
+              "Ύ",
+              "Ϋ",
+              "Ϋ́"
+            ]
+          },
+          {
+            "strings": [
+              "Θ"
+            ]
+          },
+          {
+            "strings": [
+              "Ι",
+              "Ί",
+              "Ϊ",
+              "Ϊ́"
+            ]
+          },
+          {
+            "strings": [
+              "Ο",
+              "Ό"
+            ]
+          },
+          {
+            "strings": [
+              "Π"
+            ]
+          }
         ],
         [
-          [
-            "Α",
-            "Ά"
-          ],
-          [
-            "Σ"
-          ],
-          [
-            "Δ"
-          ],
-          [
-            "Φ"
-          ],
-          [
-            "Γ"
-          ],
-          [
-            "Η",
-            "Ή"
-          ],
-          [
-            "Ξ"
-          ],
-          [
-            "Κ"
-          ],
-          [
-            "Λ"
-          ]
+          {
+            "strings": [
+              "Α",
+              "Ά"
+            ]
+          },
+          {
+            "strings": [
+              "Σ"
+            ]
+          },
+          {
+            "strings": [
+              "Δ"
+            ]
+          },
+          {
+            "strings": [
+              "Φ"
+            ]
+          },
+          {
+            "strings": [
+              "Γ"
+            ]
+          },
+          {
+            "strings": [
+              "Η",
+              "Ή"
+            ]
+          },
+          {
+            "strings": [
+              "Ξ"
+            ]
+          },
+          {
+            "strings": [
+              "Κ"
+            ]
+          },
+          {
+            "strings": [
+              "Λ"
+            ]
+          }
         ],
         [
-          [
-            "Ζ"
-          ],
-          [
-            "Χ"
-          ],
-          [
-            "Ψ"
-          ],
-          [
-            "Ω",
-            "Ώ"
-          ],
-          [
-            "Β"
-          ],
-          [
-            "Ν"
-          ],
-          [
-            "Μ"
-          ]
+          {
+            "strings": [
+              "Ζ"
+            ]
+          },
+          {
+            "strings": [
+              "Χ"
+            ]
+          },
+          {
+            "strings": [
+              "Ψ"
+            ]
+          },
+          {
+            "strings": [
+              "Ω",
+              "Ώ"
+            ]
+          },
+          {
+            "strings": [
+              "Β"
+            ]
+          },
+          {
+            "strings": [
+              "Ν"
+            ]
+          },
+          {
+            "strings": [
+              "Μ"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -247,151 +363,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -400,129 +578,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/hr.json b/data/osk-layouts/hr.json
index ff0d1d09a1..e1921e50bd 100644
--- a/data/osk-layouts/hr.json
+++ b/data/osk-layouts/hr.json
@@ -5,119 +5,177 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "z",
-            "ž",
-            "ź",
-            "ż"
-          ],
-          [
-            "u"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "z",
+              "ž",
+              "ź",
+              "ż"
+            ]
+          },
+          {
+            "strings": [
+              "u"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a"
-          ],
-          [
-            "s",
-            "š",
-            "ś",
-            "ß"
-          ],
-          [
-            "d",
-            "đ"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "š",
+              "ś",
+              "ß"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "đ"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "y"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "č",
-            "ć",
-            "ç"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "č",
+              "ć",
+              "ç"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -126,119 +184,177 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Z",
-            "Ž",
-            "Ź",
-            "Ż"
-          ],
-          [
-            "U"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Z",
+              "Ž",
+              "Ź",
+              "Ż"
+            ]
+          },
+          {
+            "strings": [
+              "U"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A"
-          ],
-          [
-            "S",
-            "Š",
-            "Ś",
-            "SS"
-          ],
-          [
-            "D",
-            "Đ"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Š",
+              "Ś",
+              "SS"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Đ"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Y"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Č",
-            "Ć",
-            "Ç"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Č",
+              "Ć",
+              "Ç"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -247,151 +363,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -400,128 +578,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/hu.json b/data/osk-layouts/hu.json
index 9bcc532291..2c829f9781 100644
--- a/data/osk-layouts/hu.json
+++ b/data/osk-layouts/hu.json
@@ -5,143 +5,201 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ê",
-            "ë",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "z"
-          ],
-          [
-            "u",
-            "ú",
-            "ü",
-            "ű",
-            "û",
-            "ù",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "î",
-            "ï",
-            "ì",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ó",
-            "ö",
-            "ő",
-            "ô",
-            "ò",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ê",
+              "ë",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ü",
+              "ű",
+              "û",
+              "ù",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "î",
+              "ï",
+              "ì",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ö",
+              "ő",
+              "ô",
+              "ò",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "à",
-            "â",
-            "ä",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "à",
+              "â",
+              "ä",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "y"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -150,143 +208,201 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ê",
-            "Ë",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Z"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ü",
-            "Ű",
-            "Û",
-            "Ù",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Î",
-            "Ï",
-            "Ì",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ö",
-            "Ő",
-            "Ô",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ê",
+              "Ë",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ü",
+              "Ű",
+              "Û",
+              "Ù",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Î",
+              "Ï",
+              "Ì",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ö",
+              "Ő",
+              "Ô",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "À",
-            "Â",
-            "Ä",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "À",
+              "Â",
+              "Ä",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Y"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -295,151 +411,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -448,128 +626,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/id.json b/data/osk-layouts/id.json
index 2342962d1f..488ae78ac6 100644
--- a/data/osk-layouts/id.json
+++ b/data/osk-layouts/id.json
@@ -5,107 +5,165 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -114,107 +172,165 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -223,151 +339,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -376,128 +554,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/il.json b/data/osk-layouts/il.json
index 76dd588080..2e9a7db8dc 100644
--- a/data/osk-layouts/il.json
+++ b/data/osk-layouts/il.json
@@ -5,125 +5,189 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "'",
-            "\""
-          ],
-          [
-            "-",
-            "_"
-          ],
-          [
-            "ק"
-          ],
-          [
-            "ר"
-          ],
-          [
-            "א"
-          ],
-          [
-            "ט"
-          ],
-          [
-            "ו"
-          ],
-          [
-            "ן"
-          ],
-          [
-            "ם"
-          ],
-          [
-            "פ"
-          ]
+          {
+            "strings": [
+              "'",
+              "\""
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "ק"
+            ]
+          },
+          {
+            "strings": [
+              "ר"
+            ]
+          },
+          {
+            "strings": [
+              "א"
+            ]
+          },
+          {
+            "strings": [
+              "ט"
+            ]
+          },
+          {
+            "strings": [
+              "ו"
+            ]
+          },
+          {
+            "strings": [
+              "ן"
+            ]
+          },
+          {
+            "strings": [
+              "ם"
+            ]
+          },
+          {
+            "strings": [
+              "פ"
+            ]
+          }
         ],
         [
-          [
-            "ש"
-          ],
-          [
-            "ד"
-          ],
-          [
-            "ג",
-            "ג׳"
-          ],
-          [
-            "כ"
-          ],
-          [
-            "ע"
-          ],
-          [
-            "י",
-            "ײַ"
-          ],
-          [
-            "ח",
-            "ח׳"
-          ],
-          [
-            "ל"
-          ],
-          [
-            "ך"
-          ],
-          [
-            "ף"
-          ]
+          {
+            "strings": [
+              "ש"
+            ]
+          },
+          {
+            "strings": [
+              "ד"
+            ]
+          },
+          {
+            "strings": [
+              "ג",
+              "ג׳"
+            ]
+          },
+          {
+            "strings": [
+              "כ"
+            ]
+          },
+          {
+            "strings": [
+              "ע"
+            ]
+          },
+          {
+            "strings": [
+              "י",
+              "ײַ"
+            ]
+          },
+          {
+            "strings": [
+              "ח",
+              "ח׳"
+            ]
+          },
+          {
+            "strings": [
+              "ל"
+            ]
+          },
+          {
+            "strings": [
+              "ך"
+            ]
+          },
+          {
+            "strings": [
+              "ף"
+            ]
+          }
         ],
         [
-          [
-            "ז",
-            "ז׳"
-          ],
-          [
-            "ס"
-          ],
-          [
-            "ב"
-          ],
-          [
-            "ה"
-          ],
-          [
-            "נ"
-          ],
-          [
-            "מ"
-          ],
-          [
-            "צ",
-            "צ׳"
-          ],
-          [
-            "ת",
-            "ת׳"
-          ],
-          [
-            "ץ",
-            "ץ׳"
-          ]
+          {
+            "strings": [
+              "ז",
+              "ז׳"
+            ]
+          },
+          {
+            "strings": [
+              "ס"
+            ]
+          },
+          {
+            "strings": [
+              "ב"
+            ]
+          },
+          {
+            "strings": [
+              "ה"
+            ]
+          },
+          {
+            "strings": [
+              "נ"
+            ]
+          },
+          {
+            "strings": [
+              "מ"
+            ]
+          },
+          {
+            "strings": [
+              "צ",
+              "צ׳"
+            ]
+          },
+          {
+            "strings": [
+              "ת",
+              "ת׳"
+            ]
+          },
+          {
+            "strings": [
+              "ץ",
+              "ץ׳"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -132,152 +196,214 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "₪",
-            "$",
-            "¢",
-            "€",
-            "£",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±",
-            "﬩"
-          ],
-          [
-            "(",
-            ">",
-            "}",
-            "]"
-          ],
-          [
-            ")",
-            "<",
-            "{",
-            "["
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "₪",
+              "$",
+              "¢",
+              "€",
+              "£",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±",
+              "﬩"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              ">",
+              "}",
+              "]"
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              "<",
+              "{",
+              "["
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ",",
-            "!"
-          ],
-          [
-            ".",
-            "?"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ",",
+              "!"
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "?"
+            ]
+          }
         ]
       ]
     },
@@ -286,130 +412,192 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "€"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            ">",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            " "
-          ],
-          [
-            ",",
-            "!"
-          ],
-          [
-            ".",
-            "?"
-          ]
+          {
+            "strings": [
+              "<",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ",",
+              "!"
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "?"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/in+bolnagri.json b/data/osk-layouts/in+bolnagri.json
index 36f10ac25f..a98cb8816b 100644
--- a/data/osk-layouts/in+bolnagri.json
+++ b/data/osk-layouts/in+bolnagri.json
@@ -5,146 +5,214 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "◌ौ"
-          ],
-          [
-            "◌ै"
-          ],
-          [
-            "◌ा"
-          ],
-          [
-            "◌ी"
-          ],
-          [
-            "◌ू"
-          ],
-          [
-            "ब",
-            "ब॒",
-            "%"
-          ],
-          [
-            "ह"
-          ],
-          [
-            "ग",
-            "ज्ञ",
-            "ग़",
-            "ग॒",
-            "%"
-          ],
-          [
-            "द"
-          ],
-          [
-            "ज",
-            "ज॒",
-            "ज्ञ",
-            "ज़",
-            "%"
-          ],
-          [
-            "ड",
-            "ड॒",
-            "ड़"
-          ]
+          {
+            "strings": [
+              "◌ौ"
+            ]
+          },
+          {
+            "strings": [
+              "◌ै"
+            ]
+          },
+          {
+            "strings": [
+              "◌ा"
+            ]
+          },
+          {
+            "strings": [
+              "◌ी"
+            ]
+          },
+          {
+            "strings": [
+              "◌ू"
+            ]
+          },
+          {
+            "strings": [
+              "ब",
+              "ब॒",
+              "%"
+            ]
+          },
+          {
+            "strings": [
+              "ह"
+            ]
+          },
+          {
+            "strings": [
+              "ग",
+              "ज्ञ",
+              "ग़",
+              "ग॒",
+              "%"
+            ]
+          },
+          {
+            "strings": [
+              "द"
+            ]
+          },
+          {
+            "strings": [
+              "ज",
+              "ज॒",
+              "ज्ञ",
+              "ज़",
+              "%"
+            ]
+          },
+          {
+            "strings": [
+              "ड",
+              "ड॒",
+              "ड़"
+            ]
+          }
         ],
         [
-          [
-            "◌ो"
-          ],
-          [
-            "◌े"
-          ],
-          [
-            "◌्"
-          ],
-          [
-            "◌ि"
-          ],
-          [
-            "◌ु"
-          ],
-          [
-            "प"
-          ],
-          [
-            "र",
-            "ऋ",
-            "ऱ",
-            "ॠ"
-          ],
-          [
-            "क",
-            "क़"
-          ],
-          [
-            "त",
-            "त्र"
-          ],
-          [
-            "च"
-          ],
-          [
-            "ट"
-          ]
+          {
+            "strings": [
+              "◌ो"
+            ]
+          },
+          {
+            "strings": [
+              "◌े"
+            ]
+          },
+          {
+            "strings": [
+              "◌्"
+            ]
+          },
+          {
+            "strings": [
+              "◌ि"
+            ]
+          },
+          {
+            "strings": [
+              "◌ु"
+            ]
+          },
+          {
+            "strings": [
+              "प"
+            ]
+          },
+          {
+            "strings": [
+              "र",
+              "ऋ",
+              "ऱ",
+              "ॠ"
+            ]
+          },
+          {
+            "strings": [
+              "क",
+              "क़"
+            ]
+          },
+          {
+            "strings": [
+              "त",
+              "त्र"
+            ]
+          },
+          {
+            "strings": [
+              "च"
+            ]
+          },
+          {
+            "strings": [
+              "ट"
+            ]
+          }
         ],
         [
-          [
-            "◌ॉ"
-          ],
-          [
-            "◌ं"
-          ],
-          [
-            "म",
-            "ॐ"
-          ],
-          [
-            "न",
-            "ञ",
-            "ङ",
-            "ऩ"
-          ],
-          [
-            "व"
-          ],
-          [
-            "ल",
-            "ऌ",
-            "ॡ"
-          ],
-          [
-            "स"
-          ],
-          [
-            "य",
-            "य़"
-          ],
-          [
-            "◌़"
-          ]
+          {
+            "strings": [
+              "◌ॉ"
+            ]
+          },
+          {
+            "strings": [
+              "◌ं"
+            ]
+          },
+          {
+            "strings": [
+              "म",
+              "ॐ"
+            ]
+          },
+          {
+            "strings": [
+              "न",
+              "ञ",
+              "ङ",
+              "ऩ"
+            ]
+          },
+          {
+            "strings": [
+              "व"
+            ]
+          },
+          {
+            "strings": [
+              "ल",
+              "ऌ",
+              "ॡ"
+            ]
+          },
+          {
+            "strings": [
+              "स"
+            ]
+          },
+          {
+            "strings": [
+              "य",
+              "य़"
+            ]
+          },
+          {
+            "strings": [
+              "◌़"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -153,152 +221,214 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "१",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "२",
-            "²",
-            "⅔"
-          ],
-          [
-            "३",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "४",
-            "⁴"
-          ],
-          [
-            "५",
-            "⅝"
-          ],
-          [
-            "६"
-          ],
-          [
-            "७",
-            "⅞"
-          ],
-          [
-            "८"
-          ],
-          [
-            "९"
-          ],
-          [
-            "०",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "१",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "२",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "३",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "४",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "५",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "६"
+            ]
+          },
+          {
+            "strings": [
+              "७",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "८"
+            ]
+          },
+          {
+            "strings": [
+              "९"
+            ]
+          },
+          {
+            "strings": [
+              "०",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "₹",
-            "$",
-            "¢",
-            "€",
-            "£",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "₹",
+              "$",
+              "¢",
+              "€",
+              "£",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -307,129 +437,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "€"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/in+mal.json b/data/osk-layouts/in+mal.json
index 50bce86a65..6557fbcd1a 100644
--- a/data/osk-layouts/in+mal.json
+++ b/data/osk-layouts/in+mal.json
@@ -5,127 +5,197 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "ൌ"
-          ],
-          [
-            "ൈ"
-          ],
-          [
-            "ാ"
-          ],
-          [
-            "ീ"
-          ],
-          [
-            "ൂ"
-          ],
-          [
-            "ബ"
-          ],
-          [
-            "ഹ"
-          ],
-          [
-            "ഗ"
-          ],
-          [
-            "ദ"
-          ],
-          [
-            "ജ"
-          ],
-          [
-            "ഡ"
-          ],
-          [
-            "‍"
-          ]
+          {
+            "strings": [
+              "ൌ"
+            ]
+          },
+          {
+            "strings": [
+              "ൈ"
+            ]
+          },
+          {
+            "strings": [
+              "ാ"
+            ]
+          },
+          {
+            "strings": [
+              "ീ"
+            ]
+          },
+          {
+            "strings": [
+              "ൂ"
+            ]
+          },
+          {
+            "strings": [
+              "ബ"
+            ]
+          },
+          {
+            "strings": [
+              "ഹ"
+            ]
+          },
+          {
+            "strings": [
+              "ഗ"
+            ]
+          },
+          {
+            "strings": [
+              "ദ"
+            ]
+          },
+          {
+            "strings": [
+              "ജ"
+            ]
+          },
+          {
+            "strings": [
+              "ഡ"
+            ]
+          },
+          {
+            "strings": [
+              "‍"
+            ]
+          }
         ],
         [
-          [
-            "ോ"
-          ],
-          [
-            "േ"
-          ],
-          [
-            "്"
-          ],
-          [
-            "ി"
-          ],
-          [
-            "ു"
-          ],
-          [
-            "പ"
-          ],
-          [
-            "ര"
-          ],
-          [
-            "ക"
-          ],
-          [
-            "ത"
-          ],
-          [
-            "ച"
-          ],
-          [
-            "ട"
-          ]
+          {
+            "strings": [
+              "ോ"
+            ]
+          },
+          {
+            "strings": [
+              "േ"
+            ]
+          },
+          {
+            "strings": [
+              "്"
+            ]
+          },
+          {
+            "strings": [
+              "ി"
+            ]
+          },
+          {
+            "strings": [
+              "ു"
+            ]
+          },
+          {
+            "strings": [
+              "പ"
+            ]
+          },
+          {
+            "strings": [
+              "ര"
+            ]
+          },
+          {
+            "strings": [
+              "ക"
+            ]
+          },
+          {
+            "strings": [
+              "ത"
+            ]
+          },
+          {
+            "strings": [
+              "ച"
+            ]
+          },
+          {
+            "strings": [
+              "ട"
+            ]
+          }
         ],
         [
-          [
-            "െ"
-          ],
-          [
-            "ം"
-          ],
-          [
-            "മ",
-            "ç"
-          ],
-          [
-            "ന"
-          ],
-          [
-            "വ"
-          ],
-          [
-            "ല",
-            "ñ"
-          ],
-          [
-            "സ"
-          ],
-          [
-            "ഷ"
-          ],
-          [
-            "യ"
-          ]
+          {
+            "strings": [
+              "െ"
+            ]
+          },
+          {
+            "strings": [
+              "ം"
+            ]
+          },
+          {
+            "strings": [
+              "മ",
+              "ç"
+            ]
+          },
+          {
+            "strings": [
+              "ന"
+            ]
+          },
+          {
+            "strings": [
+              "വ"
+            ]
+          },
+          {
+            "strings": [
+              "ല",
+              "ñ"
+            ]
+          },
+          {
+            "strings": [
+              "സ"
+            ]
+          },
+          {
+            "strings": [
+              "ഷ"
+            ]
+          },
+          {
+            "strings": [
+              "യ"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -134,122 +204,190 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "ഐ"
-          ],
-          [
-            "ആ"
-          ],
-          [
-            "ഈ"
-          ],
-          [
-            "ഊ"
-          ],
-          [
-            "ഭ"
-          ],
-          [
-            "ങ"
-          ],
-          [
-            "ഘ"
-          ],
-          [
-            "ധ"
-          ],
-          [
-            "ഝ"
-          ],
-          [
-            "ഢ"
-          ],
-          [
-            "ഞ"
-          ]
+          {
+            "strings": [
+              "ഐ"
+            ]
+          },
+          {
+            "strings": [
+              "ആ"
+            ]
+          },
+          {
+            "strings": [
+              "ഈ"
+            ]
+          },
+          {
+            "strings": [
+              "ഊ"
+            ]
+          },
+          {
+            "strings": [
+              "ഭ"
+            ]
+          },
+          {
+            "strings": [
+              "ങ"
+            ]
+          },
+          {
+            "strings": [
+              "ഘ"
+            ]
+          },
+          {
+            "strings": [
+              "ധ"
+            ]
+          },
+          {
+            "strings": [
+              "ഝ"
+            ]
+          },
+          {
+            "strings": [
+              "ഢ"
+            ]
+          },
+          {
+            "strings": [
+              "ഞ"
+            ]
+          }
         ],
         [
-          [
-            "ഓ"
-          ],
-          [
-            "ഏ"
-          ],
-          [
-            "അ"
-          ],
-          [
-            "ഇ"
-          ],
-          [
-            "ഉ"
-          ],
-          [
-            "ഫ"
-          ],
-          [
-            "റ"
-          ],
-          [
-            "ഖ"
-          ],
-          [
-            "ഥ"
-          ],
-          [
-            "ഛ"
-          ],
-          [
-            "ഠ"
-          ]
+          {
+            "strings": [
+              "ഓ"
+            ]
+          },
+          {
+            "strings": [
+              "ഏ"
+            ]
+          },
+          {
+            "strings": [
+              "അ"
+            ]
+          },
+          {
+            "strings": [
+              "ഇ"
+            ]
+          },
+          {
+            "strings": [
+              "ഉ"
+            ]
+          },
+          {
+            "strings": [
+              "ഫ"
+            ]
+          },
+          {
+            "strings": [
+              "റ"
+            ]
+          },
+          {
+            "strings": [
+              "ഖ"
+            ]
+          },
+          {
+            "strings": [
+              "ഥ"
+            ]
+          },
+          {
+            "strings": [
+              "ഛ"
+            ]
+          },
+          {
+            "strings": [
+              "ഠ"
+            ]
+          }
         ],
         [
-          [
-            "എ"
-          ],
-          [
-            "​"
-          ],
-          [
-            "ണ"
-          ],
-          [
-            "ന"
-          ],
-          [
-            "ഴ"
-          ],
-          [
-            "ള"
-          ],
-          [
-            "ശ"
-          ],
-          [
-            "ഷ"
-          ],
-          [
-            "യ"
-          ]
+          {
+            "strings": [
+              "എ"
+            ]
+          },
+          {
+            "strings": [
+              "​"
+            ]
+          },
+          {
+            "strings": [
+              "ണ"
+            ]
+          },
+          {
+            "strings": [
+              "ന"
+            ]
+          },
+          {
+            "strings": [
+              "ഴ"
+            ]
+          },
+          {
+            "strings": [
+              "ള"
+            ]
+          },
+          {
+            "strings": [
+              "ശ"
+            ]
+          },
+          {
+            "strings": [
+              "ഷ"
+            ]
+          },
+          {
+            "strings": [
+              "യ"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -258,162 +396,224 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "൧",
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "൨",
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "൩",
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "൪",
-            "4",
-            "⁴"
-          ],
-          [
-            "൫",
-            "5",
-            "⅝"
-          ],
-          [
-            "൬",
-            "6"
-          ],
-          [
-            "൭",
-            "7",
-            "⅞"
-          ],
-          [
-            "൮",
-            "8"
-          ],
-          [
-            "൯",
-            "9"
-          ],
-          [
-            "൦",
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "൧",
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "൨",
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "൩",
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "൪",
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "൫",
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "൬",
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "൭",
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "൮",
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "൯",
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "൦",
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "₹",
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "₹",
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -422,128 +622,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+             ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ir.json b/data/osk-layouts/ir.json
index a773b149fa..eae97afa86 100644
--- a/data/osk-layouts/ir.json
+++ b/data/osk-layouts/ir.json
@@ -5,159 +5,231 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "ض"
-          ],
-          [
-            "ص"
-          ],
-          [
-            "ث"
-          ],
-          [
-            "ق",
-            "ڨ"
-          ],
-          [
-            "ف",
-            "ڤ",
-            "ڢ",
-            "ڥ"
-          ],
-          [
-            "غ"
-          ],
-          [
-            "ع"
-          ],
-          [
-            "ه",
-            "ه‍"
-          ],
-          [
-            "خ"
-          ],
-          [
-            "ح"
-          ],
-          [
-            "ج",
-            "چ"
-          ]
+          {
+            "strings": [
+              "ض"
+            ]
+          },
+          {
+            "strings": [
+              "ص"
+            ]
+          },
+          {
+            "strings": [
+              "ث"
+            ]
+          },
+          {
+            "strings": [
+              "ق",
+              "ڨ"
+            ]
+          },
+          {
+            "strings": [
+              "ف",
+              "ڤ",
+              "ڢ",
+              "ڥ"
+            ]
+          },
+          {
+            "strings": [
+              "غ"
+            ]
+          },
+          {
+            "strings": [
+              "ع"
+            ]
+          },
+          {
+            "strings": [
+              "ه",
+              "ه‍"
+            ]
+          },
+          {
+            "strings": [
+              "خ"
+            ]
+          },
+          {
+            "strings": [
+              "ح"
+            ]
+          },
+          {
+            "strings": [
+              "ج",
+              "چ"
+            ]
+          }
         ],
         [
-          [
-            "ش",
-            "ڜ"
-          ],
-          [
-            "س"
-          ],
-          [
-            "ي",
-            "ئ",
-            "ى"
-          ],
-          [
-            "ب",
-            "پ"
-          ],
-          [
-            "ل",
-            "لا",
-            "لأ",
-            "لإ",
-            "لآ"
-          ],
-          [
-            "ا",
-            "آ",
-            "ء",
-            "أ",
-            "إ",
-            "ٱ"
-          ],
-          [
-            "ت"
-          ],
-          [
-            "ن"
-          ],
-          [
-            "م"
-          ],
-          [
-            "ك",
-            "گ",
-            "ک"
-          ],
-          [
-            "ط"
-          ]
+          {
+            "strings": [
+              "ش",
+              "ڜ"
+            ]
+          },
+          {
+            "strings": [
+              "س"
+            ]
+          },
+          {
+            "strings": [
+              "ي",
+              "ئ",
+              "ى"
+            ]
+          },
+          {
+            "strings": [
+              "ب",
+              "پ"
+            ]
+          },
+          {
+            "strings": [
+              "ل",
+              "لا",
+              "لأ",
+              "لإ",
+              "لآ"
+            ]
+          },
+          {
+            "strings": [
+              "ا",
+              "آ",
+              "ء",
+              "أ",
+              "إ",
+              "ٱ"
+            ]
+          },
+          {
+            "strings": [
+              "ت"
+            ]
+          },
+          {
+            "strings": [
+              "ن"
+            ]
+          },
+          {
+            "strings": [
+              "م"
+            ]
+          },
+          {
+            "strings": [
+              "ك",
+              "گ",
+              "ک"
+            ]
+          },
+          {
+            "strings": [
+              "ط"
+            ]
+          }
         ],
         [
-          [
-            "ذ"
-          ],
-          [
-            "ء"
-          ],
-          [
-            "ؤ"
-          ],
-          [
-            "ر"
-          ],
-          [
-            "ى",
-            "ئ"
-          ],
-          [
-            "ة"
-          ],
-          [
-            "و"
-          ],
-          [
-            "ز",
-            "ژ"
-          ],
-          [
-            "ظ"
-          ],
-          [
-            "د"
-          ]
+          {
+            "strings": [
+              "ذ"
+            ]
+          },
+          {
+            "strings": [
+              "ء"
+            ]
+          },
+          {
+            "strings": [
+              "ؤ"
+            ]
+          },
+          {
+            "strings": [
+              "ر"
+            ]
+          },
+          {
+            "strings": [
+              "ى",
+              "ئ"
+            ]
+          },
+          {
+            "strings": [
+              "ة"
+            ]
+          },
+          {
+            "strings": [
+              "و"
+            ]
+          },
+          {
+            "strings": [
+              "ز",
+              "ژ"
+            ]
+          },
+          {
+            "strings": [
+              "ظ"
+            ]
+          },
+          {
+            "strings": [
+              "د"
+            ]
+          }
         ],
         [
-          [
-            "،"
-          ],
-          [
-            " "
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "\"",
-            "'",
-            "#",
-            "-",
-            ":",
-            "!",
-            "،",
-            "؟",
-            "@",
-            "&",
-            "%",
-            "+",
-            "؛",
-            "/",
-            ")",
-            "("
-          ]
+          {
+            "strings": [
+              "،"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "\"",
+              "'",
+              "#",
+              "-",
+              ":",
+              "!",
+              "،",
+              "؟",
+              "@",
+              "&",
+              "%",
+              "+",
+              "؛",
+              "/",
+              ")",
+              "("
+            ]
+          }
         ]
       ]
     },
@@ -166,178 +238,240 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "۱",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "۲",
-            "²",
-            "⅔"
-          ],
-          [
-            "۳",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "۴",
-            "⁴"
-          ],
-          [
-            "۵",
-            "⅝"
-          ],
-          [
-            "۶"
-          ],
-          [
-            "۷",
-            "⅞"
-          ],
-          [
-            "۸"
-          ],
-          [
-            "۹"
-          ],
-          [
-            "۰",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "۱",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "۲",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "۳",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "۴",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "۵",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "۶"
+            ]
+          },
+          {
+            "strings": [
+              "۷",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "۸"
+            ]
+          },
+          {
+            "strings": [
+              "۹"
+            ]
+          },
+          {
+            "strings": [
+              "۰",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "٬",
-            "@"
-          ],
-          [
-            "٫",
-            "#"
-          ],
-          [
-            "﷼",
-            "$",
-            "¢",
-            "€",
-            "£",
-            "¥",
-            "₱"
-          ],
-          [
-            "٪",
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "﴿",
-            ">",
-            "}",
-            "]"
-          ],
-          [
-            ")",
-            "﴾",
-            "<",
-            "{",
-            "["
-          ]
+          {
+            "strings": [
+              "٬",
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "٫",
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "﷼",
+              "$",
+              "¢",
+              "€",
+              "£",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "٪",
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "﴿",
+              ">",
+              "}",
+              "]"
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              "﴾",
+              "<",
+              "{",
+              "["
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "★",
-            "٭"
-          ],
-          [
-            "«",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "»",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            "؛",
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "؟",
-            "?"
-          ]
+          {
+            "strings": [
+              "*",
+              "★",
+              "٭"
+            ]
+          },
+          {
+            "strings": [
+              "«",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "»",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              "؛",
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "؟",
+              "?"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            "،",
-            ":",
-            "!",
-            "؟",
-            "؛",
-            "-",
-            "/",
-            "»",
-            "«"
-          ],
-          [
-            ".",
-            "ٕ",
-            "ٔ",
-            "ْ",
-            "ٍ",
-            "ٌ",
-            "ً",
-            "ّ",
-            "ٖ",
-            "ٰ",
-            "ٓ",
-            "ِ",
-            "ُ",
-            "َ",
-            "ـ"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              "،",
+              ":",
+              "!",
+              "؟",
+              "؛",
+              "-",
+              "/",
+              "»",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "ٕ",
+              "ٔ",
+              "ْ",
+              "ٍ",
+              "ٌ",
+              "ً",
+              "ّ",
+              "ٖ",
+              "ٰ",
+              "ٓ",
+              "ِ",
+              "ُ",
+              "َ",
+              "ـ"
+            ]
+          }
         ]
       ]
     },
@@ -346,146 +480,208 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "€"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "«",
-            "›",
-            "≥",
-            ">"
-          ],
-          [
-            "»",
-            "‹",
-            "≤",
-            "<"
-          ],
-          [
-            " "
-          ],
-          [
-            "،",
-            ":",
-            "!",
-            "؟",
-            "؛",
-            "-",
-            "/",
-            "»",
-            "«"
-          ],
-          [
-            ".",
-            "ٕ",
-            "ٔ",
-            "ْ",
-            "ٍ",
-            "ٌ",
-            "ً",
-            "ّ",
-            "ٖ",
-            "ٰ",
-            "ٓ",
-            "ِ",
-            "ُ",
-            "َ",
-            "ـ"
-          ]
+          {
+            "strings": [
+              "«",
+              "›",
+              "≥",
+              ">"
+            ]
+          },
+          {
+            "strings": [
+              "»",
+              "‹",
+              "≤",
+              "<"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              "،",
+              ":",
+              "!",
+              "؟",
+              "؛",
+              "-",
+              "/",
+              "»",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "ٕ",
+              "ٔ",
+              "ْ",
+              "ٍ",
+              "ٌ",
+              "ً",
+              "ّ",
+              "ٖ",
+              "ٰ",
+              "ٓ",
+              "ِ",
+              "ُ",
+              "َ",
+              "ـ"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/is.json b/data/osk-layouts/is.json
index b53df325cf..d1acb02da6 100644
--- a/data/osk-layouts/is.json
+++ b/data/osk-layouts/is.json
@@ -5,145 +5,203 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "ë",
-            "è",
-            "ê",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t",
-            "þ"
-          ],
-          [
-            "y",
-            "ý",
-            "ÿ"
-          ],
-          [
-            "u",
-            "ú",
-            "ü",
-            "û",
-            "ù",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "ï",
-            "î",
-            "ì",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ó",
-            "ö",
-            "ô",
-            "ò",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "ë",
+              "è",
+              "ê",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t",
+              "þ"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ý",
+              "ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ü",
+              "û",
+              "ù",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ï",
+              "î",
+              "ì",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ö",
+              "ô",
+              "ò",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "ä",
-            "æ",
-            "å",
-            "à",
-            "â",
-            "ã",
-            "ā"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d",
-            "ð"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "ä",
+              "æ",
+              "å",
+              "à",
+              "â",
+              "ã",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "ð"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -152,145 +210,203 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "Ë",
-            "È",
-            "Ê",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T",
-            "Þ"
-          ],
-          [
-            "Y",
-            "Ý",
-            "Ÿ"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ü",
-            "Û",
-            "Ù",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Ï",
-            "Î",
-            "Ì",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ö",
-            "Ô",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "Ë",
+              "È",
+              "Ê",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T",
+              "Þ"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ý",
+              "Ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ü",
+              "Û",
+              "Ù",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ï",
+              "Î",
+              "Ì",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ö",
+              "Ô",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "Ä",
-            "Æ",
-            "Å",
-            "À",
-            "Â",
-            "Ã",
-            "Ā"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D",
-            "Ð"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "Ä",
+              "Æ",
+              "Å",
+              "À",
+              "Â",
+              "Ã",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Ð"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -299,151 +415,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -452,128 +630,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/it.json b/data/osk-layouts/it.json
index d865266e7f..9fa38f7aac 100644
--- a/data/osk-layouts/it.json
+++ b/data/osk-layouts/it.json
@@ -5,143 +5,201 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "è",
-            "é",
-            "ê",
-            "ë",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u",
-            "ù",
-            "ú",
-            "û",
-            "ü",
-            "ū"
-          ],
-          [
-            "i",
-            "ì",
-            "í",
-            "î",
-            "ï",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ò",
-            "ó",
-            "ô",
-            "ö",
-            "õ",
-            "œ",
-            "ø",
-            "ō",
-            "º"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "è",
+              "é",
+              "ê",
+              "ë",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ù",
+              "ú",
+              "û",
+              "ü",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "ì",
+              "í",
+              "î",
+              "ï",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ò",
+              "ó",
+              "ô",
+              "ö",
+              "õ",
+              "œ",
+              "ø",
+              "ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "à",
-            "á",
-            "â",
-            "ä",
-            "æ",
-            "ã",
-            "å",
-            "ā",
-            "ª"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "à",
+              "á",
+              "â",
+              "ä",
+              "æ",
+              "ã",
+              "å",
+              "ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -150,143 +208,201 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "È",
-            "É",
-            "Ê",
-            "Ë",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U",
-            "Ù",
-            "Ú",
-            "Û",
-            "Ü",
-            "Ū"
-          ],
-          [
-            "I",
-            "Ì",
-            "Í",
-            "Î",
-            "Ï",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ò",
-            "Ó",
-            "Ô",
-            "Ö",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō",
-            "º"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "È",
+              "É",
+              "Ê",
+              "Ë",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ù",
+              "Ú",
+              "Û",
+              "Ü",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Ì",
+              "Í",
+              "Î",
+              "Ï",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ò",
+              "Ó",
+              "Ô",
+              "Ö",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "À",
-            "Á",
-            "Â",
-            "Ä",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā",
-            "ª"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "À",
+              "Á",
+              "Â",
+              "Ä",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -295,151 +411,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -448,129 +626,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ke.json b/data/osk-layouts/ke.json
index 9c3e935658..1beb06fd03 100644
--- a/data/osk-layouts/ke.json
+++ b/data/osk-layouts/ke.json
@@ -5,142 +5,200 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "è",
-            "é",
-            "ê",
-            "ë",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u",
-            "û",
-            "ü",
-            "ù",
-            "ú",
-            "ū"
-          ],
-          [
-            "i",
-            "î",
-            "ï",
-            "í",
-            "ī",
-            "ì"
-          ],
-          [
-            "o",
-            "ô",
-            "ö",
-            "ò",
-            "ó",
-            "œ",
-            "ø",
-            "ō",
-            "õ"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "è",
+              "é",
+              "ê",
+              "ë",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "û",
+              "ü",
+              "ù",
+              "ú",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "î",
+              "ï",
+              "í",
+              "ī",
+              "ì"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ô",
+              "ö",
+              "ò",
+              "ó",
+              "œ",
+              "ø",
+              "ō",
+              "õ"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "à",
-            "á",
-            "â",
-            "ä",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s",
-            "ß"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g",
-            "g'"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "à",
+              "á",
+              "â",
+              "ä",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g",
+              "g'"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -149,142 +207,200 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "È",
-            "É",
-            "Ê",
-            "Ë",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U",
-            "Û",
-            "Ü",
-            "Ù",
-            "Ú",
-            "Ū"
-          ],
-          [
-            "I",
-            "Î",
-            "Ï",
-            "Í",
-            "Ī",
-            "Ì"
-          ],
-          [
-            "O",
-            "Ô",
-            "Ö",
-            "Ò",
-            "Ó",
-            "Œ",
-            "Ø",
-            "Ō",
-            "Õ"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "È",
+              "É",
+              "Ê",
+              "Ë",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Û",
+              "Ü",
+              "Ù",
+              "Ú",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Î",
+              "Ï",
+              "Í",
+              "Ī",
+              "Ì"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ô",
+              "Ö",
+              "Ò",
+              "Ó",
+              "Œ",
+              "Ø",
+              "Ō",
+              "Õ"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "À",
-            "Á",
-            "Â",
-            "Ä",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S",
-            "SS"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G",
-            "G'"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "À",
+              "Á",
+              "Â",
+              "Ä",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "SS"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G",
+              "G'"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -293,151 +409,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -446,128 +624,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/kg.json b/data/osk-layouts/kg.json
index b56915abfe..f1c190d234 100644
--- a/data/osk-layouts/kg.json
+++ b/data/osk-layouts/kg.json
@@ -5,127 +5,195 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "й"
-          ],
-          [
-            "ц"
-          ],
-          [
-            "у",
-            "ү"
-          ],
-          [
-            "к"
-          ],
-          [
-            "е",
-            "ё"
-          ],
-          [
-            "н",
-            "ң"
-          ],
-          [
-            "г"
-          ],
-          [
-            "ш"
-          ],
-          [
-            "щ"
-          ],
-          [
-            "з"
-          ],
-          [
-            "х"
-          ]
+          {
+            "strings": [
+              "й"
+            ]
+          },
+          {
+            "strings": [
+              "ц"
+            ]
+          },
+          {
+            "strings": [
+              "у",
+              "ү"
+            ]
+          },
+          {
+            "strings": [
+              "к"
+            ]
+          },
+          {
+            "strings": [
+              "е",
+              "ё"
+            ]
+          },
+          {
+            "strings": [
+              "н",
+              "ң"
+            ]
+          },
+          {
+            "strings": [
+              "г"
+            ]
+          },
+          {
+            "strings": [
+              "ш"
+            ]
+          },
+          {
+            "strings": [
+              "щ"
+            ]
+          },
+          {
+            "strings": [
+              "з"
+            ]
+          },
+          {
+            "strings": [
+              "х"
+            ]
+          }
         ],
         [
-          [
-            "ф"
-          ],
-          [
-            "ы"
-          ],
-          [
-            "в"
-          ],
-          [
-            "а"
-          ],
-          [
-            "п"
-          ],
-          [
-            "р"
-          ],
-          [
-            "о",
-            "ө"
-          ],
-          [
-            "л"
-          ],
-          [
-            "д"
-          ],
-          [
-            "ж"
-          ],
-          [
-            "э"
-          ]
+          {
+            "strings": [
+              "ф"
+            ]
+          },
+          {
+            "strings": [
+              "ы"
+            ]
+          },
+          {
+            "strings": [
+              "в"
+            ]
+          },
+          {
+            "strings": [
+              "а"
+            ]
+          },
+          {
+            "strings": [
+              "п"
+            ]
+          },
+          {
+            "strings": [
+              "р"
+            ]
+          },
+          {
+            "strings": [
+              "о",
+              "ө"
+            ]
+          },
+          {
+            "strings": [
+              "л"
+            ]
+          },
+          {
+            "strings": [
+              "д"
+            ]
+          },
+          {
+            "strings": [
+              "ж"
+            ]
+          },
+          {
+            "strings": [
+              "э"
+            ]
+          }
         ],
         [
-          [
-            "я"
-          ],
-          [
-            "ч"
-          ],
-          [
-            "с"
-          ],
-          [
-            "м"
-          ],
-          [
-            "и"
-          ],
-          [
-            "т"
-          ],
-          [
-            "ь",
-            "ъ"
-          ],
-          [
-            "б"
-          ],
-          [
-            "ю"
-          ]
+          {
+            "strings": [
+              "я"
+            ]
+          },
+          {
+            "strings": [
+              "ч"
+            ]
+          },
+          {
+            "strings": [
+              "с"
+            ]
+          },
+          {
+            "strings": [
+              "м"
+            ]
+          },
+          {
+            "strings": [
+              "и"
+            ]
+          },
+          {
+            "strings": [
+              "т"
+            ]
+          },
+          {
+            "strings": [
+              "ь",
+              "ъ"
+            ]
+          },
+          {
+            "strings": [
+              "б"
+            ]
+          },
+          {
+            "strings": [
+              "ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -134,127 +202,195 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Й"
-          ],
-          [
-            "Ц"
-          ],
-          [
-            "У",
-            "Ү"
-          ],
-          [
-            "К"
-          ],
-          [
-            "Е",
-            "Ё"
-          ],
-          [
-            "Н",
-            "Ң"
-          ],
-          [
-            "Г"
-          ],
-          [
-            "Ш"
-          ],
-          [
-            "Щ"
-          ],
-          [
-            "З"
-          ],
-          [
-            "Х"
-          ]
+          {
+            "strings": [
+              "Й"
+            ]
+          },
+          {
+            "strings": [
+              "Ц"
+            ]
+          },
+          {
+            "strings": [
+              "У",
+              "Ү"
+            ]
+          },
+          {
+            "strings": [
+              "К"
+            ]
+          },
+          {
+            "strings": [
+              "Е",
+              "Ё"
+            ]
+          },
+          {
+            "strings": [
+              "Н",
+              "Ң"
+            ]
+          },
+          {
+            "strings": [
+              "Г"
+            ]
+          },
+          {
+            "strings": [
+              "Ш"
+            ]
+          },
+          {
+            "strings": [
+              "Щ"
+            ]
+          },
+          {
+            "strings": [
+              "З"
+            ]
+          },
+          {
+            "strings": [
+              "Х"
+            ]
+          }
         ],
         [
-          [
-            "Ф"
-          ],
-          [
-            "Ы"
-          ],
-          [
-            "В"
-          ],
-          [
-            "А"
-          ],
-          [
-            "П"
-          ],
-          [
-            "Р"
-          ],
-          [
-            "О",
-            "Ө"
-          ],
-          [
-            "Л"
-          ],
-          [
-            "Д"
-          ],
-          [
-            "Ж"
-          ],
-          [
-            "Э"
-          ]
+          {
+            "strings": [
+              "Ф"
+            ]
+          },
+          {
+            "strings": [
+              "Ы"
+            ]
+          },
+          {
+            "strings": [
+              "В"
+            ]
+          },
+          {
+            "strings": [
+              "А"
+            ]
+          },
+          {
+            "strings": [
+              "П"
+            ]
+          },
+          {
+            "strings": [
+              "Р"
+            ]
+          },
+          {
+            "strings": [
+              "О",
+              "Ө"
+            ]
+          },
+          {
+            "strings": [
+              "Л"
+            ]
+          },
+          {
+            "strings": [
+              "Д"
+            ]
+          },
+          {
+            "strings": [
+              "Ж"
+            ]
+          },
+          {
+            "strings": [
+              "Э"
+            ]
+          }
         ],
         [
-          [
-            "Я"
-          ],
-          [
-            "Ч"
-          ],
-          [
-            "С"
-          ],
-          [
-            "М"
-          ],
-          [
-            "И"
-          ],
-          [
-            "Т"
-          ],
-          [
-            "Ь",
-            "Ъ"
-          ],
-          [
-            "Б"
-          ],
-          [
-            "Ю"
-          ]
+          {
+            "strings": [
+              "Я"
+            ]
+          },
+          {
+            "strings": [
+              "Ч"
+            ]
+          },
+          {
+            "strings": [
+              "С"
+            ]
+          },
+          {
+            "strings": [
+              "М"
+            ]
+          },
+          {
+            "strings": [
+              "И"
+            ]
+          },
+          {
+            "strings": [
+              "Т"
+            ]
+          },
+          {
+            "strings": [
+              "Ь",
+              "Ъ"
+            ]
+          },
+          {
+            "strings": [
+              "Б"
+            ]
+          },
+          {
+            "strings": [
+              "Ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -263,151 +399,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -416,128 +614,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/kh.json b/data/osk-layouts/kh.json
index e5d34cbec9..a860ffab77 100644
--- a/data/osk-layouts/kh.json
+++ b/data/osk-layouts/kh.json
@@ -5,189 +5,287 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "១",
-            "៱"
-          ],
-          [
-            "២",
-            "៲"
-          ],
-          [
-            "៣",
-            "៳"
-          ],
-          [
-            "៤",
-            "៴"
-          ],
-          [
-            "៥",
-            "៵"
-          ],
-          [
-            "៦",
-            "៶"
-          ],
-          [
-            "៧",
-            "៷"
-          ],
-          [
-            "៨",
-            "៸"
-          ],
-          [
-            "៩",
-            "៹"
-          ],
-          [
-            "០",
-            "៰"
-          ],
-          [
-            "ឥ",
-            "",
-            "ឦ"
-          ],
-          [
-            "ឲ",
-            "ឱ"
-          ]
+          {
+            "strings": [
+              "១",
+              "៱"
+            ]
+          },
+          {
+            "strings": [
+              "២",
+              "៲"
+            ]
+          },
+          {
+            "strings": [
+              "៣",
+              "៳"
+            ]
+          },
+          {
+            "strings": [
+              "៤",
+              "៴"
+            ]
+          },
+          {
+            "strings": [
+              "៥",
+              "៵"
+            ]
+          },
+          {
+            "strings": [
+              "៦",
+              "៶"
+            ]
+          },
+          {
+            "strings": [
+              "៧",
+              "៷"
+            ]
+          },
+          {
+            "strings": [
+              "៨",
+              "៸"
+            ]
+          },
+          {
+            "strings": [
+              "៩",
+              "៹"
+            ]
+          },
+          {
+            "strings": [
+              "០",
+              "៰"
+            ]
+          },
+          {
+            "strings": [
+              "ឥ",
+              "",
+              "ឦ"
+            ]
+          },
+          {
+            "strings": [
+              "ឲ",
+              "ឱ"
+            ]
+          }
         ],
         [
-          [
-            "ឆ"
-          ],
-          [
-            "ឹ"
-          ],
-          [
-            "េ"
-          ],
-          [
-            "រ"
-          ],
-          [
-            "ត"
-          ],
-          [
-            "យ"
-          ],
-          [
-            "ុ"
-          ],
-          [
-            "ិ"
-          ],
-          [
-            "ោ"
-          ],
-          [
-            "ផ"
-          ],
-          [
-            "ៀ"
-          ],
-          [
-            "ឪ",
-            "ឧ",
-            "ឱ",
-            "ឳ",
-            "ឩ",
-            "ឨ"
-          ]
+          {
+            "strings": [
+              "ឆ"
+            ]
+          },
+          {
+            "strings": [
+              "ឹ"
+            ]
+          },
+          {
+            "strings": [
+              "េ"
+            ]
+          },
+          {
+            "strings": [
+              "រ"
+            ]
+          },
+          {
+            "strings": [
+              "ត"
+            ]
+          },
+          {
+            "strings": [
+              "យ"
+            ]
+          },
+          {
+            "strings": [
+              "ុ"
+            ]
+          },
+          {
+            "strings": [
+              "ិ"
+            ]
+          },
+          {
+            "strings": [
+              "ោ"
+            ]
+          },
+          {
+            "strings": [
+              "ផ"
+            ]
+          },
+          {
+            "strings": [
+              "ៀ"
+            ]
+          },
+          {
+            "strings": [
+              "ឪ",
+              "ឧ",
+              "ឱ",
+              "ឳ",
+              "ឩ",
+              "ឨ"
+            ]
+          }
         ],
         [
-          [
-            "ា"
-          ],
-          [
-            "ស"
-          ],
-          [
-            "ដ"
-          ],
-          [
-            "ថ"
-          ],
-          [
-            "ង"
-          ],
-          [
-            "ហ"
-          ],
-          [
-            "្"
-          ],
-          [
-            "ក"
-          ],
-          [
-            "ល"
-          ],
-          [
-            "ើ"
-          ],
-          [
-            "់"
-          ],
-          [
-            "ឮ",
-            "ឭ",
-            "ឰ"
-          ]
+          {
+            "strings": [
+              "ា"
+            ]
+          },
+          {
+            "strings": [
+              "ស"
+            ]
+          },
+          {
+            "strings": [
+              "ដ"
+            ]
+          },
+          {
+            "strings": [
+              "ថ"
+            ]
+          },
+          {
+            "strings": [
+              "ង"
+            ]
+          },
+          {
+            "strings": [
+              "ហ"
+            ]
+          },
+          {
+            "strings": [
+              "្"
+            ]
+          },
+          {
+            "strings": [
+              "ក"
+            ]
+          },
+          {
+            "strings": [
+              "ល"
+            ]
+          },
+          {
+            "strings": [
+              "ើ"
+            ]
+          },
+          {
+            "strings": [
+              "់"
+            ]
+          },
+          {
+            "strings": [
+              "ឮ",
+              "ឭ",
+              "ឰ"
+            ]
+          }
         ],
         [
-          [
-            "ឋ"
-          ],
-          [
-            "ខ"
-          ],
-          [
-            "ច"
-          ],
-          [
-            "វ"
-          ],
-          [
-            "ប"
-          ],
-          [
-            "ន"
-          ],
-          [
-            "ម"
-          ],
-          [
-            "ុំ"
-          ],
-          [
-            "។"
-          ],
-          [
-            "៊"
-          ]
+          {
+            "strings": [
+              "ឋ"
+            ]
+          },
+          {
+            "strings": [
+              "ខ"
+            ]
+          },
+          {
+            "strings": [
+              "ច"
+            ]
+          },
+          {
+            "strings": [
+              "វ"
+            ]
+          },
+          {
+            "strings": [
+              "ប"
+            ]
+          },
+          {
+            "strings": [
+              "ន"
+            ]
+          },
+          {
+            "strings": [
+              "ម"
+            ]
+          },
+          {
+            "strings": [
+              "ុំ"
+            ]
+          },
+          {
+            "strings": [
+              "។"
+            ]
+          },
+          {
+            "strings": [
+              "៊"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -196,152 +294,214 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "៛",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "៛",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -350,128 +510,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/la.json b/data/osk-layouts/la.json
index aedff60956..24aec2cde6 100644
--- a/data/osk-layouts/la.json
+++ b/data/osk-layouts/la.json
@@ -5,179 +5,277 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "ຢ",
-            "໑"
-          ],
-          [
-            "ຟ",
-            "໒"
-          ],
-          [
-            "ໂ",
-            "໓"
-          ],
-          [
-            "ຖ",
-            "໔"
-          ],
-          [
-            "ຸ"
-          ],
-          [
-            "ູ"
-          ],
-          [
-            "ຄ",
-            "໕"
-          ],
-          [
-            "ຕ",
-            "໖"
-          ],
-          [
-            "ຈ",
-            "໗"
-          ],
-          [
-            "ຂ",
-            "໘"
-          ],
-          [
-            "ຊ",
-            "໙"
-          ],
-          [
-            "ໍ"
-          ]
+          {
+            "strings": [
+              "ຢ",
+              "໑"
+            ]
+          },
+          {
+            "strings": [
+              "ຟ",
+              "໒"
+            ]
+          },
+          {
+            "strings": [
+              "ໂ",
+              "໓"
+            ]
+          },
+          {
+            "strings": [
+              "ຖ",
+              "໔"
+            ]
+          },
+          {
+            "strings": [
+              "ຸ"
+            ]
+          },
+          {
+            "strings": [
+              "ູ"
+            ]
+          },
+          {
+            "strings": [
+              "ຄ",
+              "໕"
+            ]
+          },
+          {
+            "strings": [
+              "ຕ",
+              "໖"
+            ]
+          },
+          {
+            "strings": [
+              "ຈ",
+              "໗"
+            ]
+          },
+          {
+            "strings": [
+              "ຂ",
+              "໘"
+            ]
+          },
+          {
+            "strings": [
+              "ຊ",
+              "໙"
+            ]
+          },
+          {
+            "strings": [
+              "ໍ"
+            ]
+          }
         ],
         [
-          [
-            "ົ"
-          ],
-          [
-            "ໄ",
-            "໐"
-          ],
-          [
-            "ຳ"
-          ],
-          [
-            "ພ"
-          ],
-          [
-            "ະ"
-          ],
-          [
-            "ິ"
-          ],
-          [
-            "ີ"
-          ],
-          [
-            "ຮ"
-          ],
-          [
-            "ນ"
-          ],
-          [
-            "ຍ"
-          ],
-          [
-            "ບ"
-          ],
-          [
-            "ລ"
-          ]
+          {
+            "strings": [
+              "ົ"
+            ]
+          },
+          {
+            "strings": [
+              "ໄ",
+              "໐"
+            ]
+          },
+          {
+            "strings": [
+              "ຳ"
+            ]
+          },
+          {
+            "strings": [
+              "ພ"
+            ]
+          },
+          {
+            "strings": [
+              "ະ"
+            ]
+          },
+          {
+            "strings": [
+              "ິ"
+            ]
+          },
+          {
+            "strings": [
+              "ີ"
+            ]
+          },
+          {
+            "strings": [
+              "ຮ"
+            ]
+          },
+          {
+            "strings": [
+              "ນ"
+            ]
+          },
+          {
+            "strings": [
+              "ຍ"
+            ]
+          },
+          {
+            "strings": [
+              "ບ"
+            ]
+          },
+          {
+            "strings": [
+              "ລ"
+            ]
+          }
         ],
         [
-          [
-            "ັ"
-          ],
-          [
-            "ຫ"
-          ],
-          [
-            "ກ"
-          ],
-          [
-            "ດ"
-          ],
-          [
-            "ເ"
-          ],
-          [
-            "້"
-          ],
-          [
-            "່"
-          ],
-          [
-            "າ"
-          ],
-          [
-            "ສ"
-          ],
-          [
-            "ວ"
-          ],
-          [
-            "ງ"
-          ],
-          [
-            "“"
-          ]
+          {
+            "strings": [
+              "ັ"
+            ]
+          },
+          {
+            "strings": [
+              "ຫ"
+            ]
+          },
+          {
+            "strings": [
+              "ກ"
+            ]
+          },
+          {
+            "strings": [
+              "ດ"
+            ]
+          },
+          {
+            "strings": [
+              "ເ"
+            ]
+          },
+          {
+            "strings": [
+              "້"
+            ]
+          },
+          {
+            "strings": [
+              "່"
+            ]
+          },
+          {
+            "strings": [
+              "າ"
+            ]
+          },
+          {
+            "strings": [
+              "ສ"
+            ]
+          },
+          {
+            "strings": [
+              "ວ"
+            ]
+          },
+          {
+            "strings": [
+              "ງ"
+            ]
+          },
+          {
+            "strings": [
+              "“"
+            ]
+          }
         ],
         [
-          [
-            "ຜ"
-          ],
-          [
-            "ປ"
-          ],
-          [
-            "ແ"
-          ],
-          [
-            "ອ"
-          ],
-          [
-            "ຶ"
-          ],
-          [
-            "ື"
-          ],
-          [
-            "ທ"
-          ],
-          [
-            "ມ"
-          ],
-          [
-            "ໃ"
-          ],
-          [
-            "ຝ"
-          ]
+          {
+            "strings": [
+              "ຜ"
+            ]
+          },
+          {
+            "strings": [
+              "ປ"
+            ]
+          },
+          {
+            "strings": [
+              "ແ"
+            ]
+          },
+          {
+            "strings": [
+              "ອ"
+            ]
+          },
+          {
+            "strings": [
+              "ຶ"
+            ]
+          },
+          {
+            "strings": [
+              "ື"
+            ]
+          },
+          {
+            "strings": [
+              "ທ"
+            ]
+          },
+          {
+            "strings": [
+              "ມ"
+            ]
+          },
+          {
+            "strings": [
+              "ໃ"
+            ]
+          },
+          {
+            "strings": [
+              "ຝ"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -186,152 +284,214 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "₭",
-            "$",
-            "¢",
-            "€",
-            "£",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "₭",
+              "$",
+              "¢",
+              "€",
+              "£",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -340,129 +500,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "€"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/latam.json b/data/osk-layouts/latam.json
index 4095c7ab79..7089e57c03 100644
--- a/data/osk-layouts/latam.json
+++ b/data/osk-layouts/latam.json
@@ -5,152 +5,212 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ë",
-            "ê",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u",
-            "ú",
-            "ü",
-            "ù",
-            "û",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "ï",
-            "ì",
-            "î",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ó",
-            "ò",
-            "ö",
-            "ô",
-            "õ",
-            "ø",
-            "œ",
-            "ō",
-            "º"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ë",
+              "ê",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ü",
+              "ù",
+              "û",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ï",
+              "ì",
+              "î",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ò",
+              "ö",
+              "ô",
+              "õ",
+              "ø",
+              "œ",
+              "ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "à",
-            "ä",
-            "â",
-            "ã",
-            "å",
-            "ą",
-            "æ",
-            "ā",
-            "ª"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ],
-          [
-            "ñ"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "à",
+              "ä",
+              "â",
+              "ã",
+              "å",
+              "ą",
+              "æ",
+              "ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          },
+          {
+            "strings": [
+              "ñ"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç",
-            "ć",
-            "č"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç",
+              "ć",
+              "č"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            ";",
-            "!",
-            ",",
-            "?",
-            ":",
-            "¡",
-            "@",
-            "¿"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              ";",
+              "!",
+              ",",
+              "?",
+              ":",
+              "¡",
+              "@",
+              "¿"
+            ]
+          }
         ]
       ]
     },
@@ -159,152 +219,212 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ë",
-            "Ê",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ü",
-            "Ù",
-            "Û",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Ï",
-            "Ì",
-            "Î",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ò",
-            "Ö",
-            "Ô",
-            "Õ",
-            "Ø",
-            "Œ",
-            "Ō",
-            "º"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ë",
+              "Ê",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ü",
+              "Ù",
+              "Û",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ï",
+              "Ì",
+              "Î",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ò",
+              "Ö",
+              "Ô",
+              "Õ",
+              "Ø",
+              "Œ",
+              "Ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "À",
-            "Ä",
-            "Â",
-            "Ã",
-            "Å",
-            "Ą",
-            "Æ",
-            "Ā",
-            "ª"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ],
-          [
-            "Ñ"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "À",
+              "Ä",
+              "Â",
+              "Ã",
+              "Å",
+              "Ą",
+              "Æ",
+              "Ā",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          },
+          {
+            "strings": [
+              "Ñ"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç",
-            "Ć",
-            "Č"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç",
+              "Ć",
+              "Č"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            ";",
-            "!",
-            ",",
-            "?",
-            ":",
-            "¡",
-            "@",
-            "¿"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              ";",
+              "!",
+              ",",
+              "?",
+              ":",
+              "¡",
+              "@",
+              "¿"
+            ]
+          }
         ]
       ]
     },
@@ -313,154 +433,216 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ",",
-            "!",
-            "¡"
-          ],
-          [
-            ".",
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ",",
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "?",
+              "¿"
+            ]
+          }
         ]
       ]
     },
@@ -469,131 +651,193 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ",",
-            "!",
-            "¡"
-          ],
-          [
-            ".",
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ",",
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "?",
+              "¿"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/lt.json b/data/osk-layouts/lt.json
index 7cd5352a81..ee229d31f5 100644
--- a/data/osk-layouts/lt.json
+++ b/data/osk-layouts/lt.json
@@ -5,177 +5,235 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "ė",
-            "ę",
-            "ē",
-            "è",
-            "é",
-            "ê",
-            "ë",
-            "ě"
-          ],
-          [
-            "r",
-            "ŗ",
-            "ř",
-            "ŕ"
-          ],
-          [
-            "t",
-            "ţ",
-            "ť"
-          ],
-          [
-            "y",
-            "ý",
-            "ÿ"
-          ],
-          [
-            "u",
-            "ū",
-            "ų",
-            "ü",
-            "ū",
-            "ù",
-            "ú",
-            "û",
-            "ů",
-            "ű"
-          ],
-          [
-            "i",
-            "į",
-            "ī",
-            "ì",
-            "í",
-            "î",
-            "ï",
-            "ı"
-          ],
-          [
-            "o",
-            "ö",
-            "õ",
-            "ò",
-            "ó",
-            "ô",
-            "œ",
-            "ő",
-            "ø"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "ė",
+              "ę",
+              "ē",
+              "è",
+              "é",
+              "ê",
+              "ë",
+              "ě"
+            ]
+          },
+          {
+            "strings": [
+              "r",
+              "ŗ",
+              "ř",
+              "ŕ"
+            ]
+          },
+          {
+            "strings": [
+              "t",
+              "ţ",
+              "ť"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ý",
+              "ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ū",
+              "ų",
+              "ü",
+              "ū",
+              "ù",
+              "ú",
+              "û",
+              "ů",
+              "ű"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "į",
+              "ī",
+              "ì",
+              "í",
+              "î",
+              "ï",
+              "ı"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ö",
+              "õ",
+              "ò",
+              "ó",
+              "ô",
+              "œ",
+              "ő",
+              "ø"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "ą",
-            "ä",
-            "ā",
-            "à",
-            "á",
-            "â",
-            "ã",
-            "å",
-            "æ"
-          ],
-          [
-            "s",
-            "š",
-            "ß",
-            "ś",
-            "ş"
-          ],
-          [
-            "d",
-            "ď"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g",
-            "ģ",
-            "ğ"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k",
-            "ķ"
-          ],
-          [
-            "l",
-            "ļ",
-            "ł",
-            "ĺ",
-            "ľ"
-          ]
+          {
+            "strings": [
+              "a",
+              "ą",
+              "ä",
+              "ā",
+              "à",
+              "á",
+              "â",
+              "ã",
+              "å",
+              "æ"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "š",
+              "ß",
+              "ś",
+              "ş"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "ď"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g",
+              "ģ",
+              "ğ"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k",
+              "ķ"
+            ]
+          },
+          {
+            "strings": [
+              "l",
+              "ļ",
+              "ł",
+              "ĺ",
+              "ľ"
+            ]
+          }
         ],
         [
-          [
-            "z",
-            "ž",
-            "ż",
-            "ź"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "č",
-            "ç",
-            "ć"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ņ",
-            "ñ",
-            "ń",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z",
+              "ž",
+              "ż",
+              "ź"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "č",
+              "ç",
+              "ć"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ņ",
+              "ñ",
+              "ń",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -184,177 +242,235 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "Ė",
-            "Ę",
-            "Ē",
-            "È",
-            "É",
-            "Ê",
-            "Ë",
-            "Ě"
-          ],
-          [
-            "R",
-            "Ŗ",
-            "Ř",
-            "Ŕ"
-          ],
-          [
-            "T",
-            "Ţ",
-            "Ť"
-          ],
-          [
-            "Y",
-            "Ý",
-            "Ÿ"
-          ],
-          [
-            "U",
-            "Ū",
-            "Ų",
-            "Ü",
-            "Ū",
-            "Ù",
-            "Ú",
-            "Û",
-            "Ů",
-            "Ű"
-          ],
-          [
-            "I",
-            "Į",
-            "Ī",
-            "Ì",
-            "Í",
-            "Î",
-            "Ï",
-            "I"
-          ],
-          [
-            "O",
-            "Ö",
-            "Õ",
-            "Ò",
-            "Ó",
-            "Ô",
-            "Œ",
-            "Ő",
-            "Ø"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "Ė",
+              "Ę",
+              "Ē",
+              "È",
+              "É",
+              "Ê",
+              "Ë",
+              "Ě"
+            ]
+          },
+          {
+            "strings": [
+              "R",
+              "Ŗ",
+              "Ř",
+              "Ŕ"
+            ]
+          },
+          {
+            "strings": [
+              "T",
+              "Ţ",
+              "Ť"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ý",
+              "Ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ū",
+              "Ų",
+              "Ü",
+              "Ū",
+              "Ù",
+              "Ú",
+              "Û",
+              "Ů",
+              "Ű"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Į",
+              "Ī",
+              "Ì",
+              "Í",
+              "Î",
+              "Ï",
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ö",
+              "Õ",
+              "Ò",
+              "Ó",
+              "Ô",
+              "Œ",
+              "Ő",
+              "Ø"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Ą",
-            "Ä",
-            "Ā",
-            "À",
-            "Á",
-            "Â",
-            "Ã",
-            "Å",
-            "Æ"
-          ],
-          [
-            "S",
-            "Š",
-            "SS",
-            "Ś",
-            "Ş"
-          ],
-          [
-            "D",
-            "Ď"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G",
-            "Ģ",
-            "Ğ"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K",
-            "Ķ"
-          ],
-          [
-            "L",
-            "Ļ",
-            "Ł",
-            "Ĺ",
-            "Ľ"
-          ]
+          {
+            "strings": [
+              "A",
+              "Ą",
+              "Ä",
+              "Ā",
+              "À",
+              "Á",
+              "Â",
+              "Ã",
+              "Å",
+              "Æ"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Š",
+              "SS",
+              "Ś",
+              "Ş"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Ď"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G",
+              "Ģ",
+              "Ğ"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K",
+              "Ķ"
+            ]
+          },
+          {
+            "strings": [
+              "L",
+              "Ļ",
+              "Ł",
+              "Ĺ",
+              "Ľ"
+            ]
+          }
         ],
         [
-          [
-            "Z",
-            "Ž",
-            "Ż",
-            "Ź"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Č",
-            "Ç",
-            "Ć"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ņ",
-            "Ñ",
-            "Ń",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z",
+              "Ž",
+              "Ż",
+              "Ź"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Č",
+              "Ç",
+              "Ć"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ņ",
+              "Ñ",
+              "Ń",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -363,151 +479,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -516,128 +694,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/lv.json b/data/osk-layouts/lv.json
index bab6ae3d7a..6eb575f025 100644
--- a/data/osk-layouts/lv.json
+++ b/data/osk-layouts/lv.json
@@ -5,176 +5,234 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "ē",
-            "ė",
-            "è",
-            "é",
-            "ê",
-            "ë",
-            "ę",
-            "ě"
-          ],
-          [
-            "r",
-            "ŗ",
-            "ř",
-            "ŕ"
-          ],
-          [
-            "t",
-            "ţ",
-            "ť"
-          ],
-          [
-            "y",
-            "ý",
-            "ÿ"
-          ],
-          [
-            "u",
-            "ū",
-            "ų",
-            "ù",
-            "ú",
-            "û",
-            "ü",
-            "ů",
-            "ű"
-          ],
-          [
-            "i",
-            "ī",
-            "į",
-            "ì",
-            "í",
-            "î",
-            "ï",
-            "ı"
-          ],
-          [
-            "o",
-            "ò",
-            "ó",
-            "ô",
-            "õ",
-            "ö",
-            "œ",
-            "ő",
-            "ø"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "ē",
+              "ė",
+              "è",
+              "é",
+              "ê",
+              "ë",
+              "ę",
+              "ě"
+            ]
+          },
+          {
+            "strings": [
+              "r",
+              "ŗ",
+              "ř",
+              "ŕ"
+            ]
+          },
+          {
+            "strings": [
+              "t",
+              "ţ",
+              "ť"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ý",
+              "ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ū",
+              "ų",
+              "ù",
+              "ú",
+              "û",
+              "ü",
+              "ů",
+              "ű"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "ī",
+              "į",
+              "ì",
+              "í",
+              "î",
+              "ï",
+              "ı"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ò",
+              "ó",
+              "ô",
+              "õ",
+              "ö",
+              "œ",
+              "ő",
+              "ø"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "ā",
-            "à",
-            "á",
-            "â",
-            "ã",
-            "ä",
-            "å",
-            "æ",
-            "ą"
-          ],
-          [
-            "s",
-            "š",
-            "ß",
-            "ś",
-            "ş"
-          ],
-          [
-            "d",
-            "ď"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g",
-            "ģ",
-            "ğ"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k",
-            "ķ"
-          ],
-          [
-            "l",
-            "ļ",
-            "ł",
-            "ĺ",
-            "ľ"
-          ]
+          {
+            "strings": [
+              "a",
+              "ā",
+              "à",
+              "á",
+              "â",
+              "ã",
+              "ä",
+              "å",
+              "æ",
+              "ą"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "š",
+              "ß",
+              "ś",
+              "ş"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "ď"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g",
+              "ģ",
+              "ğ"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k",
+              "ķ"
+            ]
+          },
+          {
+            "strings": [
+              "l",
+              "ļ",
+              "ł",
+              "ĺ",
+              "ľ"
+            ]
+          }
         ],
         [
-          [
-            "z",
-            "ž",
-            "ż",
-            "ź"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "č",
-            "ç",
-            "ć"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ņ",
-            "ñ",
-            "ń",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z",
+              "ž",
+              "ż",
+              "ź"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "č",
+              "ç",
+              "ć"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ņ",
+              "ñ",
+              "ń",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -183,176 +241,234 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "Ē",
-            "Ė",
-            "È",
-            "É",
-            "Ê",
-            "Ë",
-            "Ę",
-            "Ě"
-          ],
-          [
-            "R",
-            "Ŗ",
-            "Ř",
-            "Ŕ"
-          ],
-          [
-            "T",
-            "Ţ",
-            "Ť"
-          ],
-          [
-            "Y",
-            "Ý",
-            "Ÿ"
-          ],
-          [
-            "U",
-            "Ū",
-            "Ų",
-            "Ù",
-            "Ú",
-            "Û",
-            "Ü",
-            "Ů",
-            "Ű"
-          ],
-          [
-            "I",
-            "Ī",
-            "Į",
-            "Ì",
-            "Í",
-            "Î",
-            "Ï",
-            "I"
-          ],
-          [
-            "O",
-            "Ò",
-            "Ó",
-            "Ô",
-            "Õ",
-            "Ö",
-            "Œ",
-            "Ő",
-            "Ø"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "Ē",
+              "Ė",
+              "È",
+              "É",
+              "Ê",
+              "Ë",
+              "Ę",
+              "Ě"
+            ]
+          },
+          {
+            "strings": [
+              "R",
+              "Ŗ",
+              "Ř",
+              "Ŕ"
+            ]
+          },
+          {
+            "strings": [
+              "T",
+              "Ţ",
+              "Ť"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ý",
+              "Ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ū",
+              "Ų",
+              "Ù",
+              "Ú",
+              "Û",
+              "Ü",
+              "Ů",
+              "Ű"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Ī",
+              "Į",
+              "Ì",
+              "Í",
+              "Î",
+              "Ï",
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ò",
+              "Ó",
+              "Ô",
+              "Õ",
+              "Ö",
+              "Œ",
+              "Ő",
+              "Ø"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Ā",
-            "À",
-            "Á",
-            "Â",
-            "Ã",
-            "Ä",
-            "Å",
-            "Æ",
-            "Ą"
-          ],
-          [
-            "S",
-            "Š",
-            "SS",
-            "Ś",
-            "Ş"
-          ],
-          [
-            "D",
-            "Ď"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G",
-            "Ģ",
-            "Ğ"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K",
-            "Ķ"
-          ],
-          [
-            "L",
-            "Ļ",
-            "Ł",
-            "Ĺ",
-            "Ľ"
-          ]
+          {
+            "strings": [
+              "A",
+              "Ā",
+              "À",
+              "Á",
+              "Â",
+              "Ã",
+              "Ä",
+              "Å",
+              "Æ",
+              "Ą"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Š",
+              "SS",
+              "Ś",
+              "Ş"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Ď"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G",
+              "Ģ",
+              "Ğ"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K",
+              "Ķ"
+            ]
+          },
+          {
+            "strings": [
+              "L",
+              "Ļ",
+              "Ł",
+              "Ĺ",
+              "Ľ"
+            ]
+          }
         ],
         [
-          [
-            "Z",
-            "Ž",
-            "Ż",
-            "Ź"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Č",
-            "Ç",
-            "Ć"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ņ",
-            "Ñ",
-            "Ń",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z",
+              "Ž",
+              "Ż",
+              "Ź"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Č",
+              "Ç",
+              "Ć"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ņ",
+              "Ñ",
+              "Ń",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -361,151 +477,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -514,128 +692,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/mk.json b/data/osk-layouts/mk.json
index 2815121f6e..b60640dc40 100644
--- a/data/osk-layouts/mk.json
+++ b/data/osk-layouts/mk.json
@@ -5,124 +5,192 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "љ"
-          ],
-          [
-            "њ"
-          ],
-          [
-            "е",
-            "ѐ"
-          ],
-          [
-            "р"
-          ],
-          [
-            "т"
-          ],
-          [
-            "ѕ"
-          ],
-          [
-            "у"
-          ],
-          [
-            "и",
-            "ѝ"
-          ],
-          [
-            "о"
-          ],
-          [
-            "п"
-          ],
-          [
-            "ш"
-          ]
+          {
+            "strings": [
+              "љ"
+            ]
+          },
+          {
+            "strings": [
+              "њ"
+            ]
+          },
+          {
+            "strings": [
+              "е",
+              "ѐ"
+            ]
+          },
+          {
+            "strings": [
+              "р"
+            ]
+          },
+          {
+            "strings": [
+              "т"
+            ]
+          },
+          {
+            "strings": [
+              "ѕ"
+            ]
+          },
+          {
+            "strings": [
+              "у"
+            ]
+          },
+          {
+            "strings": [
+              "и",
+              "ѝ"
+            ]
+          },
+          {
+            "strings": [
+              "о"
+            ]
+          },
+          {
+            "strings": [
+              "п"
+            ]
+          },
+          {
+            "strings": [
+              "ш"
+            ]
+          }
         ],
         [
-          [
-            "а"
-          ],
-          [
-            "с"
-          ],
-          [
-            "д"
-          ],
-          [
-            "ф"
-          ],
-          [
-            "г"
-          ],
-          [
-            "х"
-          ],
-          [
-            "ј"
-          ],
-          [
-            "к"
-          ],
-          [
-            "л"
-          ],
-          [
-            "ч"
-          ],
-          [
-            "ќ"
-          ]
+          {
+            "strings": [
+              "а"
+            ]
+          },
+          {
+            "strings": [
+              "с"
+            ]
+          },
+          {
+            "strings": [
+              "д"
+            ]
+          },
+          {
+            "strings": [
+              "ф"
+            ]
+          },
+          {
+            "strings": [
+              "г"
+            ]
+          },
+          {
+            "strings": [
+              "х"
+            ]
+          },
+          {
+            "strings": [
+              "ј"
+            ]
+          },
+          {
+            "strings": [
+              "к"
+            ]
+          },
+          {
+            "strings": [
+              "л"
+            ]
+          },
+          {
+            "strings": [
+              "ч"
+            ]
+          },
+          {
+            "strings": [
+              "ќ"
+            ]
+          }
         ],
         [
-          [
-            "з"
-          ],
-          [
-            "џ"
-          ],
-          [
-            "ц"
-          ],
-          [
-            "в"
-          ],
-          [
-            "б"
-          ],
-          [
-            "н"
-          ],
-          [
-            "м"
-          ],
-          [
-            "ѓ"
-          ],
-          [
-            "ж"
-          ]
+          {
+            "strings": [
+              "з"
+            ]
+          },
+          {
+            "strings": [
+              "џ"
+            ]
+          },
+          {
+            "strings": [
+              "ц"
+            ]
+          },
+          {
+            "strings": [
+              "в"
+            ]
+          },
+          {
+            "strings": [
+              "б"
+            ]
+          },
+          {
+            "strings": [
+              "н"
+            ]
+          },
+          {
+            "strings": [
+              "м"
+            ]
+          },
+          {
+            "strings": [
+              "ѓ"
+            ]
+          },
+          {
+            "strings": [
+              "ж"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -131,124 +199,192 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Љ"
-          ],
-          [
-            "Њ"
-          ],
-          [
-            "Е",
-            "Ѐ"
-          ],
-          [
-            "Р"
-          ],
-          [
-            "Т"
-          ],
-          [
-            "Ѕ"
-          ],
-          [
-            "У"
-          ],
-          [
-            "И",
-            "Ѝ"
-          ],
-          [
-            "О"
-          ],
-          [
-            "П"
-          ],
-          [
-            "Ш"
-          ]
+          {
+            "strings": [
+              "Љ"
+            ]
+          },
+          {
+            "strings": [
+              "Њ"
+            ]
+          },
+          {
+            "strings": [
+              "Е",
+              "Ѐ"
+            ]
+          },
+          {
+            "strings": [
+              "Р"
+            ]
+          },
+          {
+            "strings": [
+              "Т"
+            ]
+          },
+          {
+            "strings": [
+              "Ѕ"
+            ]
+          },
+          {
+            "strings": [
+              "У"
+            ]
+          },
+          {
+            "strings": [
+              "И",
+              "Ѝ"
+            ]
+          },
+          {
+            "strings": [
+              "О"
+            ]
+          },
+          {
+            "strings": [
+              "П"
+            ]
+          },
+          {
+            "strings": [
+              "Ш"
+            ]
+          }
         ],
         [
-          [
-            "А"
-          ],
-          [
-            "С"
-          ],
-          [
-            "Д"
-          ],
-          [
-            "Ф"
-          ],
-          [
-            "Г"
-          ],
-          [
-            "Х"
-          ],
-          [
-            "Ј"
-          ],
-          [
-            "К"
-          ],
-          [
-            "Л"
-          ],
-          [
-            "Ч"
-          ],
-          [
-            "Ќ"
-          ]
+          {
+            "strings": [
+              "А"
+            ]
+          },
+          {
+            "strings": [
+              "С"
+            ]
+          },
+          {
+            "strings": [
+              "Д"
+            ]
+          },
+          {
+            "strings": [
+              "Ф"
+            ]
+          },
+          {
+            "strings": [
+              "Г"
+            ]
+          },
+          {
+            "strings": [
+              "Х"
+            ]
+          },
+          {
+            "strings": [
+              "Ј"
+            ]
+          },
+          {
+            "strings": [
+              "К"
+            ]
+          },
+          {
+            "strings": [
+              "Л"
+            ]
+          },
+          {
+            "strings": [
+              "Ч"
+            ]
+          },
+          {
+            "strings": [
+              "Ќ"
+            ]
+          }
         ],
         [
-          [
-            "З"
-          ],
-          [
-            "Џ"
-          ],
-          [
-            "Ц"
-          ],
-          [
-            "В"
-          ],
-          [
-            "Б"
-          ],
-          [
-            "Н"
-          ],
-          [
-            "М"
-          ],
-          [
-            "Ѓ"
-          ],
-          [
-            "Ж"
-          ]
+          {
+            "strings": [
+              "З"
+            ]
+          },
+          {
+            "strings": [
+              "Џ"
+            ]
+          },
+          {
+            "strings": [
+              "Ц"
+            ]
+          },
+          {
+            "strings": [
+              "В"
+            ]
+          },
+          {
+            "strings": [
+              "Б"
+            ]
+          },
+          {
+            "strings": [
+              "Н"
+            ]
+          },
+          {
+            "strings": [
+              "М"
+            ]
+          },
+          {
+            "strings": [
+              "Ѓ"
+            ]
+          },
+          {
+            "strings": [
+              "Ж"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -257,151 +393,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -410,128 +608,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/mn.json b/data/osk-layouts/mn.json
index 88eaa245ff..7911102b73 100644
--- a/data/osk-layouts/mn.json
+++ b/data/osk-layouts/mn.json
@@ -5,126 +5,194 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "ф"
-          ],
-          [
-            "ц"
-          ],
-          [
-            "у"
-          ],
-          [
-            "ж"
-          ],
-          [
-            "э"
-          ],
-          [
-            "н"
-          ],
-          [
-            "г"
-          ],
-          [
-            "ш",
-            "щ"
-          ],
-          [
-            "ү"
-          ],
-          [
-            "з"
-          ],
-          [
-            "к"
-          ]
+          {
+            "strings": [
+              "ф"
+            ]
+          },
+          {
+            "strings": [
+              "ц"
+            ]
+          },
+          {
+            "strings": [
+              "у"
+            ]
+          },
+          {
+            "strings": [
+              "ж"
+            ]
+          },
+          {
+            "strings": [
+              "э"
+            ]
+          },
+          {
+            "strings": [
+              "н"
+            ]
+          },
+          {
+            "strings": [
+              "г"
+            ]
+          },
+          {
+            "strings": [
+              "ш",
+              "щ"
+            ]
+          },
+          {
+            "strings": [
+              "ү"
+            ]
+          },
+          {
+            "strings": [
+              "з"
+            ]
+          },
+          {
+            "strings": [
+              "к"
+            ]
+          }
         ],
         [
-          [
-            "й"
-          ],
-          [
-            "ы"
-          ],
-          [
-            "б"
-          ],
-          [
-            "ө"
-          ],
-          [
-            "а"
-          ],
-          [
-            "х"
-          ],
-          [
-            "р"
-          ],
-          [
-            "о"
-          ],
-          [
-            "л"
-          ],
-          [
-            "д"
-          ],
-          [
-            "п"
-          ]
+          {
+            "strings": [
+              "й"
+            ]
+          },
+          {
+            "strings": [
+              "ы"
+            ]
+          },
+          {
+            "strings": [
+              "б"
+            ]
+          },
+          {
+            "strings": [
+              "ө"
+            ]
+          },
+          {
+            "strings": [
+              "а"
+            ]
+          },
+          {
+            "strings": [
+              "х"
+            ]
+          },
+          {
+            "strings": [
+              "р"
+            ]
+          },
+          {
+            "strings": [
+              "о"
+            ]
+          },
+          {
+            "strings": [
+              "л"
+            ]
+          },
+          {
+            "strings": [
+              "д"
+            ]
+          },
+          {
+            "strings": [
+              "п"
+            ]
+          }
         ],
         [
-          [
-            "я"
-          ],
-          [
-            "ч"
-          ],
-          [
-            "ё",
-            "е"
-          ],
-          [
-            "с"
-          ],
-          [
-            "м"
-          ],
-          [
-            "и"
-          ],
-          [
-            "т"
-          ],
-          [
-            "ь",
-            "ъ"
-          ],
-          [
-            "в",
-            "ю"
-          ]
+          {
+            "strings": [
+              "я"
+            ]
+          },
+          {
+            "strings": [
+              "ч"
+            ]
+          },
+          {
+            "strings": [
+              "ё",
+              "е"
+            ]
+          },
+          {
+            "strings": [
+              "с"
+            ]
+          },
+          {
+            "strings": [
+              "м"
+            ]
+          },
+          {
+            "strings": [
+              "и"
+            ]
+          },
+          {
+            "strings": [
+              "т"
+            ]
+          },
+          {
+            "strings": [
+              "ь",
+              "ъ"
+            ]
+          },
+          {
+            "strings": [
+              "в",
+              "ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -133,126 +201,194 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Ф"
-          ],
-          [
-            "Ц"
-          ],
-          [
-            "У"
-          ],
-          [
-            "Ж"
-          ],
-          [
-            "Э"
-          ],
-          [
-            "Н"
-          ],
-          [
-            "Г"
-          ],
-          [
-            "Ш",
-            "Щ"
-          ],
-          [
-            "Ү"
-          ],
-          [
-            "З"
-          ],
-          [
-            "К"
-          ]
+          {
+            "strings": [
+              "Ф"
+            ]
+          },
+          {
+            "strings": [
+              "Ц"
+            ]
+          },
+          {
+            "strings": [
+              "У"
+            ]
+          },
+          {
+            "strings": [
+              "Ж"
+            ]
+          },
+          {
+            "strings": [
+              "Э"
+            ]
+          },
+          {
+            "strings": [
+              "Н"
+            ]
+          },
+          {
+            "strings": [
+              "Г"
+            ]
+          },
+          {
+            "strings": [
+              "Ш",
+              "Щ"
+            ]
+          },
+          {
+            "strings": [
+              "Ү"
+            ]
+          },
+          {
+            "strings": [
+              "З"
+            ]
+          },
+          {
+            "strings": [
+              "К"
+            ]
+          }
         ],
         [
-          [
-            "Й"
-          ],
-          [
-            "Ы"
-          ],
-          [
-            "Б"
-          ],
-          [
-            "Ө"
-          ],
-          [
-            "А"
-          ],
-          [
-            "Х"
-          ],
-          [
-            "Р"
-          ],
-          [
-            "О"
-          ],
-          [
-            "Л"
-          ],
-          [
-            "Д"
-          ],
-          [
-            "П"
-          ]
+          {
+            "strings": [
+              "Й"
+            ]
+          },
+          {
+            "strings": [
+              "Ы"
+            ]
+          },
+          {
+            "strings": [
+              "Б"
+            ]
+          },
+          {
+            "strings": [
+              "Ө"
+            ]
+          },
+          {
+            "strings": [
+              "А"
+            ]
+          },
+          {
+            "strings": [
+              "Х"
+            ]
+          },
+          {
+            "strings": [
+              "Р"
+            ]
+          },
+          {
+            "strings": [
+              "О"
+            ]
+          },
+          {
+            "strings": [
+              "Л"
+            ]
+          },
+          {
+            "strings": [
+              "Д"
+            ]
+          },
+          {
+            "strings": [
+              "П"
+            ]
+          }
         ],
         [
-          [
-            "Я"
-          ],
-          [
-            "Ч"
-          ],
-          [
-            "Ё",
-            "Е"
-          ],
-          [
-            "С"
-          ],
-          [
-            "М"
-          ],
-          [
-            "И"
-          ],
-          [
-            "Т"
-          ],
-          [
-            "Ь",
-            "Ъ"
-          ],
-          [
-            "В",
-            "Ю"
-          ]
+          {
+            "strings": [
+              "Я"
+            ]
+          },
+          {
+            "strings": [
+              "Ч"
+            ]
+          },
+          {
+            "strings": [
+              "Ё",
+              "Е"
+            ]
+          },
+          {
+            "strings": [
+              "С"
+            ]
+          },
+          {
+            "strings": [
+              "М"
+            ]
+          },
+          {
+            "strings": [
+              "И"
+            ]
+          },
+          {
+            "strings": [
+              "Т"
+            ]
+          },
+          {
+            "strings": [
+              "Ь",
+              "Ъ"
+            ]
+          },
+          {
+            "strings": [
+              "В",
+              "Ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -261,152 +397,214 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "₮",
-            "$",
-            "¢",
-            "€",
-            "£",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "₮",
+              "$",
+              "¢",
+              "€",
+              "£",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -415,129 +613,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "€"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/my.json b/data/osk-layouts/my.json
index dfd5e09033..d94d7c4b91 100644
--- a/data/osk-layouts/my.json
+++ b/data/osk-layouts/my.json
@@ -5,107 +5,165 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -114,107 +172,165 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -223,151 +339,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -376,128 +554,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/nl.json b/data/osk-layouts/nl.json
index 7a630b49bb..f886df8d09 100644
--- a/data/osk-layouts/nl.json
+++ b/data/osk-layouts/nl.json
@@ -5,145 +5,203 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "ë",
-            "ê",
-            "è",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y",
-            "ij"
-          ],
-          [
-            "u",
-            "ú",
-            "ü",
-            "û",
-            "ù",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "ï",
-            "ì",
-            "î",
-            "į",
-            "ī",
-            "ij"
-          ],
-          [
-            "o",
-            "ó",
-            "ö",
-            "ô",
-            "ò",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "ë",
+              "ê",
+              "è",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ij"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ü",
+              "û",
+              "ù",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ï",
+              "ì",
+              "î",
+              "į",
+              "ī",
+              "ij"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ö",
+              "ô",
+              "ò",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "ä",
-            "â",
-            "à",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "ä",
+              "â",
+              "à",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -152,145 +210,203 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "Ë",
-            "Ê",
-            "È",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y",
-            "IJ"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ü",
-            "Û",
-            "Ù",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Ï",
-            "Ì",
-            "Î",
-            "Į",
-            "Ī",
-            "IJ"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ö",
-            "Ô",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "Ë",
+              "Ê",
+              "È",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "IJ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ü",
+              "Û",
+              "Ù",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ï",
+              "Ì",
+              "Î",
+              "Į",
+              "Ī",
+              "IJ"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ö",
+              "Ô",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "Ä",
-            "Â",
-            "À",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "Ä",
+              "Â",
+              "À",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -299,151 +415,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -452,129 +630,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/no.json b/data/osk-layouts/no.json
index a70be9ca00..b9bcdd1393 100644
--- a/data/osk-layouts/no.json
+++ b/data/osk-layouts/no.json
@@ -5,148 +5,212 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "ë"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y",
-            "ý",
-            "ÿ"
-          ],
-          [
-            "u",
-            "ú",
-            "ü",
-            "û",
-            "ù",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "ï"
-          ],
-          [
-            "o",
-            "ó",
-            "ô",
-            "ò",
-            "õ",
-            "œ",
-            "ō"
-          ],
-          [
-            "p"
-          ],
-          [
-            "å"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "ë"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ý",
+              "ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ü",
+              "û",
+              "ù",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ï"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ô",
+              "ò",
+              "õ",
+              "œ",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          },
+          {
+            "strings": [
+              "å"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "ä",
-            "à",
-            "â",
-            "ã",
-            "ā"
-          ],
-          [
-            "s",
-            "ß",
-            "ś",
-            "š"
-          ],
-          [
-            "d",
-            "ð"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l",
-            "ł"
-          ],
-          [
-            "ø",
-            "ö"
-          ],
-          [
-            "æ",
-            "ä"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "ä",
+              "à",
+              "â",
+              "ã",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß",
+              "ś",
+              "š"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "ð"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l",
+              "ł"
+            ]
+          },
+          {
+            "strings": [
+              "ø",
+              "ö"
+            ]
+          },
+          {
+            "strings": [
+              "æ",
+              "ä"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -155,148 +219,212 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "Ë"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y",
-            "Ý",
-            "Ÿ"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ü",
-            "Û",
-            "Ù",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Ï"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ô",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ō"
-          ],
-          [
-            "P"
-          ],
-          [
-            "Å"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "Ë"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ý",
+              "Ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ü",
+              "Û",
+              "Ù",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ï"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ô",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          },
+          {
+            "strings": [
+              "Å"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "Ä",
-            "À",
-            "Â",
-            "Ã",
-            "Ā"
-          ],
-          [
-            "S",
-            "SS",
-            "Ś",
-            "Š"
-          ],
-          [
-            "D",
-            "Ð"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L",
-            "Ł"
-          ],
-          [
-            "Ø",
-            "Ö"
-          ],
-          [
-            "Æ",
-            "Ä"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "Ä",
+              "À",
+              "Â",
+              "Ã",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "SS",
+              "Ś",
+              "Š"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Ð"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L",
+              "Ł"
+            ]
+          },
+          {
+            "strings": [
+              "Ø",
+              "Ö"
+            ]
+          },
+          {
+            "strings": [
+              "Æ",
+              "Ä"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -305,151 +433,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -458,129 +648,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ph.json b/data/osk-layouts/ph.json
index 8d127b582e..aa348c7a93 100644
--- a/data/osk-layouts/ph.json
+++ b/data/osk-layouts/ph.json
@@ -5,107 +5,165 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -114,107 +172,165 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -223,151 +339,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -376,128 +554,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/pl.json b/data/osk-layouts/pl.json
index 4b08cd5d38..7910c02316 100644
--- a/data/osk-layouts/pl.json
+++ b/data/osk-layouts/pl.json
@@ -5,143 +5,201 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "ę",
-            "è",
-            "é",
-            "ê",
-            "ë",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o",
-            "ó",
-            "ö",
-            "ô",
-            "ò",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "ę",
+              "è",
+              "é",
+              "ê",
+              "ë",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ö",
+              "ô",
+              "ò",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "ą",
-            "á",
-            "à",
-            "â",
-            "ä",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s",
-            "ś",
-            "ß",
-            "š"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l",
-            "ł"
-          ]
+          {
+            "strings": [
+              "a",
+              "ą",
+              "á",
+              "à",
+              "â",
+              "ä",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ś",
+              "ß",
+              "š"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l",
+              "ł"
+            ]
+          }
         ],
         [
-          [
-            "z",
-            "ż",
-            "ź",
-            "ž"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ć",
-            "ç",
-            "č"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ń",
-            "ñ"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z",
+              "ż",
+              "ź",
+              "ž"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ć",
+              "ç",
+              "č"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ń",
+              "ñ"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -150,143 +208,201 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "Ę",
-            "È",
-            "É",
-            "Ê",
-            "Ë",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ö",
-            "Ô",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "Ę",
+              "È",
+              "É",
+              "Ê",
+              "Ë",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ö",
+              "Ô",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Ą",
-            "Á",
-            "À",
-            "Â",
-            "Ä",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S",
-            "Ś",
-            "SS",
-            "Š"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L",
-            "Ł"
-          ]
+          {
+            "strings": [
+              "A",
+              "Ą",
+              "Á",
+              "À",
+              "Â",
+              "Ä",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Ś",
+              "SS",
+              "Š"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L",
+              "Ł"
+            ]
+          }
         ],
         [
-          [
-            "Z",
-            "Ż",
-            "Ź",
-            "Ž"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ć",
-            "Ç",
-            "Č"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ń",
-            "Ñ"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z",
+              "Ż",
+              "Ź",
+              "Ž"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ć",
+              "Ç",
+              "Č"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ń",
+              "Ñ"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -295,151 +411,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -448,128 +626,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/pt.json b/data/osk-layouts/pt.json
index efd857aea4..a580a32651 100644
--- a/data/osk-layouts/pt.json
+++ b/data/osk-layouts/pt.json
@@ -5,145 +5,203 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "ê",
-            "è",
-            "ę",
-            "ė",
-            "ē",
-            "ë"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u",
-            "ú",
-            "ü",
-            "ù",
-            "û",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "î",
-            "ì",
-            "ï",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ó",
-            "õ",
-            "ô",
-            "ò",
-            "ö",
-            "œ",
-            "ø",
-            "ō",
-            "º"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "ê",
+              "è",
+              "ę",
+              "ė",
+              "ē",
+              "ë"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ü",
+              "ù",
+              "û",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "î",
+              "ì",
+              "ï",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "õ",
+              "ô",
+              "ò",
+              "ö",
+              "œ",
+              "ø",
+              "ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "ã",
-            "à",
-            "â",
-            "ä",
-            "å",
-            "æ",
-            "ª"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "ã",
+              "à",
+              "â",
+              "ä",
+              "å",
+              "æ",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç",
-            "č",
-            "ć"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç",
+              "č",
+              "ć"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -152,145 +210,203 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "Ê",
-            "È",
-            "Ę",
-            "Ė",
-            "Ē",
-            "Ë"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ü",
-            "Ù",
-            "Û",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Î",
-            "Ì",
-            "Ï",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ó",
-            "Õ",
-            "Ô",
-            "Ò",
-            "Ö",
-            "Œ",
-            "Ø",
-            "Ō",
-            "º"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "Ê",
+              "È",
+              "Ę",
+              "Ė",
+              "Ē",
+              "Ë"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ü",
+              "Ù",
+              "Û",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Î",
+              "Ì",
+              "Ï",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Õ",
+              "Ô",
+              "Ò",
+              "Ö",
+              "Œ",
+              "Ø",
+              "Ō",
+              "º"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "Ã",
-            "À",
-            "Â",
-            "Ä",
-            "Å",
-            "Æ",
-            "ª"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "Ã",
+              "À",
+              "Â",
+              "Ä",
+              "Å",
+              "Æ",
+              "ª"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç",
-            "Č",
-            "Ć"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç",
+              "Č",
+              "Ć"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -299,151 +415,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -452,129 +630,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ro.json b/data/osk-layouts/ro.json
index c690f4ecd3..156c355c58 100644
--- a/data/osk-layouts/ro.json
+++ b/data/osk-layouts/ro.json
@@ -5,127 +5,185 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t",
-            "ț"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u"
-          ],
-          [
-            "i",
-            "î",
-            "ï",
-            "ì",
-            "í",
-            "į",
-            "ī"
-          ],
-          [
-            "o"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t",
+              "ț"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "î",
+              "ï",
+              "ì",
+              "í",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "â",
-            "ã",
-            "ă",
-            "à",
-            "á",
-            "ä",
-            "æ",
-            "å",
-            "ā"
-          ],
-          [
-            "s",
-            "ș",
-            "ß",
-            "ś",
-            "š"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "â",
+              "ã",
+              "ă",
+              "à",
+              "á",
+              "ä",
+              "æ",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ș",
+              "ß",
+              "ś",
+              "š"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -134,127 +192,185 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T",
-            "Ț"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U"
-          ],
-          [
-            "I",
-            "Î",
-            "Ï",
-            "Ì",
-            "Í",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T",
+              "Ț"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Î",
+              "Ï",
+              "Ì",
+              "Í",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Â",
-            "Ã",
-            "Ă",
-            "À",
-            "Á",
-            "Ä",
-            "Æ",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S",
-            "Ș",
-            "SS",
-            "Ś",
-            "Š"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Â",
+              "Ã",
+              "Ă",
+              "À",
+              "Á",
+              "Ä",
+              "Æ",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Ș",
+              "SS",
+              "Ś",
+              "Š"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -263,151 +379,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -416,128 +594,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/rs.json b/data/osk-layouts/rs.json
index 7bdab9ff1c..a61187df3d 100644
--- a/data/osk-layouts/rs.json
+++ b/data/osk-layouts/rs.json
@@ -5,124 +5,192 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "љ"
-          ],
-          [
-            "њ"
-          ],
-          [
-            "е",
-            "ѐ"
-          ],
-          [
-            "р"
-          ],
-          [
-            "т"
-          ],
-          [
-            "з"
-          ],
-          [
-            "у"
-          ],
-          [
-            "и",
-            "ѝ"
-          ],
-          [
-            "о"
-          ],
-          [
-            "п"
-          ],
-          [
-            "ш"
-          ]
+          {
+            "strings": [
+              "љ"
+            ]
+          },
+          {
+            "strings": [
+              "њ"
+            ]
+          },
+          {
+            "strings": [
+              "е",
+              "ѐ"
+            ]
+          },
+          {
+            "strings": [
+              "р"
+            ]
+          },
+          {
+            "strings": [
+              "т"
+            ]
+          },
+          {
+            "strings": [
+              "з"
+            ]
+          },
+          {
+            "strings": [
+              "у"
+            ]
+          },
+          {
+            "strings": [
+              "и",
+              "ѝ"
+            ]
+          },
+          {
+            "strings": [
+              "о"
+            ]
+          },
+          {
+            "strings": [
+              "п"
+            ]
+          },
+          {
+            "strings": [
+              "ш"
+            ]
+          }
         ],
         [
-          [
-            "а"
-          ],
-          [
-            "с"
-          ],
-          [
-            "д"
-          ],
-          [
-            "ф"
-          ],
-          [
-            "г"
-          ],
-          [
-            "х"
-          ],
-          [
-            "ј"
-          ],
-          [
-            "к"
-          ],
-          [
-            "л"
-          ],
-          [
-            "ч"
-          ],
-          [
-            "ћ"
-          ]
+          {
+            "strings": [
+              "а"
+            ]
+          },
+          {
+            "strings": [
+              "с"
+            ]
+          },
+          {
+            "strings": [
+              "д"
+            ]
+          },
+          {
+            "strings": [
+              "ф"
+            ]
+          },
+          {
+            "strings": [
+              "г"
+            ]
+          },
+          {
+            "strings": [
+              "х"
+            ]
+          },
+          {
+            "strings": [
+              "ј"
+            ]
+          },
+          {
+            "strings": [
+              "к"
+            ]
+          },
+          {
+            "strings": [
+              "л"
+            ]
+          },
+          {
+            "strings": [
+              "ч"
+            ]
+          },
+          {
+            "strings": [
+              "ћ"
+            ]
+          }
         ],
         [
-          [
-            "ѕ"
-          ],
-          [
-            "џ"
-          ],
-          [
-            "ц"
-          ],
-          [
-            "в"
-          ],
-          [
-            "б"
-          ],
-          [
-            "н"
-          ],
-          [
-            "м"
-          ],
-          [
-            "ђ"
-          ],
-          [
-            "ж"
-          ]
+          {
+            "strings": [
+              "ѕ"
+            ]
+          },
+          {
+            "strings": [
+              "џ"
+            ]
+          },
+          {
+            "strings": [
+              "ц"
+            ]
+          },
+          {
+            "strings": [
+              "в"
+            ]
+          },
+          {
+            "strings": [
+              "б"
+            ]
+          },
+          {
+            "strings": [
+              "н"
+            ]
+          },
+          {
+            "strings": [
+              "м"
+            ]
+          },
+          {
+            "strings": [
+              "ђ"
+            ]
+          },
+          {
+            "strings": [
+              "ж"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -131,124 +199,192 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Љ"
-          ],
-          [
-            "Њ"
-          ],
-          [
-            "Е",
-            "Ѐ"
-          ],
-          [
-            "Р"
-          ],
-          [
-            "Т"
-          ],
-          [
-            "З"
-          ],
-          [
-            "У"
-          ],
-          [
-            "И",
-            "Ѝ"
-          ],
-          [
-            "О"
-          ],
-          [
-            "П"
-          ],
-          [
-            "Ш"
-          ]
+          {
+            "strings": [
+              "Љ"
+            ]
+          },
+          {
+            "strings": [
+              "Њ"
+            ]
+          },
+          {
+            "strings": [
+              "Е",
+              "Ѐ"
+            ]
+          },
+          {
+            "strings": [
+              "Р"
+            ]
+          },
+          {
+            "strings": [
+              "Т"
+            ]
+          },
+          {
+            "strings": [
+              "З"
+            ]
+          },
+          {
+            "strings": [
+              "У"
+            ]
+          },
+          {
+            "strings": [
+              "И",
+              "Ѝ"
+            ]
+          },
+          {
+            "strings": [
+              "О"
+            ]
+          },
+          {
+            "strings": [
+              "П"
+            ]
+          },
+          {
+            "strings": [
+              "Ш"
+            ]
+          }
         ],
         [
-          [
-            "А"
-          ],
-          [
-            "С"
-          ],
-          [
-            "Д"
-          ],
-          [
-            "Ф"
-          ],
-          [
-            "Г"
-          ],
-          [
-            "Х"
-          ],
-          [
-            "Ј"
-          ],
-          [
-            "К"
-          ],
-          [
-            "Л"
-          ],
-          [
-            "Ч"
-          ],
-          [
-            "Ћ"
-          ]
+          {
+            "strings": [
+              "А"
+            ]
+          },
+          {
+            "strings": [
+              "С"
+            ]
+          },
+          {
+            "strings": [
+              "Д"
+            ]
+          },
+          {
+            "strings": [
+              "Ф"
+            ]
+          },
+          {
+            "strings": [
+              "Г"
+            ]
+          },
+          {
+            "strings": [
+              "Х"
+            ]
+          },
+          {
+            "strings": [
+              "Ј"
+            ]
+          },
+          {
+            "strings": [
+              "К"
+            ]
+          },
+          {
+            "strings": [
+              "Л"
+            ]
+          },
+          {
+            "strings": [
+              "Ч"
+            ]
+          },
+          {
+            "strings": [
+              "Ћ"
+            ]
+          }
         ],
         [
-          [
-            "Ѕ"
-          ],
-          [
-            "Џ"
-          ],
-          [
-            "Ц"
-          ],
-          [
-            "В"
-          ],
-          [
-            "Б"
-          ],
-          [
-            "Н"
-          ],
-          [
-            "М"
-          ],
-          [
-            "Ђ"
-          ],
-          [
-            "Ж"
-          ]
+          {
+            "strings": [
+              "Ѕ"
+            ]
+          },
+          {
+            "strings": [
+              "Џ"
+            ]
+          },
+          {
+            "strings": [
+              "Ц"
+            ]
+          },
+          {
+            "strings": [
+              "В"
+            ]
+          },
+          {
+            "strings": [
+              "Б"
+            ]
+          },
+          {
+            "strings": [
+              "Н"
+            ]
+          },
+          {
+            "strings": [
+              "М"
+            ]
+          },
+          {
+            "strings": [
+              "Ђ"
+            ]
+          },
+          {
+            "strings": [
+              "Ж"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -257,151 +393,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -410,128 +608,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ru.json b/data/osk-layouts/ru.json
index 9126cb0ce6..2cf0469df3 100644
--- a/data/osk-layouts/ru.json
+++ b/data/osk-layouts/ru.json
@@ -5,124 +5,192 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "й"
-          ],
-          [
-            "ц"
-          ],
-          [
-            "у"
-          ],
-          [
-            "к"
-          ],
-          [
-            "е",
-            "ё"
-          ],
-          [
-            "н"
-          ],
-          [
-            "г"
-          ],
-          [
-            "ш"
-          ],
-          [
-            "щ"
-          ],
-          [
-            "з"
-          ],
-          [
-            "х"
-          ]
+          {
+            "strings": [
+              "й"
+            ]
+          },
+          {
+            "strings": [
+              "ц"
+            ]
+          },
+          {
+            "strings": [
+              "у"
+            ]
+          },
+          {
+            "strings": [
+              "к"
+            ]
+          },
+          {
+            "strings": [
+              "е",
+              "ё"
+            ]
+          },
+          {
+            "strings": [
+              "н"
+            ]
+          },
+          {
+            "strings": [
+              "г"
+            ]
+          },
+          {
+            "strings": [
+              "ш"
+            ]
+          },
+          {
+            "strings": [
+              "щ"
+            ]
+          },
+          {
+            "strings": [
+              "з"
+            ]
+          },
+          {
+            "strings": [
+              "х"
+            ]
+          }
         ],
         [
-          [
-            "ф"
-          ],
-          [
-            "ы"
-          ],
-          [
-            "в"
-          ],
-          [
-            "а"
-          ],
-          [
-            "п"
-          ],
-          [
-            "р"
-          ],
-          [
-            "о"
-          ],
-          [
-            "л"
-          ],
-          [
-            "д"
-          ],
-          [
-            "ж"
-          ],
-          [
-            "э"
-          ]
+          {
+            "strings": [
+              "ф"
+            ]
+          },
+          {
+            "strings": [
+              "ы"
+            ]
+          },
+          {
+            "strings": [
+              "в"
+            ]
+          },
+          {
+            "strings": [
+              "а"
+            ]
+          },
+          {
+            "strings": [
+              "п"
+            ]
+          },
+          {
+            "strings": [
+              "р"
+            ]
+          },
+          {
+            "strings": [
+              "о"
+            ]
+          },
+          {
+            "strings": [
+              "л"
+            ]
+          },
+          {
+            "strings": [
+              "д"
+            ]
+          },
+          {
+            "strings": [
+              "ж"
+            ]
+          },
+          {
+            "strings": [
+              "э"
+            ]
+          }
         ],
         [
-          [
-            "я"
-          ],
-          [
-            "ч"
-          ],
-          [
-            "с"
-          ],
-          [
-            "м"
-          ],
-          [
-            "и"
-          ],
-          [
-            "т"
-          ],
-          [
-            "ь",
-            "ъ"
-          ],
-          [
-            "б"
-          ],
-          [
-            "ю"
-          ]
+          {
+            "strings": [
+              "я"
+            ]
+          },
+          {
+            "strings": [
+              "ч"
+            ]
+          },
+          {
+            "strings": [
+              "с"
+            ]
+          },
+          {
+            "strings": [
+              "м"
+            ]
+          },
+          {
+            "strings": [
+              "и"
+            ]
+          },
+          {
+            "strings": [
+              "т"
+            ]
+          },
+          {
+            "strings": [
+              "ь",
+              "ъ"
+            ]
+          },
+          {
+            "strings": [
+              "б"
+            ]
+          },
+          {
+            "strings": [
+              "ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -131,124 +199,192 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Й"
-          ],
-          [
-            "Ц"
-          ],
-          [
-            "У"
-          ],
-          [
-            "К"
-          ],
-          [
-            "Е",
-            "Ё"
-          ],
-          [
-            "Н"
-          ],
-          [
-            "Г"
-          ],
-          [
-            "Ш"
-          ],
-          [
-            "Щ"
-          ],
-          [
-            "З"
-          ],
-          [
-            "Х"
-          ]
+          {
+            "strings": [
+              "Й"
+            ]
+          },
+          {
+            "strings": [
+              "Ц"
+            ]
+          },
+          {
+            "strings": [
+              "У"
+            ]
+          },
+          {
+            "strings": [
+              "К"
+            ]
+          },
+          {
+            "strings": [
+              "Е",
+              "Ё"
+            ]
+          },
+          {
+            "strings": [
+              "Н"
+            ]
+          },
+          {
+            "strings": [
+              "Г"
+            ]
+          },
+          {
+            "strings": [
+              "Ш"
+            ]
+          },
+          {
+            "strings": [
+              "Щ"
+            ]
+          },
+          {
+            "strings": [
+              "З"
+            ]
+          },
+          {
+            "strings": [
+              "Х"
+            ]
+          }
         ],
         [
-          [
-            "Ф"
-          ],
-          [
-            "Ы"
-          ],
-          [
-            "В"
-          ],
-          [
-            "А"
-          ],
-          [
-            "П"
-          ],
-          [
-            "Р"
-          ],
-          [
-            "О"
-          ],
-          [
-            "Л"
-          ],
-          [
-            "Д"
-          ],
-          [
-            "Ж"
-          ],
-          [
-            "Э"
-          ]
+          {
+            "strings": [
+              "Ф"
+            ]
+          },
+          {
+            "strings": [
+              "Ы"
+            ]
+          },
+          {
+            "strings": [
+              "В"
+            ]
+          },
+          {
+            "strings": [
+              "А"
+            ]
+          },
+          {
+            "strings": [
+              "П"
+            ]
+          },
+          {
+            "strings": [
+              "Р"
+            ]
+          },
+          {
+            "strings": [
+              "О"
+            ]
+          },
+          {
+            "strings": [
+              "Л"
+            ]
+          },
+          {
+            "strings": [
+              "Д"
+            ]
+          },
+          {
+            "strings": [
+              "Ж"
+            ]
+          },
+          {
+            "strings": [
+              "Э"
+            ]
+          }
         ],
         [
-          [
-            "Я"
-          ],
-          [
-            "Ч"
-          ],
-          [
-            "С"
-          ],
-          [
-            "М"
-          ],
-          [
-            "И"
-          ],
-          [
-            "Т"
-          ],
-          [
-            "Ь",
-            "Ъ"
-          ],
-          [
-            "Б"
-          ],
-          [
-            "Ю"
-          ]
+          {
+            "strings": [
+              "Я"
+            ]
+          },
+          {
+            "strings": [
+              "Ч"
+            ]
+          },
+          {
+            "strings": [
+              "С"
+            ]
+          },
+          {
+            "strings": [
+              "М"
+            ]
+          },
+          {
+            "strings": [
+              "И"
+            ]
+          },
+          {
+            "strings": [
+              "Т"
+            ]
+          },
+          {
+            "strings": [
+              "Ь",
+              "Ъ"
+            ]
+          },
+          {
+            "strings": [
+              "Б"
+            ]
+          },
+          {
+            "strings": [
+              "Ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -257,151 +393,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -410,128 +608,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/se.json b/data/osk-layouts/se.json
index 513a0b8971..cc24b1439f 100644
--- a/data/osk-layouts/se.json
+++ b/data/osk-layouts/se.json
@@ -5,165 +5,229 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ê",
-            "ë",
-            "ę"
-          ],
-          [
-            "r",
-            "ř"
-          ],
-          [
-            "t",
-            "ť",
-            "þ"
-          ],
-          [
-            "y",
-            "ý",
-            "ÿ",
-            "ü"
-          ],
-          [
-            "u",
-            "ü",
-            "ú",
-            "ù",
-            "û",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "ì",
-            "î",
-            "ï"
-          ],
-          [
-            "o",
-            "ó",
-            "ò",
-            "ô",
-            "õ",
-            "ō"
-          ],
-          [
-            "p"
-          ],
-          [
-            "å"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ê",
+              "ë",
+              "ę"
+            ]
+          },
+          {
+            "strings": [
+              "r",
+              "ř"
+            ]
+          },
+          {
+            "strings": [
+              "t",
+              "ť",
+              "þ"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ý",
+              "ÿ",
+              "ü"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ü",
+              "ú",
+              "ù",
+              "û",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ì",
+              "î",
+              "ï"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ò",
+              "ô",
+              "õ",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          },
+          {
+            "strings": [
+              "å"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "à",
-            "â",
-            "ą",
-            "ã"
-          ],
-          [
-            "s",
-            "ś",
-            "š",
-            "ş",
-            "ß"
-          ],
-          [
-            "d",
-            "ð",
-            "ď"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l",
-            "ł"
-          ],
-          [
-            "ö",
-            "ø",
-            "œ"
-          ],
-          [
-            "ä",
-            "æ"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "à",
+              "â",
+              "ą",
+              "ã"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ś",
+              "š",
+              "ş",
+              "ß"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "ð",
+              "ď"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l",
+              "ł"
+            ]
+          },
+          {
+            "strings": [
+              "ö",
+              "ø",
+              "œ"
+            ]
+          },
+          {
+            "strings": [
+              "ä",
+              "æ"
+            ]
+          }
         ],
         [
-          [
-            "z",
-            "ź",
-            "ž",
-            "ż"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç",
-            "ć",
-            "č"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ń",
-            "ñ",
-            "ň"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z",
+              "ź",
+              "ž",
+              "ż"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç",
+              "ć",
+              "č"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ń",
+              "ñ",
+              "ň"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -172,165 +236,229 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ê",
-            "Ë",
-            "Ę"
-          ],
-          [
-            "R",
-            "Ř"
-          ],
-          [
-            "T",
-            "Ť",
-            "Þ"
-          ],
-          [
-            "Y",
-            "Ý",
-            "Ÿ",
-            "Ü"
-          ],
-          [
-            "U",
-            "Ü",
-            "Ú",
-            "Ù",
-            "Û",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Ì",
-            "Î",
-            "Ï"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ò",
-            "Ô",
-            "Õ",
-            "Ō"
-          ],
-          [
-            "P"
-          ],
-          [
-            "Å"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ê",
+              "Ë",
+              "Ę"
+            ]
+          },
+          {
+            "strings": [
+              "R",
+              "Ř"
+            ]
+          },
+          {
+            "strings": [
+              "T",
+              "Ť",
+              "Þ"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ý",
+              "Ÿ",
+              "Ü"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ü",
+              "Ú",
+              "Ù",
+              "Û",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ì",
+              "Î",
+              "Ï"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ò",
+              "Ô",
+              "Õ",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          },
+          {
+            "strings": [
+              "Å"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "À",
-            "Â",
-            "Ą",
-            "Ã"
-          ],
-          [
-            "S",
-            "Ś",
-            "Š",
-            "Ş",
-            "SS"
-          ],
-          [
-            "D",
-            "Ð",
-            "Ď"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L",
-            "Ł"
-          ],
-          [
-            "Ö",
-            "Ø",
-            "Œ"
-          ],
-          [
-            "Ä",
-            "Æ"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "À",
+              "Â",
+              "Ą",
+              "Ã"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Ś",
+              "Š",
+              "Ş",
+              "SS"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Ð",
+              "Ď"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L",
+              "Ł"
+            ]
+          },
+          {
+            "strings": [
+              "Ö",
+              "Ø",
+              "Œ"
+            ]
+          },
+          {
+            "strings": [
+              "Ä",
+              "Æ"
+            ]
+          }
         ],
         [
-          [
-            "Z",
-            "Ź",
-            "Ž",
-            "Ż"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç",
-            "Ć",
-            "Č"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ń",
-            "Ñ",
-            "Ň"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z",
+              "Ź",
+              "Ž",
+              "Ż"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç",
+              "Ć",
+              "Č"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ń",
+              "Ñ",
+              "Ň"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -339,151 +467,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -492,129 +682,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/si.json b/data/osk-layouts/si.json
index f5c99c0476..dfaf2d6848 100644
--- a/data/osk-layouts/si.json
+++ b/data/osk-layouts/si.json
@@ -5,112 +5,170 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u"
-          ],
-          [
-            "i"
-          ],
-          [
-            "o"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u"
+            ]
+          },
+          {
+            "strings": [
+              "i"
+            ]
+          },
+          {
+            "strings": [
+              "o"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a"
-          ],
-          [
-            "s",
-            "š"
-          ],
-          [
-            "d",
-            "đ"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "š"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "đ"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z",
-            "ž"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "č",
-            "ć"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z",
+              "ž"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "č",
+              "ć"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -119,112 +177,170 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U"
-          ],
-          [
-            "I"
-          ],
-          [
-            "O"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U"
+            ]
+          },
+          {
+            "strings": [
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A"
-          ],
-          [
-            "S",
-            "Š"
-          ],
-          [
-            "D",
-            "Đ"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Š"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Đ"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z",
-            "Ž"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Č",
-            "Ć"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z",
+              "Ž"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Č",
+              "Ć"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -233,151 +349,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -386,129 +564,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/sk.json b/data/osk-layouts/sk.json
index 678232b825..a6f9075d36 100644
--- a/data/osk-layouts/sk.json
+++ b/data/osk-layouts/sk.json
@@ -5,177 +5,235 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "ě",
-            "ē",
-            "ė",
-            "è",
-            "ê",
-            "ë",
-            "ę"
-          ],
-          [
-            "r",
-            "ŕ",
-            "ř",
-            "ŗ"
-          ],
-          [
-            "t",
-            "ť",
-            "ţ"
-          ],
-          [
-            "y",
-            "ý",
-            "ÿ"
-          ],
-          [
-            "u",
-            "ú",
-            "ů",
-            "ü",
-            "ū",
-            "ų",
-            "ù",
-            "û",
-            "ű"
-          ],
-          [
-            "i",
-            "í",
-            "ī",
-            "į",
-            "ì",
-            "î",
-            "ï",
-            "ı"
-          ],
-          [
-            "o",
-            "ô",
-            "ó",
-            "ö",
-            "ò",
-            "õ",
-            "œ",
-            "ő",
-            "ø"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "ě",
+              "ē",
+              "ė",
+              "è",
+              "ê",
+              "ë",
+              "ę"
+            ]
+          },
+          {
+            "strings": [
+              "r",
+              "ŕ",
+              "ř",
+              "ŗ"
+            ]
+          },
+          {
+            "strings": [
+              "t",
+              "ť",
+              "ţ"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ý",
+              "ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "ů",
+              "ü",
+              "ū",
+              "ų",
+              "ù",
+              "û",
+              "ű"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ī",
+              "į",
+              "ì",
+              "î",
+              "ï",
+              "ı"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ô",
+              "ó",
+              "ö",
+              "ò",
+              "õ",
+              "œ",
+              "ő",
+              "ø"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "ä",
-            "ā",
-            "à",
-            "â",
-            "ã",
-            "å",
-            "æ",
-            "ą"
-          ],
-          [
-            "s",
-            "š",
-            "ß",
-            "ś",
-            "ş"
-          ],
-          [
-            "d",
-            "ď"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g",
-            "ģ",
-            "ğ"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k",
-            "ķ"
-          ],
-          [
-            "l",
-            "ľ",
-            "ĺ",
-            "ļ",
-            "ł"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "ä",
+              "ā",
+              "à",
+              "â",
+              "ã",
+              "å",
+              "æ",
+              "ą"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "š",
+              "ß",
+              "ś",
+              "ş"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "ď"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g",
+              "ģ",
+              "ğ"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k",
+              "ķ"
+            ]
+          },
+          {
+            "strings": [
+              "l",
+              "ľ",
+              "ĺ",
+              "ļ",
+              "ł"
+            ]
+          }
         ],
         [
-          [
-            "z",
-            "ž",
-            "ż",
-            "ź"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "č",
-            "ç",
-            "ć"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ň",
-            "ņ",
-            "ñ",
-            "ń",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z",
+              "ž",
+              "ż",
+              "ź"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "č",
+              "ç",
+              "ć"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ň",
+              "ņ",
+              "ñ",
+              "ń",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -184,177 +242,235 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "Ě",
-            "Ē",
-            "Ė",
-            "È",
-            "Ê",
-            "Ë",
-            "Ę"
-          ],
-          [
-            "R",
-            "Ŕ",
-            "Ř",
-            "Ŗ"
-          ],
-          [
-            "T",
-            "Ť",
-            "Ţ"
-          ],
-          [
-            "Y",
-            "Ý",
-            "Ÿ"
-          ],
-          [
-            "U",
-            "Ú",
-            "Ů",
-            "Ü",
-            "Ū",
-            "Ų",
-            "Ù",
-            "Û",
-            "Ű"
-          ],
-          [
-            "I",
-            "Í",
-            "Ī",
-            "Į",
-            "Ì",
-            "Î",
-            "Ï",
-            "I"
-          ],
-          [
-            "O",
-            "Ô",
-            "Ó",
-            "Ö",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ő",
-            "Ø"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "Ě",
+              "Ē",
+              "Ė",
+              "È",
+              "Ê",
+              "Ë",
+              "Ę"
+            ]
+          },
+          {
+            "strings": [
+              "R",
+              "Ŕ",
+              "Ř",
+              "Ŗ"
+            ]
+          },
+          {
+            "strings": [
+              "T",
+              "Ť",
+              "Ţ"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ý",
+              "Ÿ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Ů",
+              "Ü",
+              "Ū",
+              "Ų",
+              "Ù",
+              "Û",
+              "Ű"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ī",
+              "Į",
+              "Ì",
+              "Î",
+              "Ï",
+              "I"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ô",
+              "Ó",
+              "Ö",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ő",
+              "Ø"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "Ä",
-            "Ā",
-            "À",
-            "Â",
-            "Ã",
-            "Å",
-            "Æ",
-            "Ą"
-          ],
-          [
-            "S",
-            "Š",
-            "SS",
-            "Ś",
-            "Ş"
-          ],
-          [
-            "D",
-            "Ď"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G",
-            "Ģ",
-            "Ğ"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K",
-            "Ķ"
-          ],
-          [
-            "L",
-            "Ľ",
-            "Ĺ",
-            "Ļ",
-            "Ł"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "Ä",
+              "Ā",
+              "À",
+              "Â",
+              "Ã",
+              "Å",
+              "Æ",
+              "Ą"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Š",
+              "SS",
+              "Ś",
+              "Ş"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Ď"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G",
+              "Ģ",
+              "Ğ"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K",
+              "Ķ"
+            ]
+          },
+          {
+            "strings": [
+              "L",
+              "Ľ",
+              "Ĺ",
+              "Ļ",
+              "Ł"
+            ]
+          }
         ],
         [
-          [
-            "Z",
-            "Ž",
-            "Ż",
-            "Ź"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Č",
-            "Ç",
-            "Ć"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ň",
-            "Ņ",
-            "Ñ",
-            "Ń",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z",
+              "Ž",
+              "Ż",
+              "Ź"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Č",
+              "Ç",
+              "Ć"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ň",
+              "Ņ",
+              "Ñ",
+              "Ń",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -363,151 +479,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -516,129 +694,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/th.json b/data/osk-layouts/th.json
index 474e627bf6..9ab336cca6 100644
--- a/data/osk-layouts/th.json
+++ b/data/osk-layouts/th.json
@@ -5,183 +5,281 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "ๅ"
-          ],
-          [
-            "/",
-            "๑"
-          ],
-          [
-            "_",
-            "๒"
-          ],
-          [
-            "ภ",
-            "๓"
-          ],
-          [
-            "ถ",
-            "๔"
-          ],
-          [
-            "ุ"
-          ],
-          [
-            "ึ"
-          ],
-          [
-            "ค",
-            "๕"
-          ],
-          [
-            "ต",
-            "๖"
-          ],
-          [
-            "จ",
-            "๗"
-          ],
-          [
-            "ข",
-            "๘"
-          ],
-          [
-            "ช",
-            "๙"
-          ]
+          {
+            "strings": [
+              "ๅ"
+            ]
+          },
+          {
+            "strings": [
+              "/",
+              "๑"
+            ]
+          },
+          {
+            "strings": [
+              "_",
+              "๒"
+            ]
+          },
+          {
+            "strings": [
+              "ภ",
+              "๓"
+            ]
+          },
+          {
+            "strings": [
+              "ถ",
+              "๔"
+            ]
+          },
+          {
+            "strings": [
+              "ุ"
+            ]
+          },
+          {
+            "strings": [
+              "ึ"
+            ]
+          },
+          {
+            "strings": [
+              "ค",
+              "๕"
+            ]
+          },
+          {
+            "strings": [
+              "ต",
+              "๖"
+            ]
+          },
+          {
+            "strings": [
+              "จ",
+              "๗"
+            ]
+          },
+          {
+            "strings": [
+              "ข",
+              "๘"
+            ]
+          },
+          {
+            "strings": [
+              "ช",
+              "๙"
+            ]
+          }
         ],
         [
-          [
-            "ๆ",
-            "๐"
-          ],
-          [
-            "ไ"
-          ],
-          [
-            "ำ"
-          ],
-          [
-            "พ"
-          ],
-          [
-            "ะ"
-          ],
-          [
-            "ั"
-          ],
-          [
-            "ี"
-          ],
-          [
-            "ร"
-          ],
-          [
-            "น"
-          ],
-          [
-            "ย"
-          ],
-          [
-            "บ"
-          ],
-          [
-            "ล"
-          ]
+          {
+            "strings": [
+              "ๆ",
+              "๐"
+            ]
+          },
+          {
+            "strings": [
+              "ไ"
+            ]
+          },
+          {
+            "strings": [
+              "ำ"
+            ]
+          },
+          {
+            "strings": [
+              "พ"
+            ]
+          },
+          {
+            "strings": [
+              "ะ"
+            ]
+          },
+          {
+            "strings": [
+              "ั"
+            ]
+          },
+          {
+            "strings": [
+              "ี"
+            ]
+          },
+          {
+            "strings": [
+              "ร"
+            ]
+          },
+          {
+            "strings": [
+              "น"
+            ]
+          },
+          {
+            "strings": [
+              "ย"
+            ]
+          },
+          {
+            "strings": [
+              "บ"
+            ]
+          },
+          {
+            "strings": [
+              "ล"
+            ]
+          }
         ],
         [
-          [
-            "ฟ"
-          ],
-          [
-            "ห"
-          ],
-          [
-            "ก"
-          ],
-          [
-            "ด"
-          ],
-          [
-            "เ"
-          ],
-          [
-            "้"
-          ],
-          [
-            "่"
-          ],
-          [
-            "า"
-          ],
-          [
-            "ส"
-          ],
-          [
-            "ว"
-          ],
-          [
-            "ง"
-          ],
-          [
-            "ฃ"
-          ]
+          {
+            "strings": [
+              "ฟ"
+            ]
+          },
+          {
+            "strings": [
+              "ห"
+            ]
+          },
+          {
+            "strings": [
+              "ก"
+            ]
+          },
+          {
+            "strings": [
+              "ด"
+            ]
+          },
+          {
+            "strings": [
+              "เ"
+            ]
+          },
+          {
+            "strings": [
+              "้"
+            ]
+          },
+          {
+            "strings": [
+              "่"
+            ]
+          },
+          {
+            "strings": [
+              "า"
+            ]
+          },
+          {
+            "strings": [
+              "ส"
+            ]
+          },
+          {
+            "strings": [
+              "ว"
+            ]
+          },
+          {
+            "strings": [
+              "ง"
+            ]
+          },
+          {
+            "strings": [
+              "ฃ"
+            ]
+          }
         ],
         [
-          [
-            "ผ"
-          ],
-          [
-            "ป"
-          ],
-          [
-            "แ"
-          ],
-          [
-            "อ"
-          ],
-          [
-            "ิ"
-          ],
-          [
-            "ื"
-          ],
-          [
-            "ท"
-          ],
-          [
-            "ม"
-          ],
-          [
-            "ใ"
-          ],
-          [
-            "ฝ"
-          ]
+          {
+            "strings": [
+              "ผ"
+            ]
+          },
+          {
+            "strings": [
+              "ป"
+            ]
+          },
+          {
+            "strings": [
+              "แ"
+            ]
+          },
+          {
+            "strings": [
+              "อ"
+            ]
+          },
+          {
+            "strings": [
+              "ิ"
+            ]
+          },
+          {
+            "strings": [
+              "ื"
+            ]
+          },
+          {
+            "strings": [
+              "ท"
+            ]
+          },
+          {
+            "strings": [
+              "ม"
+            ]
+          },
+          {
+            "strings": [
+              "ใ"
+            ]
+          },
+          {
+            "strings": [
+              "ฝ"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@",
-            " ๎",
-            "๏",
-            "๛",
-            "๚"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@",
+              " ๎",
+              "๏",
+              "๛",
+              "๚"
+            ]
+          }
         ]
       ]
     },
@@ -190,173 +288,271 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "+"
-          ],
-          [
-            "๑"
-          ],
-          [
-            "๒"
-          ],
-          [
-            "๓"
-          ],
-          [
-            "๔"
-          ],
-          [
-            "ู"
-          ],
-          [
-            "฿"
-          ],
-          [
-            "๕"
-          ],
-          [
-            "๖"
-          ],
-          [
-            "๗"
-          ],
-          [
-            "๘"
-          ],
-          [
-            "๙"
-          ]
+          {
+            "strings": [
+              "+"
+            ]
+          },
+          {
+            "strings": [
+              "๑"
+            ]
+          },
+          {
+            "strings": [
+              "๒"
+            ]
+          },
+          {
+            "strings": [
+              "๓"
+            ]
+          },
+          {
+            "strings": [
+              "๔"
+            ]
+          },
+          {
+            "strings": [
+              "ู"
+            ]
+          },
+          {
+            "strings": [
+              "฿"
+            ]
+          },
+          {
+            "strings": [
+              "๕"
+            ]
+          },
+          {
+            "strings": [
+              "๖"
+            ]
+          },
+          {
+            "strings": [
+              "๗"
+            ]
+          },
+          {
+            "strings": [
+              "๘"
+            ]
+          },
+          {
+            "strings": [
+              "๙"
+            ]
+          }
         ],
         [
-          [
-            "๐"
-          ],
-          [
-            "\""
-          ],
-          [
-            "ฎ"
-          ],
-          [
-            "ฑ"
-          ],
-          [
-            "ธ"
-          ],
-          [
-            "ํ"
-          ],
-          [
-            "๊"
-          ],
-          [
-            "ณ"
-          ],
-          [
-            "ฯ"
-          ],
-          [
-            "ญ"
-          ],
-          [
-            "ฐ"
-          ],
-          [
-            ","
-          ]
+          {
+            "strings": [
+              "๐"
+            ]
+          },
+          {
+            "strings": [
+              "\""
+            ]
+          },
+          {
+            "strings": [
+              "ฎ"
+            ]
+          },
+          {
+            "strings": [
+              "ฑ"
+            ]
+          },
+          {
+            "strings": [
+              "ธ"
+            ]
+          },
+          {
+            "strings": [
+              "ํ"
+            ]
+          },
+          {
+            "strings": [
+              "๊"
+            ]
+          },
+          {
+            "strings": [
+              "ณ"
+            ]
+          },
+          {
+            "strings": [
+              "ฯ"
+            ]
+          },
+          {
+            "strings": [
+              "ญ"
+            ]
+          },
+          {
+            "strings": [
+              "ฐ"
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          }
         ],
         [
-          [
-            "ฤ"
-          ],
-          [
-            "ฆ"
-          ],
-          [
-            "ฏ"
-          ],
-          [
-            "โ"
-          ],
-          [
-            "ฌ"
-          ],
-          [
-            "็"
-          ],
-          [
-            "๋"
-          ],
-          [
-            "ษ"
-          ],
-          [
-            "ศ"
-          ],
-          [
-            "ซ"
-          ],
-          [
-            "."
-          ],
-          [
-            "ฅ"
-          ]
+          {
+            "strings": [
+              "ฤ"
+            ]
+          },
+          {
+            "strings": [
+              "ฆ"
+            ]
+          },
+          {
+            "strings": [
+              "ฏ"
+            ]
+          },
+          {
+            "strings": [
+              "โ"
+            ]
+          },
+          {
+            "strings": [
+              "ฌ"
+            ]
+          },
+          {
+            "strings": [
+              "็"
+            ]
+          },
+          {
+            "strings": [
+              "๋"
+            ]
+          },
+          {
+            "strings": [
+              "ษ"
+            ]
+          },
+          {
+            "strings": [
+              "ศ"
+            ]
+          },
+          {
+            "strings": [
+              "ซ"
+            ]
+          },
+          {
+            "strings": [
+              "."
+            ]
+          },
+          {
+            "strings": [
+              "ฅ"
+            ]
+          }
         ],
         [
-          [
-            "("
-          ],
-          [
-            ")"
-          ],
-          [
-            "ฉ"
-          ],
-          [
-            "ฮ"
-          ],
-          [
-            "ฺ"
-          ],
-          [
-            "์"
-          ],
-          [
-            "?"
-          ],
-          [
-            "ฒ"
-          ],
-          [
-            "ฬ"
-          ],
-          [
-            "ฦ"
-          ]
+          {
+            "strings": [
+              "("
+            ]
+          },
+          {
+            "strings": [
+              ")"
+            ]
+          },
+          {
+            "strings": [
+              "ฉ"
+            ]
+          },
+          {
+            "strings": [
+              "ฮ"
+            ]
+          },
+          {
+            "strings": [
+              "ฺ"
+            ]
+          },
+          {
+            "strings": [
+              "์"
+            ]
+          },
+          {
+            "strings": [
+              "?"
+            ]
+          },
+          {
+            "strings": [
+              "ฒ"
+            ]
+          },
+          {
+            "strings": [
+              "ฬ"
+            ]
+          },
+          {
+            "strings": [
+              "ฦ"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@",
-            " ๎",
-            "๏",
-            "๛",
-            "๚"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@",
+              " ๎",
+              "๏",
+              "๛",
+              "๚"
+            ]
+          }
         ]
       ]
     },
@@ -365,152 +561,214 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "฿",
-            "$",
-            "¢",
-            "€",
-            "£",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "฿",
+              "$",
+              "¢",
+              "€",
+              "£",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -519,133 +777,195 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "€"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
   ],
   "locale": "th",
   "name": "Thai"
-}
\ No newline at end of file
+}
diff --git a/data/osk-layouts/tr.json b/data/osk-layouts/tr.json
index b3786cc884..2a8012d0a6 100644
--- a/data/osk-layouts/tr.json
+++ b/data/osk-layouts/tr.json
@@ -5,136 +5,194 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u",
-            "ü",
-            "û",
-            "ù",
-            "ú",
-            "ū"
-          ],
-          [
-            "i",
-            "ı",
-            "î",
-            "ï",
-            "ì",
-            "í",
-            "į",
-            "ī"
-          ],
-          [
-            "o",
-            "ö",
-            "ô",
-            "œ",
-            "ò",
-            "ó",
-            "õ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ü",
+              "û",
+              "ù",
+              "ú",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "ı",
+              "î",
+              "ï",
+              "ì",
+              "í",
+              "į",
+              "ī"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ö",
+              "ô",
+              "œ",
+              "ò",
+              "ó",
+              "õ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "â"
-          ],
-          [
-            "s",
-            "ş",
-            "ß",
-            "ś",
-            "š"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g",
-            "ğ"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "â"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ş",
+              "ß",
+              "ś",
+              "š"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g",
+              "ğ"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç",
-            "ć",
-            "č"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç",
+              "ć",
+              "č"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -143,136 +201,194 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U",
-            "Ü",
-            "Û",
-            "Ù",
-            "Ú",
-            "Ū"
-          ],
-          [
-            "İ",
-            "I",
-            "Î",
-            "Ï",
-            "Ì",
-            "Í",
-            "Į",
-            "Ī"
-          ],
-          [
-            "O",
-            "Ö",
-            "Ô",
-            "Œ",
-            "Ò",
-            "Ó",
-            "Õ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ü",
+              "Û",
+              "Ù",
+              "Ú",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "İ",
+              "I",
+              "Î",
+              "Ï",
+              "Ì",
+              "Í",
+              "Į",
+              "Ī"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ö",
+              "Ô",
+              "Œ",
+              "Ò",
+              "Ó",
+              "Õ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Â"
-          ],
-          [
-            "S",
-            "Ş",
-            "SS",
-            "Ś",
-            "Š"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G",
-            "Ğ"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Â"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "Ş",
+              "SS",
+              "Ś",
+              "Š"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G",
+              "Ğ"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç",
-            "Ć",
-            "Č"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç",
+              "Ć",
+              "Č"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -281,151 +397,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "€",
-            "¢",
-            "£",
-            "$",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "€",
+              "¢",
+              "£",
+              "$",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -434,129 +612,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/ua.json b/data/osk-layouts/ua.json
index 11856878e9..25ccb44b66 100644
--- a/data/osk-layouts/ua.json
+++ b/data/osk-layouts/ua.json
@@ -5,125 +5,193 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "й"
-          ],
-          [
-            "ц"
-          ],
-          [
-            "у"
-          ],
-          [
-            "к"
-          ],
-          [
-            "е"
-          ],
-          [
-            "н"
-          ],
-          [
-            "г",
-            "ґ"
-          ],
-          [
-            "ш"
-          ],
-          [
-            "щ"
-          ],
-          [
-            "з"
-          ],
-          [
-            "х"
-          ]
+          {
+            "strings": [
+              "й"
+            ]
+          },
+          {
+            "strings": [
+              "ц"
+            ]
+          },
+          {
+            "strings": [
+              "у"
+            ]
+          },
+          {
+            "strings": [
+              "к"
+            ]
+          },
+          {
+            "strings": [
+              "е"
+            ]
+          },
+          {
+            "strings": [
+              "н"
+            ]
+          },
+          {
+            "strings": [
+              "г",
+              "ґ"
+            ]
+          },
+          {
+            "strings": [
+              "ш"
+            ]
+          },
+          {
+            "strings": [
+              "щ"
+            ]
+          },
+          {
+            "strings": [
+              "з"
+            ]
+          },
+          {
+            "strings": [
+              "х"
+            ]
+          }
         ],
         [
-          [
-            "ф"
-          ],
-          [
-            "і",
-            "ї"
-          ],
-          [
-            "в"
-          ],
-          [
-            "а"
-          ],
-          [
-            "п"
-          ],
-          [
-            "р"
-          ],
-          [
-            "о"
-          ],
-          [
-            "л"
-          ],
-          [
-            "д"
-          ],
-          [
-            "ж"
-          ],
-          [
-            "є"
-          ]
+          {
+            "strings": [
+              "ф"
+            ]
+          },
+          {
+            "strings": [
+              "і",
+              "ї"
+            ]
+          },
+          {
+            "strings": [
+              "в"
+            ]
+          },
+          {
+            "strings": [
+              "а"
+            ]
+          },
+          {
+            "strings": [
+              "п"
+            ]
+          },
+          {
+            "strings": [
+              "р"
+            ]
+          },
+          {
+            "strings": [
+              "о"
+            ]
+          },
+          {
+            "strings": [
+              "л"
+            ]
+          },
+          {
+            "strings": [
+              "д"
+            ]
+          },
+          {
+            "strings": [
+              "ж"
+            ]
+          },
+          {
+            "strings": [
+              "є"
+            ]
+          }
         ],
         [
-          [
-            "я"
-          ],
-          [
-            "ч"
-          ],
-          [
-            "с"
-          ],
-          [
-            "м"
-          ],
-          [
-            "и"
-          ],
-          [
-            "т"
-          ],
-          [
-            "ь",
-            "ъ"
-          ],
-          [
-            "б"
-          ],
-          [
-            "ю"
-          ]
+          {
+            "strings": [
+              "я"
+            ]
+          },
+          {
+            "strings": [
+              "ч"
+            ]
+          },
+          {
+            "strings": [
+              "с"
+            ]
+          },
+          {
+            "strings": [
+              "м"
+            ]
+          },
+          {
+            "strings": [
+              "и"
+            ]
+          },
+          {
+            "strings": [
+              "т"
+            ]
+          },
+          {
+            "strings": [
+              "ь",
+              "ъ"
+            ]
+          },
+          {
+            "strings": [
+              "б"
+            ]
+          },
+          {
+            "strings": [
+              "ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -132,125 +200,193 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Й"
-          ],
-          [
-            "Ц"
-          ],
-          [
-            "У"
-          ],
-          [
-            "К"
-          ],
-          [
-            "Е"
-          ],
-          [
-            "Н"
-          ],
-          [
-            "Г",
-            "Ґ"
-          ],
-          [
-            "Ш"
-          ],
-          [
-            "Щ"
-          ],
-          [
-            "З"
-          ],
-          [
-            "Х"
-          ]
+          {
+            "strings": [
+              "Й"
+            ]
+          },
+          {
+            "strings": [
+              "Ц"
+            ]
+          },
+          {
+            "strings": [
+              "У"
+            ]
+          },
+          {
+            "strings": [
+              "К"
+            ]
+          },
+          {
+            "strings": [
+              "Е"
+            ]
+          },
+          {
+            "strings": [
+              "Н"
+            ]
+          },
+          {
+            "strings": [
+              "Г",
+              "Ґ"
+            ]
+          },
+          {
+            "strings": [
+              "Ш"
+            ]
+          },
+          {
+            "strings": [
+              "Щ"
+            ]
+          },
+          {
+            "strings": [
+              "З"
+            ]
+          },
+          {
+            "strings": [
+              "Х"
+            ]
+          }
         ],
         [
-          [
-            "Ф"
-          ],
-          [
-            "І",
-            "Ї"
-          ],
-          [
-            "В"
-          ],
-          [
-            "А"
-          ],
-          [
-            "П"
-          ],
-          [
-            "Р"
-          ],
-          [
-            "О"
-          ],
-          [
-            "Л"
-          ],
-          [
-            "Д"
-          ],
-          [
-            "Ж"
-          ],
-          [
-            "Є"
-          ]
+          {
+            "strings": [
+              "Ф"
+            ]
+          },
+          {
+            "strings": [
+              "І",
+              "Ї"
+            ]
+          },
+          {
+            "strings": [
+              "В"
+            ]
+          },
+          {
+            "strings": [
+              "А"
+            ]
+          },
+          {
+            "strings": [
+              "П"
+            ]
+          },
+          {
+            "strings": [
+              "Р"
+            ]
+          },
+          {
+            "strings": [
+              "О"
+            ]
+          },
+          {
+            "strings": [
+              "Л"
+            ]
+          },
+          {
+            "strings": [
+              "Д"
+            ]
+          },
+          {
+            "strings": [
+              "Ж"
+            ]
+          },
+          {
+            "strings": [
+              "Є"
+            ]
+          }
         ],
         [
-          [
-            "Я"
-          ],
-          [
-            "Ч"
-          ],
-          [
-            "С"
-          ],
-          [
-            "М"
-          ],
-          [
-            "И"
-          ],
-          [
-            "Т"
-          ],
-          [
-            "Ь",
-            "Ъ"
-          ],
-          [
-            "Б"
-          ],
-          [
-            "Ю"
-          ]
+          {
+            "strings": [
+              "Я"
+            ]
+          },
+          {
+            "strings": [
+              "Ч"
+            ]
+          },
+          {
+            "strings": [
+              "С"
+            ]
+          },
+          {
+            "strings": [
+              "М"
+            ]
+          },
+          {
+            "strings": [
+              "И"
+            ]
+          },
+          {
+            "strings": [
+              "Т"
+            ]
+          },
+          {
+            "strings": [
+              "Ь",
+              "Ъ"
+            ]
+          },
+          {
+            "strings": [
+              "Б"
+            ]
+          },
+          {
+            "strings": [
+              "Ю"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -259,152 +395,214 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "₴",
-            "$",
-            "¢",
-            "€",
-            "£",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "₴",
+              "$",
+              "¢",
+              "€",
+              "£",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -413,129 +611,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "€"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/uk.json b/data/osk-layouts/uk.json
index c36a723a00..36aa114d9c 100644
--- a/data/osk-layouts/uk.json
+++ b/data/osk-layouts/uk.json
@@ -5,141 +5,199 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "è",
-            "é",
-            "ê",
-            "ë",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u",
-            "û",
-            "ü",
-            "ù",
-            "ú",
-            "ū"
-          ],
-          [
-            "i",
-            "î",
-            "ï",
-            "í",
-            "ī",
-            "ì"
-          ],
-          [
-            "o",
-            "ô",
-            "ö",
-            "ò",
-            "ó",
-            "œ",
-            "ø",
-            "ō",
-            "õ"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "è",
+              "é",
+              "ê",
+              "ë",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "û",
+              "ü",
+              "ù",
+              "ú",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "î",
+              "ï",
+              "í",
+              "ī",
+              "ì"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ô",
+              "ö",
+              "ò",
+              "ó",
+              "œ",
+              "ø",
+              "ō",
+              "õ"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "à",
-            "á",
-            "â",
-            "ä",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s",
-            "ß"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "à",
+              "á",
+              "â",
+              "ä",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -148,141 +206,199 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "È",
-            "É",
-            "Ê",
-            "Ë",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U",
-            "Û",
-            "Ü",
-            "Ù",
-            "Ú",
-            "Ū"
-          ],
-          [
-            "I",
-            "Î",
-            "Ï",
-            "Í",
-            "Ī",
-            "Ì"
-          ],
-          [
-            "O",
-            "Ô",
-            "Ö",
-            "Ò",
-            "Ó",
-            "Œ",
-            "Ø",
-            "Ō",
-            "Õ"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "È",
+              "É",
+              "Ê",
+              "Ë",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Û",
+              "Ü",
+              "Ù",
+              "Ú",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Î",
+              "Ï",
+              "Í",
+              "Ī",
+              "Ì"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ô",
+              "Ö",
+              "Ò",
+              "Ó",
+              "Œ",
+              "Ø",
+              "Ō",
+              "Õ"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "À",
-            "Á",
-            "Â",
-            "Ä",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S",
-            "SS"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "À",
+              "Á",
+              "Â",
+              "Ä",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "SS"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -291,151 +407,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "£",
-            "¢",
-            "$",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "£",
+              "¢",
+              "$",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -444,129 +622,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/us.json b/data/osk-layouts/us.json
index 94dd6d3ada..ec5d98d767 100644
--- a/data/osk-layouts/us.json
+++ b/data/osk-layouts/us.json
@@ -5,141 +5,199 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "è",
-            "é",
-            "ê",
-            "ë",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y"
-          ],
-          [
-            "u",
-            "û",
-            "ü",
-            "ù",
-            "ú",
-            "ū"
-          ],
-          [
-            "i",
-            "î",
-            "ï",
-            "í",
-            "ī",
-            "ì"
-          ],
-          [
-            "o",
-            "ô",
-            "ö",
-            "ò",
-            "ó",
-            "œ",
-            "ø",
-            "ō",
-            "õ"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "è",
+              "é",
+              "ê",
+              "ë",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "û",
+              "ü",
+              "ù",
+              "ú",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "î",
+              "ï",
+              "í",
+              "ī",
+              "ì"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ô",
+              "ö",
+              "ò",
+              "ó",
+              "œ",
+              "ø",
+              "ō",
+              "õ"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "à",
-            "á",
-            "â",
-            "ä",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s",
-            "ß"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "à",
+              "á",
+              "â",
+              "ä",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s",
+              "ß"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c",
-            "ç"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c",
+              "ç"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -148,141 +206,199 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "È",
-            "É",
-            "Ê",
-            "Ë",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y"
-          ],
-          [
-            "U",
-            "Û",
-            "Ü",
-            "Ù",
-            "Ú",
-            "Ū"
-          ],
-          [
-            "I",
-            "Î",
-            "Ï",
-            "Í",
-            "Ī",
-            "Ì"
-          ],
-          [
-            "O",
-            "Ô",
-            "Ö",
-            "Ò",
-            "Ó",
-            "Œ",
-            "Ø",
-            "Ō",
-            "Õ"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "È",
+              "É",
+              "Ê",
+              "Ë",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Û",
+              "Ü",
+              "Ù",
+              "Ú",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Î",
+              "Ï",
+              "Í",
+              "Ī",
+              "Ì"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ô",
+              "Ö",
+              "Ò",
+              "Ó",
+              "Œ",
+              "Ø",
+              "Ō",
+              "Õ"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "À",
-            "Á",
-            "Â",
-            "Ä",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S",
-            "SS"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "À",
+              "Á",
+              "Â",
+              "Ä",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S",
+              "SS"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C",
-            "Ç"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C",
+              "Ç"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -291,151 +407,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -444,128 +622,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/vn.json b/data/osk-layouts/vn.json
index 4c7c9b4e68..07b10d2f4e 100644
--- a/data/osk-layouts/vn.json
+++ b/data/osk-layouts/vn.json
@@ -5,174 +5,232 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "è",
-            "é",
-            "ẻ",
-            "ẽ",
-            "ẹ",
-            "ê",
-            "ề",
-            "ế",
-            "ể",
-            "ễ",
-            "ệ"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y",
-            "ỳ",
-            "ý",
-            "ỷ",
-            "ỹ",
-            "ỵ"
-          ],
-          [
-            "u",
-            "ù",
-            "ú",
-            "ủ",
-            "ũ",
-            "ụ",
-            "ư",
-            "ừ",
-            "ứ",
-            "ử",
-            "ữ",
-            "ự"
-          ],
-          [
-            "i",
-            "ì",
-            "í",
-            "ỉ",
-            "ĩ",
-            "ị"
-          ],
-          [
-            "o",
-            "ò",
-            "ó",
-            "ỏ",
-            "õ",
-            "ọ",
-            "ô",
-            "ồ",
-            "ố",
-            "ổ",
-            "ỗ",
-            "ộ",
-            "ơ",
-            "ờ",
-            "ớ",
-            "ở",
-            "ỡ",
-            "ợ"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "è",
+              "é",
+              "ẻ",
+              "ẽ",
+              "ẹ",
+              "ê",
+              "ề",
+              "ế",
+              "ể",
+              "ễ",
+              "ệ"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ỳ",
+              "ý",
+              "ỷ",
+              "ỹ",
+              "ỵ"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ù",
+              "ú",
+              "ủ",
+              "ũ",
+              "ụ",
+              "ư",
+              "ừ",
+              "ứ",
+              "ử",
+              "ữ",
+              "ự"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "ì",
+              "í",
+              "ỉ",
+              "ĩ",
+              "ị"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ò",
+              "ó",
+              "ỏ",
+              "õ",
+              "ọ",
+              "ô",
+              "ồ",
+              "ố",
+              "ổ",
+              "ỗ",
+              "ộ",
+              "ơ",
+              "ờ",
+              "ớ",
+              "ở",
+              "ỡ",
+              "ợ"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "à",
-            "á",
-            "ả",
-            "ã",
-            "ạ",
-            "ă",
-            "ằ",
-            "ắ",
-            "ẳ",
-            "ẵ",
-            "ặ",
-            "â",
-            "ầ",
-            "ấ",
-            "ẩ",
-            "ẫ",
-            "ậ"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d",
-            "đ"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "à",
+              "á",
+              "ả",
+              "ã",
+              "ạ",
+              "ă",
+              "ằ",
+              "ắ",
+              "ẳ",
+              "ẵ",
+              "ặ",
+              "â",
+              "ầ",
+              "ấ",
+              "ẩ",
+              "ẫ",
+              "ậ"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d",
+              "đ"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -181,174 +239,232 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "È",
-            "É",
-            "Ẻ",
-            "Ẽ",
-            "Ẹ",
-            "Ê",
-            "Ề",
-            "Ế",
-            "Ể",
-            "Ễ",
-            "Ệ"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y",
-            "Ỳ",
-            "Ý",
-            "Ỷ",
-            "Ỹ",
-            "Ỵ"
-          ],
-          [
-            "U",
-            "Ù",
-            "Ú",
-            "Ủ",
-            "Ũ",
-            "Ụ",
-            "Ư",
-            "Ừ",
-            "Ứ",
-            "Ử",
-            "Ữ",
-            "Ự"
-          ],
-          [
-            "I",
-            "Ì",
-            "Í",
-            "Ỉ",
-            "Ĩ",
-            "Ị"
-          ],
-          [
-            "O",
-            "Ò",
-            "Ó",
-            "Ỏ",
-            "Õ",
-            "Ọ",
-            "Ô",
-            "Ồ",
-            "Ố",
-            "Ổ",
-            "Ỗ",
-            "Ộ",
-            "Ơ",
-            "Ờ",
-            "Ớ",
-            "Ở",
-            "Ỡ",
-            "Ợ"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "È",
+              "É",
+              "Ẻ",
+              "Ẽ",
+              "Ẹ",
+              "Ê",
+              "Ề",
+              "Ế",
+              "Ể",
+              "Ễ",
+              "Ệ"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ỳ",
+              "Ý",
+              "Ỷ",
+              "Ỹ",
+              "Ỵ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ù",
+              "Ú",
+              "Ủ",
+              "Ũ",
+              "Ụ",
+              "Ư",
+              "Ừ",
+              "Ứ",
+              "Ử",
+              "Ữ",
+              "Ự"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Ì",
+              "Í",
+              "Ỉ",
+              "Ĩ",
+              "Ị"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ò",
+              "Ó",
+              "Ỏ",
+              "Õ",
+              "Ọ",
+              "Ô",
+              "Ồ",
+              "Ố",
+              "Ổ",
+              "Ỗ",
+              "Ộ",
+              "Ơ",
+              "Ờ",
+              "Ớ",
+              "Ở",
+              "Ỡ",
+              "Ợ"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "À",
-            "Á",
-            "Ả",
-            "Ã",
-            "Ạ",
-            "Ă",
-            "Ằ",
-            "Ắ",
-            "Ẳ",
-            "Ẵ",
-            "Ặ",
-            "Â",
-            "Ầ",
-            "Ấ",
-            "Ẩ",
-            "Ẫ",
-            "Ậ"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D",
-            "Đ"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "À",
+              "Á",
+              "Ả",
+              "Ã",
+              "Ạ",
+              "Ă",
+              "Ằ",
+              "Ắ",
+              "Ẳ",
+              "Ẵ",
+              "Ặ",
+              "Â",
+              "Ầ",
+              "Ấ",
+              "Ẩ",
+              "Ẫ",
+              "Ậ"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D",
+              "Đ"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -357,152 +473,214 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "₫",
-            "$",
-            "¢",
-            "€",
-            "£",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "₫",
+              "$",
+              "¢",
+              "€",
+              "£",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -511,129 +689,191 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "€"
-          ],
-          [
-            "$",
-            "¢"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }
diff --git a/data/osk-layouts/za.json b/data/osk-layouts/za.json
index ccd244724e..ee154fba5c 100644
--- a/data/osk-layouts/za.json
+++ b/data/osk-layouts/za.json
@@ -5,148 +5,206 @@
       "mode": "default",
       "rows": [
         [
-          [
-            "q"
-          ],
-          [
-            "w"
-          ],
-          [
-            "e",
-            "é",
-            "è",
-            "ê",
-            "ë",
-            "ę",
-            "ė",
-            "ē"
-          ],
-          [
-            "r"
-          ],
-          [
-            "t"
-          ],
-          [
-            "y",
-            "ý",
-            "ŷ",
-            "ÿ",
-            "ij"
-          ],
-          [
-            "u",
-            "ú",
-            "û",
-            "ü",
-            "ù",
-            "ū"
-          ],
-          [
-            "i",
-            "í",
-            "ì",
-            "ï",
-            "î",
-            "į",
-            "ī",
-            "ij"
-          ],
-          [
-            "o",
-            "ó",
-            "ô",
-            "ö",
-            "ò",
-            "õ",
-            "œ",
-            "ø",
-            "ō"
-          ],
-          [
-            "p"
-          ]
+          {
+            "strings": [
+              "q"
+            ]
+          },
+          {
+            "strings": [
+              "w"
+            ]
+          },
+          {
+            "strings": [
+              "e",
+              "é",
+              "è",
+              "ê",
+              "ë",
+              "ę",
+              "ė",
+              "ē"
+            ]
+          },
+          {
+            "strings": [
+              "r"
+            ]
+          },
+          {
+            "strings": [
+              "t"
+            ]
+          },
+          {
+            "strings": [
+              "y",
+              "ý",
+              "ŷ",
+              "ÿ",
+              "ij"
+            ]
+          },
+          {
+            "strings": [
+              "u",
+              "ú",
+              "û",
+              "ü",
+              "ù",
+              "ū"
+            ]
+          },
+          {
+            "strings": [
+              "i",
+              "í",
+              "ì",
+              "ï",
+              "î",
+              "į",
+              "ī",
+              "ij"
+            ]
+          },
+          {
+            "strings": [
+              "o",
+              "ó",
+              "ô",
+              "ö",
+              "ò",
+              "õ",
+              "œ",
+              "ø",
+              "ō"
+            ]
+          },
+          {
+            "strings": [
+              "p"
+            ]
+          }
         ],
         [
-          [
-            "a",
-            "á",
-            "â",
-            "ä",
-            "à",
-            "æ",
-            "ã",
-            "å",
-            "ā"
-          ],
-          [
-            "s"
-          ],
-          [
-            "d"
-          ],
-          [
-            "f"
-          ],
-          [
-            "g"
-          ],
-          [
-            "h"
-          ],
-          [
-            "j"
-          ],
-          [
-            "k"
-          ],
-          [
-            "l"
-          ]
+          {
+            "strings": [
+              "a",
+              "á",
+              "â",
+              "ä",
+              "à",
+              "æ",
+              "ã",
+              "å",
+              "ā"
+            ]
+          },
+          {
+            "strings": [
+              "s"
+            ]
+          },
+          {
+            "strings": [
+              "d"
+            ]
+          },
+          {
+            "strings": [
+              "f"
+            ]
+          },
+          {
+            "strings": [
+              "g"
+            ]
+          },
+          {
+            "strings": [
+              "h"
+            ]
+          },
+          {
+            "strings": [
+              "j"
+            ]
+          },
+          {
+            "strings": [
+              "k"
+            ]
+          },
+          {
+            "strings": [
+              "l"
+            ]
+          }
         ],
         [
-          [
-            "z"
-          ],
-          [
-            "x"
-          ],
-          [
-            "c"
-          ],
-          [
-            "v"
-          ],
-          [
-            "b"
-          ],
-          [
-            "n",
-            "ñ",
-            "ń"
-          ],
-          [
-            "m"
-          ]
+          {
+            "strings": [
+              "z"
+            ]
+          },
+          {
+            "strings": [
+              "x"
+            ]
+          },
+          {
+            "strings": [
+              "c"
+            ]
+          },
+          {
+            "strings": [
+              "v"
+            ]
+          },
+          {
+            "strings": [
+              "b"
+            ]
+          },
+          {
+            "strings": [
+              "n",
+              "ñ",
+              "ń"
+            ]
+          },
+          {
+            "strings": [
+              "m"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -155,148 +213,206 @@
       "mode": "latched",
       "rows": [
         [
-          [
-            "Q"
-          ],
-          [
-            "W"
-          ],
-          [
-            "E",
-            "É",
-            "È",
-            "Ê",
-            "Ë",
-            "Ę",
-            "Ė",
-            "Ē"
-          ],
-          [
-            "R"
-          ],
-          [
-            "T"
-          ],
-          [
-            "Y",
-            "Ý",
-            "Ŷ",
-            "Ÿ",
-            "IJ"
-          ],
-          [
-            "U",
-            "Ú",
-            "Û",
-            "Ü",
-            "Ù",
-            "Ū"
-          ],
-          [
-            "I",
-            "Í",
-            "Ì",
-            "Ï",
-            "Î",
-            "Į",
-            "Ī",
-            "IJ"
-          ],
-          [
-            "O",
-            "Ó",
-            "Ô",
-            "Ö",
-            "Ò",
-            "Õ",
-            "Œ",
-            "Ø",
-            "Ō"
-          ],
-          [
-            "P"
-          ]
+          {
+            "strings": [
+              "Q"
+            ]
+          },
+          {
+            "strings": [
+              "W"
+            ]
+          },
+          {
+            "strings": [
+              "E",
+              "É",
+              "È",
+              "Ê",
+              "Ë",
+              "Ę",
+              "Ė",
+              "Ē"
+            ]
+          },
+          {
+            "strings": [
+              "R"
+            ]
+          },
+          {
+            "strings": [
+              "T"
+            ]
+          },
+          {
+            "strings": [
+              "Y",
+              "Ý",
+              "Ŷ",
+              "Ÿ",
+              "IJ"
+            ]
+          },
+          {
+            "strings": [
+              "U",
+              "Ú",
+              "Û",
+              "Ü",
+              "Ù",
+              "Ū"
+            ]
+          },
+          {
+            "strings": [
+              "I",
+              "Í",
+              "Ì",
+              "Ï",
+              "Î",
+              "Į",
+              "Ī",
+              "IJ"
+            ]
+          },
+          {
+            "strings": [
+              "O",
+              "Ó",
+              "Ô",
+              "Ö",
+              "Ò",
+              "Õ",
+              "Œ",
+              "Ø",
+              "Ō"
+            ]
+          },
+          {
+            "strings": [
+              "P"
+            ]
+          }
         ],
         [
-          [
-            "A",
-            "Á",
-            "Â",
-            "Ä",
-            "À",
-            "Æ",
-            "Ã",
-            "Å",
-            "Ā"
-          ],
-          [
-            "S"
-          ],
-          [
-            "D"
-          ],
-          [
-            "F"
-          ],
-          [
-            "G"
-          ],
-          [
-            "H"
-          ],
-          [
-            "J"
-          ],
-          [
-            "K"
-          ],
-          [
-            "L"
-          ]
+          {
+            "strings": [
+              "A",
+              "Á",
+              "Â",
+              "Ä",
+              "À",
+              "Æ",
+              "Ã",
+              "Å",
+              "Ā"
+            ]
+          },
+          {
+            "strings": [
+              "S"
+            ]
+          },
+          {
+            "strings": [
+              "D"
+            ]
+          },
+          {
+            "strings": [
+              "F"
+            ]
+          },
+          {
+            "strings": [
+              "G"
+            ]
+          },
+          {
+            "strings": [
+              "H"
+            ]
+          },
+          {
+            "strings": [
+              "J"
+            ]
+          },
+          {
+            "strings": [
+              "K"
+            ]
+          },
+          {
+            "strings": [
+              "L"
+            ]
+          }
         ],
         [
-          [
-            "Z"
-          ],
-          [
-            "X"
-          ],
-          [
-            "C"
-          ],
-          [
-            "V"
-          ],
-          [
-            "B"
-          ],
-          [
-            "N",
-            "Ñ",
-            "Ń"
-          ],
-          [
-            "M"
-          ]
+          {
+            "strings": [
+              "Z"
+            ]
+          },
+          {
+            "strings": [
+              "X"
+            ]
+          },
+          {
+            "strings": [
+              "C"
+            ]
+          },
+          {
+            "strings": [
+              "V"
+            ]
+          },
+          {
+            "strings": [
+              "B"
+            ]
+          },
+          {
+            "strings": [
+              "N",
+              "Ñ",
+              "Ń"
+            ]
+          },
+          {
+            "strings": [
+              "M"
+            ]
+          }
         ],
         [
-          [
-            ","
-          ],
-          [
-            " "
-          ],
-          [
-            ".",
-            "#",
-            "!",
-            ",",
-            "?",
-            "-",
-            ":",
-            "'",
-            "@"
-          ]
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "#",
+              "!",
+              ",",
+              "?",
+              "-",
+              ":",
+              "'",
+              "@"
+            ]
+          }
         ]
       ]
     },
@@ -305,151 +421,213 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "1",
-            "¹",
-            "½",
-            "⅓",
-            "¼",
-            "⅛"
-          ],
-          [
-            "2",
-            "²",
-            "⅔"
-          ],
-          [
-            "3",
-            "³",
-            "¾",
-            "⅜"
-          ],
-          [
-            "4",
-            "⁴"
-          ],
-          [
-            "5",
-            "⅝"
-          ],
-          [
-            "6"
-          ],
-          [
-            "7",
-            "⅞"
-          ],
-          [
-            "8"
-          ],
-          [
-            "9"
-          ],
-          [
-            "0",
-            "ⁿ",
-            "∅"
-          ]
+          {
+            "strings": [
+              "1",
+              "¹",
+              "½",
+              "⅓",
+              "¼",
+              "⅛"
+            ]
+          },
+          {
+            "strings": [
+              "2",
+              "²",
+              "⅔"
+            ]
+          },
+          {
+            "strings": [
+              "3",
+              "³",
+              "¾",
+              "⅜"
+            ]
+          },
+          {
+            "strings": [
+              "4",
+              "⁴"
+            ]
+          },
+          {
+            "strings": [
+              "5",
+              "⅝"
+            ]
+          },
+          {
+            "strings": [
+              "6"
+            ]
+          },
+          {
+            "strings": [
+              "7",
+              "⅞"
+            ]
+          },
+          {
+            "strings": [
+              "8"
+            ]
+          },
+          {
+            "strings": [
+              "9"
+            ]
+          },
+          {
+            "strings": [
+              "0",
+              "ⁿ",
+              "∅"
+            ]
+          }
         ],
         [
-          [
-            "@"
-          ],
-          [
-            "#"
-          ],
-          [
-            "$",
-            "¢",
-            "£",
-            "€",
-            "¥",
-            "₱"
-          ],
-          [
-            "%",
-            "‰"
-          ],
-          [
-            "&"
-          ],
-          [
-            "-",
-            "_",
-            "–",
-            "—",
-            "·"
-          ],
-          [
-            "+",
-            "±"
-          ],
-          [
-            "(",
-            "<",
-            "{",
-            "["
-          ],
-          [
-            ")",
-            ">",
-            "}",
-            "]"
-          ]
+          {
+            "strings": [
+              "@"
+            ]
+          },
+          {
+            "strings": [
+              "#"
+            ]
+          },
+          {
+            "strings": [
+              "$",
+              "¢",
+              "£",
+              "€",
+              "¥",
+              "₱"
+            ]
+          },
+          {
+            "strings": [
+              "%",
+              "‰"
+            ]
+          },
+          {
+            "strings": [
+              "&"
+            ]
+          },
+          {
+            "strings": [
+              "-",
+              "_",
+              "–",
+              "—",
+              "·"
+            ]
+          },
+          {
+            "strings": [
+              "+",
+              "±"
+            ]
+          },
+          {
+            "strings": [
+              "(",
+              "<",
+              "{",
+              "["
+            ]
+          },
+          {
+            "strings": [
+              ")",
+              ">",
+              "}",
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "*",
-            "†",
-            "‡",
-            "★"
-          ],
-          [
-            "\"",
-            "“",
-            "”",
-            "«",
-            "»"
-          ],
-          [
-            "'",
-            "‘",
-            "’",
-            "‹",
-            "›"
-          ],
-          [
-            ":"
-          ],
-          [
-            ";"
-          ],
-          [
-            "!",
-            "¡"
-          ],
-          [
-            "?",
-            "¿"
-          ]
+          {
+            "strings": [
+              "*",
+              "†",
+              "‡",
+              "★"
+            ]
+          },
+          {
+            "strings": [
+              "\"",
+              "“",
+              "”",
+              "«",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              "'",
+              "‘",
+              "’",
+              "‹",
+              "›"
+            ]
+          },
+          {
+            "strings": [
+              ":"
+            ]
+          },
+          {
+            "strings": [
+              ";"
+            ]
+          },
+          {
+            "strings": [
+              "!",
+              "¡"
+            ]
+          },
+          {
+            "strings": [
+              "?",
+              "¿"
+            ]
+          }
         ],
         [
-          [
-            "_"
-          ],
-          [
-            "/"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "_"
+            ]
+          },
+          {
+            "strings": [
+              "/"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     },
@@ -458,128 +636,190 @@
       "mode": "locked",
       "rows": [
         [
-          [
-            "~"
-          ],
-          [
-            "`"
-          ],
-          [
-            "|"
-          ],
-          [
-            "•",
-            "♪",
-            "♥",
-            "♠",
-            "♦",
-            "♣"
-          ],
-          [
-            "√"
-          ],
-          [
-            "Π",
-            "π"
-          ],
-          [
-            "÷"
-          ],
-          [
-            "×"
-          ],
-          [
-            "¶",
-            "§"
-          ],
-          [
-            "∆"
-          ]
+          {
+            "strings": [
+              "~"
+            ]
+          },
+          {
+            "strings": [
+              "`"
+            ]
+          },
+          {
+            "strings": [
+              "|"
+            ]
+          },
+          {
+            "strings": [
+              "•",
+              "♪",
+              "♥",
+              "♠",
+              "♦",
+              "♣"
+            ]
+          },
+          {
+            "strings": [
+              "√"
+            ]
+          },
+          {
+            "strings": [
+              "Π",
+              "π"
+            ]
+          },
+          {
+            "strings": [
+              "÷"
+            ]
+          },
+          {
+            "strings": [
+              "×"
+            ]
+          },
+          {
+            "strings": [
+              "¶",
+              "§"
+            ]
+          },
+          {
+            "strings": [
+              "∆"
+            ]
+          }
         ],
         [
-          [
-            "£"
-          ],
-          [
-            "¢"
-          ],
-          [
-            "€"
-          ],
-          [
-            "¥"
-          ],
-          [
-            "^",
-            "↑",
-            "↓",
-            "←",
-            "→"
-          ],
-          [
-            "°",
-            "′",
-            "″"
-          ],
-          [
-            "=",
-            "≠",
-            "≈",
-            "∞"
-          ],
-          [
-            "{"
-          ],
-          [
-            "}"
-          ]
+          {
+            "strings": [
+              "£"
+            ]
+          },
+          {
+            "strings": [
+              "¢"
+            ]
+          },
+          {
+            "strings": [
+              "€"
+            ]
+          },
+          {
+            "strings": [
+              "¥"
+            ]
+          },
+          {
+            "strings": [
+              "^",
+              "↑",
+              "↓",
+              "←",
+              "→"
+            ]
+          },
+          {
+            "strings": [
+              "°",
+              "′",
+              "″"
+            ]
+          },
+          {
+            "strings": [
+              "=",
+              "≠",
+              "≈",
+              "∞"
+            ]
+          },
+          {
+            "strings": [
+              "{"
+            ]
+          },
+          {
+            "strings": [
+              "}"
+            ]
+          }
         ],
         [
-          [
-            "\\"
-          ],
-          [
-            "©"
-          ],
-          [
-            "®"
-          ],
-          [
-            "™"
-          ],
-          [
-            "℅"
-          ],
-          [
-            "["
-          ],
-          [
-            "]"
-          ]
+          {
+            "strings": [
+              "\\"
+            ]
+          },
+          {
+            "strings": [
+              "©"
+            ]
+          },
+          {
+            "strings": [
+              "®"
+            ]
+          },
+          {
+            "strings": [
+              "™"
+            ]
+          },
+          {
+            "strings": [
+              "℅"
+            ]
+          },
+          {
+            "strings": [
+              "["
+            ]
+          },
+          {
+            "strings": [
+              "]"
+            ]
+          }
         ],
         [
-          [
-            "<",
-            "‹",
-            "≤",
-            "«"
-          ],
-          [
-            ">",
-            "›",
-            "≥",
-            "»"
-          ],
-          [
-            " "
-          ],
-          [
-            ","
-          ],
-          [
-            ".",
-            "…"
-          ]
+          {
+            "strings": [
+              "<",
+              "‹",
+              "≤",
+              "«"
+            ]
+          },
+          {
+            "strings": [
+              ">",
+              "›",
+              "≥",
+              "»"
+            ]
+          },
+          {
+            "strings": [
+              " "
+            ]
+          },
+          {
+            "strings": [
+              ","
+            ]
+          },
+          {
+            "strings": [
+              ".",
+              "…"
+            ]
+          }
         ]
       ]
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]