[gnome-shell/wip/carlosg/osk-cldr: 148/154] data: Add keyboard layout JSON files



commit 69cb8570f4fe48492baea22fcfeef6991631a9af
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Aug 10 21:06:25 2017 +0200

    data: Add keyboard layout JSON files
    
    These have been created with the script at
    git://repo.or.cz/cldr2json.git to translate the XML android
    keymaps at http://www.unicode.org/Public/cldr/latest/keyboards.zip
    into JSON, easier to parse from gnome-shell.

 data/gnome-shell-osk-layouts.gresource.xml |   57 +++
 data/meson.build                           |    8 +
 data/osk-layouts/am.json                   |  599 +++++++++++++++++++++++
 data/osk-layouts/ara.json                  |  488 +++++++++++++++++++
 data/osk-layouts/be.json                   |  584 +++++++++++++++++++++++
 data/osk-layouts/bg.json                   |  533 +++++++++++++++++++++
 data/osk-layouts/by.json                   |  541 +++++++++++++++++++++
 data/osk-layouts/cz.json                   |  613 ++++++++++++++++++++++++
 data/osk-layouts/de.json                   |  570 ++++++++++++++++++++++
 data/osk-layouts/dk.json                   |  590 +++++++++++++++++++++++
 data/osk-layouts/ee.json                   |  666 ++++++++++++++++++++++++++
 data/osk-layouts/epo.json                  |  711 ++++++++++++++++++++++++++++
 data/osk-layouts/es+cat.json               |  602 +++++++++++++++++++++++
 data/osk-layouts/es.json                   |  604 +++++++++++++++++++++++
 data/osk-layouts/fi.json                   |  570 ++++++++++++++++++++++
 data/osk-layouts/fr.json                   |  599 +++++++++++++++++++++++
 data/osk-layouts/ge.json                   |  409 ++++++++++++++++
 data/osk-layouts/gr.json                   |  532 +++++++++++++++++++++
 data/osk-layouts/hr.json                   |  531 +++++++++++++++++++++
 data/osk-layouts/hu.json                   |  579 ++++++++++++++++++++++
 data/osk-layouts/id.json                   |  507 ++++++++++++++++++++
 data/osk-layouts/il.json                   |  419 ++++++++++++++++
 data/osk-layouts/in+bolnagri.json          |  439 +++++++++++++++++
 data/osk-layouts/ir.json                   |  495 +++++++++++++++++++
 data/osk-layouts/is.json                   |  583 +++++++++++++++++++++++
 data/osk-layouts/it.json                   |  580 +++++++++++++++++++++++
 data/osk-layouts/ke.json                   |  577 ++++++++++++++++++++++
 data/osk-layouts/kg.json                   |  547 +++++++++++++++++++++
 data/osk-layouts/kh.json                   |  481 +++++++++++++++++++
 data/osk-layouts/la.json                   |  472 ++++++++++++++++++
 data/osk-layouts/latam.json                |  603 +++++++++++++++++++++++
 data/osk-layouts/lt.json                   |  647 +++++++++++++++++++++++++
 data/osk-layouts/lv.json                   |  645 +++++++++++++++++++++++++
 data/osk-layouts/mk.json                   |  541 +++++++++++++++++++++
 data/osk-layouts/mn.json                   |  547 +++++++++++++++++++++
 data/osk-layouts/my.json                   |  507 ++++++++++++++++++++
 data/osk-layouts/nl.json                   |  584 +++++++++++++++++++++++
 data/osk-layouts/no.json                   |  507 ++++++++++++++++++++
 data/osk-layouts/ph.json                   |  507 ++++++++++++++++++++
 data/osk-layouts/pl.json                   |  579 ++++++++++++++++++++++
 data/osk-layouts/pt.json                   |  584 +++++++++++++++++++++++
 data/osk-layouts/ro.json                   |  547 +++++++++++++++++++++
 data/osk-layouts/rs.json                   |  541 +++++++++++++++++++++
 data/osk-layouts/ru.json                   |  541 +++++++++++++++++++++
 data/osk-layouts/se.json                   |  624 ++++++++++++++++++++++++
 data/osk-layouts/si.json                   |  518 ++++++++++++++++++++
 data/osk-layouts/sk.json                   |  648 +++++++++++++++++++++++++
 data/osk-layouts/th.json                   |  472 ++++++++++++++++++
 data/osk-layouts/tr.json                   |  566 ++++++++++++++++++++++
 data/osk-layouts/ua.json                   |  545 +++++++++++++++++++++
 data/osk-layouts/uk.json                   |  576 ++++++++++++++++++++++
 data/osk-layouts/us.json                   |  575 ++++++++++++++++++++++
 data/osk-layouts/vn.json                   |  643 +++++++++++++++++++++++++
 data/osk-layouts/za.json                   |  589 +++++++++++++++++++++++
 54 files changed, 29122 insertions(+), 0 deletions(-)
---
diff --git a/data/gnome-shell-osk-layouts.gresource.xml b/data/gnome-shell-osk-layouts.gresource.xml
new file mode 100644
index 0000000..86d6cb9
--- /dev/null
+++ b/data/gnome-shell-osk-layouts.gresource.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gnome/shell/osk-layouts">
+    <file>am.json</file>
+    <file>ara.json</file>
+    <file>be.json</file>
+    <file>bg.json</file>
+    <file>by.json</file>
+    <file>cz.json</file>
+    <file>de.json</file>
+    <file>dk.json</file>
+    <file>ee.json</file>
+    <file>epo.json</file>
+    <file>es+cat.json</file>
+    <file>es.json</file>
+    <file>fi.json</file>
+    <file>fr.json</file>
+    <file>ge.json</file>
+    <file>gr.json</file>
+    <file>hr.json</file>
+    <file>hu.json</file>
+    <file>id.json</file>
+    <file>il.json</file>
+    <file>in+bolnagri.json</file>
+    <file>ir.json</file>
+    <file>is.json</file>
+    <file>it.json</file>
+    <file>ke.json</file>
+    <file>kg.json</file>
+    <file>kh.json</file>
+    <file>la.json</file>
+    <file>latam.json</file>
+    <file>lt.json</file>
+    <file>lv.json</file>
+    <file>mk.json</file>
+    <file>mn.json</file>
+    <file>my.json</file>
+    <file>nl.json</file>
+    <file>no.json</file>
+    <file>ph.json</file>
+    <file>pl.json</file>
+    <file>pt.json</file>
+    <file>ro.json</file>
+    <file>rs.json</file>
+    <file>ru.json</file>
+    <file>se.json</file>
+    <file>si.json</file>
+    <file>sk.json</file>
+    <file>th.json</file>
+    <file>tr.json</file>
+    <file>ua.json</file>
+    <file>uk.json</file>
+    <file>us.json</file>
+    <file>vn.json</file>
+    <file>za.json</file>
+  </gresource>
+</gresources>
diff --git a/data/meson.build b/data/meson.build
index 032e3f0..7c98077 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -62,6 +62,14 @@ theme_resources = gnome.compile_resources(
   install_dir: pkgdatadir
 )
 
+osk_layout_resources = gnome.compile_resources(
+  'gnome-shell-osk-layouts', 'gnome-shell-osk-layouts.gresource.xml',
+  source_dir: 'osk-layouts',
+  gresource_bundle: true,
+  install: true,
+  install_dir: pkgdatadir
+)
+
 perfconf = configuration_data()
 perfconf.set('datadir', datadir)
 configure_file(
diff --git a/data/osk-layouts/am.json b/data/osk-layouts/am.json
new file mode 100644
index 0000000..23c86ba
--- /dev/null
+++ b/data/osk-layouts/am.json
@@ -0,0 +1,599 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "է"
+          ],
+          [
+            "թ"
+          ],
+          [
+            "փ"
+          ],
+          [
+            "ձ"
+          ],
+          [
+            "ջ"
+          ],
+          [
+            "ր"
+          ],
+          [
+            "չ"
+          ],
+          [
+            "ճ"
+          ],
+          [
+            "ժ"
+          ],
+          [
+            "ծ"
+          ]
+        ],
+        [
+          [
+            "ք"
+          ],
+          [
+            "ո"
+          ],
+          [
+            "ե",
+            "և"
+          ],
+          [
+            "ռ"
+          ],
+          [
+            "տ"
+          ],
+          [
+            "ը"
+          ],
+          [
+            "ւ"
+          ],
+          [
+            "ի"
+          ],
+          [
+            "օ"
+          ],
+          [
+            "պ"
+          ]
+        ],
+        [
+          [
+            "ա"
+          ],
+          [
+            "ս"
+          ],
+          [
+            "դ"
+          ],
+          [
+            "ֆ"
+          ],
+          [
+            "գ"
+          ],
+          [
+            "հ"
+          ],
+          [
+            "յ"
+          ],
+          [
+            "կ"
+          ],
+          [
+            "լ"
+          ],
+          [
+            "խ"
+          ]
+        ],
+        [
+          [
+            "զ"
+          ],
+          [
+            "ղ"
+          ],
+          [
+            "ց"
+          ],
+          [
+            "վ"
+          ],
+          [
+            "բ"
+          ],
+          [
+            "ն"
+          ],
+          [
+            "մ"
+          ],
+          [
+            "շ"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            "։"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Է"
+          ],
+          [
+            "Թ"
+          ],
+          [
+            "Փ"
+          ],
+          [
+            "Ձ"
+          ],
+          [
+            "Ջ"
+          ],
+          [
+            "Ր"
+          ],
+          [
+            "Չ"
+          ],
+          [
+            "Ճ"
+          ],
+          [
+            "Ժ"
+          ],
+          [
+            "Ծ"
+          ]
+        ],
+        [
+          [
+            "Ք"
+          ],
+          [
+            "Ո"
+          ],
+          [
+            "Ե",
+            "ԵՒ"
+          ],
+          [
+            "Ռ"
+          ],
+          [
+            "Տ"
+          ],
+          [
+            "Ը"
+          ],
+          [
+            "Ւ"
+          ],
+          [
+            "Ի"
+          ],
+          [
+            "Օ"
+          ],
+          [
+            "Պ"
+          ]
+        ],
+        [
+          [
+            "Ա"
+          ],
+          [
+            "Ս"
+          ],
+          [
+            "Դ"
+          ],
+          [
+            "Ֆ"
+          ],
+          [
+            "Գ"
+          ],
+          [
+            "Հ"
+          ],
+          [
+            "Յ"
+          ],
+          [
+            "Կ"
+          ],
+          [
+            "Լ"
+          ],
+          [
+            "Խ"
+          ]
+        ],
+        [
+          [
+            "Զ"
+          ],
+          [
+            "Ղ"
+          ],
+          [
+            "Ց"
+          ],
+          [
+            "Վ"
+          ],
+          [
+            "Բ"
+          ],
+          [
+            "Ն"
+          ],
+          [
+            "Մ"
+          ],
+          [
+            "Շ"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            "։"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "՜",
+            "¡"
+          ],
+          [
+            "?",
+            "՞",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            "՝"
+          ],
+          [
+            "։",
+            "!",
+            "?",
+            ",",
+            ".",
+            "֊",
+            "՜",
+            "՝",
+            "՞",
+            ":",
+            ";",
+            "@",
+            "ՙ",
+            "՚",
+            "՛",
+            "՟"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            "՝"
+          ],
+          [
+            "։",
+            "!",
+            "?",
+            ",",
+            ".",
+            "֊",
+            "՜",
+            "՝",
+            "՞",
+            ":",
+            ";",
+            "@",
+            "ՙ",
+            "՚",
+            "՛",
+            "՟"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "hy",
+  "name": "Armenian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ara.json b/data/osk-layouts/ara.json
new file mode 100644
index 0000000..0a4900c
--- /dev/null
+++ b/data/osk-layouts/ara.json
@@ -0,0 +1,488 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "ض"
+          ],
+          [
+            "ص"
+          ],
+          [
+            "ث"
+          ],
+          [
+            "ق",
+            "ڨ"
+          ],
+          [
+            "ف",
+            "ڤ",
+            "ڢ",
+            "ڥ"
+          ],
+          [
+            "غ"
+          ],
+          [
+            "ع"
+          ],
+          [
+            "ه",
+            "ه‍"
+          ],
+          [
+            "خ"
+          ],
+          [
+            "ح"
+          ],
+          [
+            "ج",
+            "چ"
+          ]
+        ],
+        [
+          [
+            "ش",
+            "ڜ"
+          ],
+          [
+            "س"
+          ],
+          [
+            "ي",
+            "ئ",
+            "ى"
+          ],
+          [
+            "ب",
+            "پ"
+          ],
+          [
+            "ل",
+            "لا",
+            "لأ",
+            "لإ",
+            "لآ"
+          ],
+          [
+            "ا",
+            "آ",
+            "ء",
+            "أ",
+            "إ",
+            "ٱ"
+          ],
+          [
+            "ت"
+          ],
+          [
+            "ن"
+          ],
+          [
+            "م"
+          ],
+          [
+            "ك",
+            "گ",
+            "ک"
+          ],
+          [
+            "ط"
+          ]
+        ],
+        [
+          [
+            "ذ"
+          ],
+          [
+            "ء"
+          ],
+          [
+            "ؤ"
+          ],
+          [
+            "ر"
+          ],
+          [
+            "ى",
+            "ئ"
+          ],
+          [
+            "ة"
+          ],
+          [
+            "و"
+          ],
+          [
+            "ز",
+            "ژ"
+          ],
+          [
+            "ظ"
+          ],
+          [
+            "د"
+          ]
+        ],
+        [
+          [
+            "،"
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "\"",
+            "'",
+            "#",
+            "-",
+            ":",
+            "!",
+            "،",
+            "؟",
+            "@",
+            "&",
+            "%",
+            "+",
+            "؛",
+            "/",
+            ")",
+            "("
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "١",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "٢",
+            "²",
+            "⅔"
+          ],
+          [
+            "٣",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "٤",
+            "⁴"
+          ],
+          [
+            "٥",
+            "⅝"
+          ],
+          [
+            "٦"
+          ],
+          [
+            "٧",
+            "⅞"
+          ],
+          [
+            "٨"
+          ],
+          [
+            "٩"
+          ],
+          [
+            "٠",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "٪",
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "﴿",
+            ">",
+            "}",
+            "]"
+          ],
+          [
+            ")",
+            "﴾",
+            "<",
+            "{",
+            "["
+          ]
+        ],
+        [
+          [
+            "*",
+            "★",
+            "٭"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            "؛",
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "؟",
+            "?"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            "،",
+            "؟",
+            "؛",
+            "!",
+            ":",
+            "-",
+            "/",
+            "'",
+            "\""
+          ],
+          [
+            ".",
+            "ٕ",
+            "ٔ",
+            "ْ",
+            "ٍ",
+            "ٌ",
+            "ً",
+            "ّ",
+            "ٖ",
+            "ٰ",
+            "ٓ",
+            "ِ",
+            "ُ",
+            "َ",
+            "ـ"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            ">",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            " "
+          ],
+          [
+            "،",
+            "؟",
+            "؛",
+            "!",
+            ":",
+            "-",
+            "/",
+            "'",
+            "\""
+          ],
+          [
+            ".",
+            "ٕ",
+            "ٔ",
+            "ْ",
+            "ٍ",
+            "ٌ",
+            "ً",
+            "ّ",
+            "ٖ",
+            "ٰ",
+            "ٓ",
+            "ِ",
+            "ُ",
+            "َ",
+            "ـ"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "ar",
+  "name": "Arabic"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/be.json b/data/osk-layouts/be.json
new file mode 100644
index 0000000..2427916
--- /dev/null
+++ b/data/osk-layouts/be.json
@@ -0,0 +1,584 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "ë",
+            "ê",
+            "è",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y",
+            "ij"
+          ],
+          [
+            "u",
+            "ú",
+            "ü",
+            "û",
+            "ù",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "ï",
+            "ì",
+            "î",
+            "į",
+            "ī",
+            "ij"
+          ],
+          [
+            "o",
+            "ó",
+            "ö",
+            "ô",
+            "ò",
+            "õ",
+            "œ",
+            "ø",
+            "ō"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "ä",
+            "â",
+            "à",
+            "æ",
+            "ã",
+            "å",
+            "ā"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "Ë",
+            "Ê",
+            "È",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y",
+            "IJ"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ü",
+            "Û",
+            "Ù",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Ï",
+            "Ì",
+            "Î",
+            "Į",
+            "Ī",
+            "IJ"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ö",
+            "Ô",
+            "Ò",
+            "Õ",
+            "Œ",
+            "Ø",
+            "Ō"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "Ä",
+            "Â",
+            "À",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "nl-BE",
+  "name": "Dutch (Belgium)"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/bg.json b/data/osk-layouts/bg.json
new file mode 100644
index 0000000..5c8528f
--- /dev/null
+++ b/data/osk-layouts/bg.json
@@ -0,0 +1,533 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "я"
+          ],
+          [
+            "в"
+          ],
+          [
+            "е"
+          ],
+          [
+            "р"
+          ],
+          [
+            "т"
+          ],
+          [
+            "ъ"
+          ],
+          [
+            "у"
+          ],
+          [
+            "и",
+            "ѝ"
+          ],
+          [
+            "о"
+          ],
+          [
+            "п"
+          ],
+          [
+            "ч"
+          ]
+        ],
+        [
+          [
+            "а"
+          ],
+          [
+            "с"
+          ],
+          [
+            "д"
+          ],
+          [
+            "ф"
+          ],
+          [
+            "г"
+          ],
+          [
+            "х"
+          ],
+          [
+            "й"
+          ],
+          [
+            "к"
+          ],
+          [
+            "л"
+          ],
+          [
+            "ш"
+          ],
+          [
+            "щ"
+          ]
+        ],
+        [
+          [
+            "з"
+          ],
+          [
+            "ь"
+          ],
+          [
+            "ц"
+          ],
+          [
+            "ж"
+          ],
+          [
+            "б"
+          ],
+          [
+            "н"
+          ],
+          [
+            "м"
+          ],
+          [
+            "ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Я"
+          ],
+          [
+            "В"
+          ],
+          [
+            "Е"
+          ],
+          [
+            "Р"
+          ],
+          [
+            "Т"
+          ],
+          [
+            "Ъ"
+          ],
+          [
+            "У"
+          ],
+          [
+            "И",
+            "Ѝ"
+          ],
+          [
+            "О"
+          ],
+          [
+            "П"
+          ],
+          [
+            "Ч"
+          ]
+        ],
+        [
+          [
+            "А"
+          ],
+          [
+            "С"
+          ],
+          [
+            "Д"
+          ],
+          [
+            "Ф"
+          ],
+          [
+            "Г"
+          ],
+          [
+            "Х"
+          ],
+          [
+            "Й"
+          ],
+          [
+            "К"
+          ],
+          [
+            "Л"
+          ],
+          [
+            "Ш"
+          ],
+          [
+            "Щ"
+          ]
+        ],
+        [
+          [
+            "З"
+          ],
+          [
+            "Ь"
+          ],
+          [
+            "Ц"
+          ],
+          [
+            "Ж"
+          ],
+          [
+            "Б"
+          ],
+          [
+            "Н"
+          ],
+          [
+            "М"
+          ],
+          [
+            "Ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "bg",
+  "name": "Bulgarian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/by.json b/data/osk-layouts/by.json
new file mode 100644
index 0000000..1f98cd2
--- /dev/null
+++ b/data/osk-layouts/by.json
@@ -0,0 +1,541 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "й"
+          ],
+          [
+            "ц"
+          ],
+          [
+            "у"
+          ],
+          [
+            "к"
+          ],
+          [
+            "е",
+            "ё"
+          ],
+          [
+            "н"
+          ],
+          [
+            "г"
+          ],
+          [
+            "ш"
+          ],
+          [
+            "ў"
+          ],
+          [
+            "з"
+          ],
+          [
+            "х"
+          ]
+        ],
+        [
+          [
+            "ф"
+          ],
+          [
+            "ы"
+          ],
+          [
+            "в"
+          ],
+          [
+            "а"
+          ],
+          [
+            "п"
+          ],
+          [
+            "р"
+          ],
+          [
+            "о"
+          ],
+          [
+            "л"
+          ],
+          [
+            "д"
+          ],
+          [
+            "ж"
+          ],
+          [
+            "э"
+          ]
+        ],
+        [
+          [
+            "я"
+          ],
+          [
+            "ч"
+          ],
+          [
+            "с"
+          ],
+          [
+            "м"
+          ],
+          [
+            "і"
+          ],
+          [
+            "т"
+          ],
+          [
+            "ь",
+            "ъ"
+          ],
+          [
+            "б"
+          ],
+          [
+            "ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Й"
+          ],
+          [
+            "Ц"
+          ],
+          [
+            "У"
+          ],
+          [
+            "К"
+          ],
+          [
+            "Е",
+            "Ё"
+          ],
+          [
+            "Н"
+          ],
+          [
+            "Г"
+          ],
+          [
+            "Ш"
+          ],
+          [
+            "Ў"
+          ],
+          [
+            "З"
+          ],
+          [
+            "Х"
+          ]
+        ],
+        [
+          [
+            "Ф"
+          ],
+          [
+            "Ы"
+          ],
+          [
+            "В"
+          ],
+          [
+            "А"
+          ],
+          [
+            "П"
+          ],
+          [
+            "Р"
+          ],
+          [
+            "О"
+          ],
+          [
+            "Л"
+          ],
+          [
+            "Д"
+          ],
+          [
+            "Ж"
+          ],
+          [
+            "Э"
+          ]
+        ],
+        [
+          [
+            "Я"
+          ],
+          [
+            "Ч"
+          ],
+          [
+            "С"
+          ],
+          [
+            "М"
+          ],
+          [
+            "І"
+          ],
+          [
+            "Т"
+          ],
+          [
+            "Ь",
+            "Ъ"
+          ],
+          [
+            "Б"
+          ],
+          [
+            "Ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "be",
+  "name": "Belarusian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/cz.json b/data/osk-layouts/cz.json
new file mode 100644
index 0000000..9bad074
--- /dev/null
+++ b/data/osk-layouts/cz.json
@@ -0,0 +1,613 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "ě",
+            "è",
+            "ê",
+            "ë",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r",
+            "ř"
+          ],
+          [
+            "t",
+            "ť"
+          ],
+          [
+            "z",
+            "ž",
+            "ź",
+            "ż"
+          ],
+          [
+            "u",
+            "ú",
+            "ů",
+            "û",
+            "ü",
+            "ù",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "î",
+            "ï",
+            "ì",
+            "į",
+            "ī"
+          ],
+          [
+            "o",
+            "ó",
+            "ö",
+            "ô",
+            "ò",
+            "õ",
+            "œ",
+            "ø",
+            "ō"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "à",
+            "â",
+            "ä",
+            "æ",
+            "ã",
+            "å",
+            "ā"
+          ],
+          [
+            "s",
+            "š",
+            "ß",
+            "ś"
+          ],
+          [
+            "d",
+            "ď"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "y",
+            "ý",
+            "ÿ"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "č",
+            "ç",
+            "ć"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ň",
+            "ñ",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "Ě",
+            "È",
+            "Ê",
+            "Ë",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R",
+            "Ř"
+          ],
+          [
+            "T",
+            "Ť"
+          ],
+          [
+            "Z",
+            "Ž",
+            "Ź",
+            "Ż"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ů",
+            "Û",
+            "Ü",
+            "Ù",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Î",
+            "Ï",
+            "Ì",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ö",
+            "Ô",
+            "Ò",
+            "Õ",
+            "Œ",
+            "Ø",
+            "Ō"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "À",
+            "Â",
+            "Ä",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S",
+            "Š",
+            "SS",
+            "Ś"
+          ],
+          [
+            "D",
+            "Ď"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Y",
+            "Ý",
+            "Ÿ"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Č",
+            "Ç",
+            "Ć"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ň",
+            "Ñ",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "cs",
+  "name": "Czech"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/de.json b/data/osk-layouts/de.json
new file mode 100644
index 0000000..751a856
--- /dev/null
+++ b/data/osk-layouts/de.json
@@ -0,0 +1,570 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "è",
+            "ê",
+            "ë",
+            "ė"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "z"
+          ],
+          [
+            "u",
+            "ü",
+            "û",
+            "ù",
+            "ú",
+            "ū"
+          ],
+          [
+            "i"
+          ],
+          [
+            "o",
+            "ö",
+            "ô",
+            "ò",
+            "ó",
+            "õ",
+            "œ",
+            "ø",
+            "ō"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "ä",
+            "â",
+            "à",
+            "á",
+            "æ",
+            "ã",
+            "å",
+            "ā"
+          ],
+          [
+            "s",
+            "ß",
+            "ś",
+            "š"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "y"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "È",
+            "Ê",
+            "Ë",
+            "Ė"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Z"
+          ],
+          [
+            "U",
+            "Ü",
+            "Û",
+            "Ù",
+            "Ú",
+            "Ū"
+          ],
+          [
+            "I"
+          ],
+          [
+            "O",
+            "Ö",
+            "Ô",
+            "Ò",
+            "Ó",
+            "Õ",
+            "Œ",
+            "Ø",
+            "Ō"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Ä",
+            "Â",
+            "À",
+            "Á",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S",
+            "SS",
+            "Ś",
+            "Š"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Y"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "de",
+  "name": "German"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/dk.json b/data/osk-layouts/dk.json
new file mode 100644
index 0000000..80df9ae
--- /dev/null
+++ b/data/osk-layouts/dk.json
@@ -0,0 +1,590 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "ë"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y",
+            "ý",
+            "ÿ"
+          ],
+          [
+            "u",
+            "ú",
+            "ü",
+            "û",
+            "ù",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "ï"
+          ],
+          [
+            "o",
+            "ó",
+            "ô",
+            "ò",
+            "õ",
+            "œ",
+            "ō"
+          ],
+          [
+            "p"
+          ],
+          [
+            "å"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "ä",
+            "à",
+            "â",
+            "ã",
+            "ā"
+          ],
+          [
+            "s",
+            "ß",
+            "ś",
+            "š"
+          ],
+          [
+            "d",
+            "ð"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l",
+            "ł"
+          ],
+          [
+            "æ",
+            "ä"
+          ],
+          [
+            "ø",
+            "ö"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "Ë"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y",
+            "Ý",
+            "Ÿ"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ü",
+            "Û",
+            "Ù",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Ï"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ô",
+            "Ò",
+            "Õ",
+            "Œ",
+            "Ō"
+          ],
+          [
+            "P"
+          ],
+          [
+            "Å"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "Ä",
+            "À",
+            "Â",
+            "Ã",
+            "Ā"
+          ],
+          [
+            "S",
+            "SS",
+            "Ś",
+            "Š"
+          ],
+          [
+            "D",
+            "Ð"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L",
+            "Ł"
+          ],
+          [
+            "Æ",
+            "Ä"
+          ],
+          [
+            "Ø",
+            "Ö"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "da",
+  "name": "Danish"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ee.json b/data/osk-layouts/ee.json
new file mode 100644
index 0000000..5fd2f11
--- /dev/null
+++ b/data/osk-layouts/ee.json
@@ -0,0 +1,666 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "ē",
+            "è",
+            "ė",
+            "é",
+            "ê",
+            "ë",
+            "ę",
+            "ě"
+          ],
+          [
+            "r",
+            "ŗ",
+            "ř",
+            "ŕ"
+          ],
+          [
+            "t",
+            "ţ",
+            "ť"
+          ],
+          [
+            "y",
+            "ý",
+            "ÿ"
+          ],
+          [
+            "u",
+            "ü",
+            "ū",
+            "ų",
+            "ù",
+            "ú",
+            "û",
+            "ů",
+            "ű"
+          ],
+          [
+            "i",
+            "ī",
+            "ì",
+            "į",
+            "í",
+            "î",
+            "ï",
+            "ı"
+          ],
+          [
+            "o",
+            "ö",
+            "õ",
+            "ò",
+            "ó",
+            "ô",
+            "œ",
+            "ő",
+            "ø"
+          ],
+          [
+            "p"
+          ],
+          [
+            "ü"
+          ]
+        ],
+        [
+          [
+            "a",
+            "ä",
+            "ā",
+            "à",
+            "á",
+            "â",
+            "ã",
+            "å",
+            "æ",
+            "ą"
+          ],
+          [
+            "s",
+            "š",
+            "ß",
+            "ś",
+            "ş"
+          ],
+          [
+            "d",
+            "ď"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g",
+            "ģ",
+            "ğ"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k",
+            "ķ"
+          ],
+          [
+            "l",
+            "ļ",
+            "ł",
+            "ĺ",
+            "ľ"
+          ],
+          [
+            "ö",
+            "õ"
+          ],
+          [
+            "ä"
+          ]
+        ],
+        [
+          [
+            "z",
+            "ž",
+            "ż",
+            "ź"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "č",
+            "ç",
+            "ć"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ņ",
+            "ñ",
+            "ń",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "Ē",
+            "È",
+            "Ė",
+            "É",
+            "Ê",
+            "Ë",
+            "Ę",
+            "Ě"
+          ],
+          [
+            "R",
+            "Ŗ",
+            "Ř",
+            "Ŕ"
+          ],
+          [
+            "T",
+            "Ţ",
+            "Ť"
+          ],
+          [
+            "Y",
+            "Ý",
+            "Ÿ"
+          ],
+          [
+            "U",
+            "Ü",
+            "Ū",
+            "Ų",
+            "Ù",
+            "Ú",
+            "Û",
+            "Ů",
+            "Ű"
+          ],
+          [
+            "I",
+            "Ī",
+            "Ì",
+            "Į",
+            "Í",
+            "Î",
+            "Ï",
+            "I"
+          ],
+          [
+            "O",
+            "Ö",
+            "Õ",
+            "Ò",
+            "Ó",
+            "Ô",
+            "Œ",
+            "Ő",
+            "Ø"
+          ],
+          [
+            "P"
+          ],
+          [
+            "Ü"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Ä",
+            "Ā",
+            "À",
+            "Á",
+            "Â",
+            "Ã",
+            "Å",
+            "Æ",
+            "Ą"
+          ],
+          [
+            "S",
+            "Š",
+            "SS",
+            "Ś",
+            "Ş"
+          ],
+          [
+            "D",
+            "Ď"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G",
+            "Ģ",
+            "Ğ"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K",
+            "Ķ"
+          ],
+          [
+            "L",
+            "Ļ",
+            "Ł",
+            "Ĺ",
+            "Ľ"
+          ],
+          [
+            "Ö",
+            "Õ"
+          ],
+          [
+            "Ä"
+          ]
+        ],
+        [
+          [
+            "Z",
+            "Ž",
+            "Ż",
+            "Ź"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Č",
+            "Ç",
+            "Ć"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ņ",
+            "Ñ",
+            "Ń",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "et",
+  "name": "Estonian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/epo.json b/data/osk-layouts/epo.json
new file mode 100644
index 0000000..71f9ef8
--- /dev/null
+++ b/data/osk-layouts/epo.json
@@ -0,0 +1,711 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "ŝ",
+            "q"
+          ],
+          [
+            "ĝ",
+            "w",
+            "ŵ"
+          ],
+          [
+            "e",
+            "é",
+            "ě",
+            "è",
+            "ê",
+            "ë",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r",
+            "ř",
+            "ŕ",
+            "ŗ"
+          ],
+          [
+            "t",
+            "ť",
+            "ț",
+            "ţ",
+            "ŧ"
+          ],
+          [
+            "ŭ",
+            "y",
+            "ý",
+            "ŷ",
+            "ÿ",
+            "þ"
+          ],
+          [
+            "u",
+            "ú",
+            "ů",
+            "û",
+            "ü",
+            "ù",
+            "ū",
+            "ũ",
+            "ű",
+            "ų",
+            "µ"
+          ],
+          [
+            "i",
+            "í",
+            "î",
+            "ï",
+            "ĩ",
+            "ì",
+            "į",
+            "ī",
+            "ı",
+            "ij"
+          ],
+          [
+            "o",
+            "ó",
+            "ö",
+            "ô",
+            "ò",
+            "õ",
+            "œ",
+            "ø",
+            "ō",
+            "ő",
+            "º"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "à",
+            "â",
+            "ä",
+            "æ",
+            "ã",
+            "å",
+            "ā",
+            "ă",
+            "ą",
+            "ª"
+          ],
+          [
+            "s",
+            "ß",
+            "š",
+            "ś",
+            "ș",
+            "ş"
+          ],
+          [
+            "d",
+            "ð",
+            "ď",
+            "đ"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g",
+            "ğ",
+            "ġ",
+            "ģ"
+          ],
+          [
+            "h",
+            "ĥ",
+            "ħ"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k",
+            "ķ",
+            "ĸ"
+          ],
+          [
+            "l",
+            "ĺ",
+            "ļ",
+            "ľ",
+            "ŀ",
+            "ł"
+          ],
+          [
+            "ĵ"
+          ]
+        ],
+        [
+          [
+            "z",
+            "ź",
+            "ż",
+            "ž"
+          ],
+          [
+            "ĉ",
+            "x"
+          ],
+          [
+            "c",
+            "ć",
+            "č",
+            "ç",
+            "ċ"
+          ],
+          [
+            "v",
+            "w",
+            "ŵ"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ",
+            "ń",
+            "ņ",
+            "ň",
+            "ʼn",
+            "ŋ"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Ŝ",
+            "Q"
+          ],
+          [
+            "Ĝ",
+            "W",
+            "Ŵ"
+          ],
+          [
+            "E",
+            "É",
+            "Ě",
+            "È",
+            "Ê",
+            "Ë",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R",
+            "Ř",
+            "Ŕ",
+            "Ŗ"
+          ],
+          [
+            "T",
+            "Ť",
+            "Ț",
+            "Ţ",
+            "Ŧ"
+          ],
+          [
+            "Ŭ",
+            "Y",
+            "Ý",
+            "Ŷ",
+            "Ÿ",
+            "Þ"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ů",
+            "Û",
+            "Ü",
+            "Ù",
+            "Ū",
+            "Ũ",
+            "Ű",
+            "Ų",
+            "Μ"
+          ],
+          [
+            "I",
+            "Í",
+            "Î",
+            "Ï",
+            "Ĩ",
+            "Ì",
+            "Į",
+            "Ī",
+            "I",
+            "IJ"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ö",
+            "Ô",
+            "Ò",
+            "Õ",
+            "Œ",
+            "Ø",
+            "Ō",
+            "Ő",
+            "º"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "À",
+            "Â",
+            "Ä",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā",
+            "Ă",
+            "Ą",
+            "ª"
+          ],
+          [
+            "S",
+            "SS",
+            "Š",
+            "Ś",
+            "Ș",
+            "Ş"
+          ],
+          [
+            "D",
+            "Ð",
+            "Ď",
+            "Đ"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G",
+            "Ğ",
+            "Ġ",
+            "Ģ"
+          ],
+          [
+            "H",
+            "Ĥ",
+            "Ħ"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K",
+            "Ķ",
+            "ĸ"
+          ],
+          [
+            "L",
+            "Ĺ",
+            "Ļ",
+            "Ľ",
+            "Ŀ",
+            "Ł"
+          ],
+          [
+            "Ĵ"
+          ]
+        ],
+        [
+          [
+            "Z",
+            "Ź",
+            "Ż",
+            "Ž"
+          ],
+          [
+            "Ĉ",
+            "X"
+          ],
+          [
+            "C",
+            "Ć",
+            "Č",
+            "Ç",
+            "Ċ"
+          ],
+          [
+            "V",
+            "W",
+            "Ŵ"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ",
+            "Ń",
+            "Ņ",
+            "Ň",
+            "ʼN",
+            "Ŋ"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "eo",
+  "name": "Esperanto"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/es+cat.json b/data/osk-layouts/es+cat.json
new file mode 100644
index 0000000..d0bd125
--- /dev/null
+++ b/data/osk-layouts/es+cat.json
@@ -0,0 +1,602 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "è",
+            "é",
+            "ë",
+            "ê",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u",
+            "ú",
+            "ü",
+            "ù",
+            "û",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "ï",
+            "ì",
+            "î",
+            "į",
+            "ī"
+          ],
+          [
+            "o",
+            "ò",
+            "ó",
+            "ö",
+            "ô",
+            "õ",
+            "ø",
+            "œ",
+            "ō",
+            "º"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "à",
+            "á",
+            "ä",
+            "â",
+            "ã",
+            "å",
+            "ą",
+            "æ",
+            "ā",
+            "ª"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l",
+            "l·l",
+            "ł"
+          ],
+          [
+            "ç"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ç",
+            "ć",
+            "č"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "·",
+            "!",
+            ",",
+            "?",
+            ":",
+            ";",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "È",
+            "É",
+            "Ë",
+            "Ê",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ü",
+            "Ù",
+            "Û",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Ï",
+            "Ì",
+            "Î",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O",
+            "Ò",
+            "Ó",
+            "Ö",
+            "Ô",
+            "Õ",
+            "Ø",
+            "Œ",
+            "Ō",
+            "º"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "À",
+            "Á",
+            "Ä",
+            "Â",
+            "Ã",
+            "Å",
+            "Ą",
+            "Æ",
+            "Ā",
+            "ª"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L",
+            "L·L",
+            "Ł"
+          ],
+          [
+            "Ç"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ç",
+            "Ć",
+            "Č"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "·",
+            "!",
+            ",",
+            "?",
+            ":",
+            ";",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "?",
+            "·"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "?",
+            "·"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "ca",
+  "name": "Catalan"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/es.json b/data/osk-layouts/es.json
new file mode 100644
index 0000000..0bb5d72
--- /dev/null
+++ b/data/osk-layouts/es.json
@@ -0,0 +1,604 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "è",
+            "ë",
+            "ê",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u",
+            "ú",
+            "ü",
+            "ù",
+            "û",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "ï",
+            "ì",
+            "î",
+            "į",
+            "ī"
+          ],
+          [
+            "o",
+            "ó",
+            "ò",
+            "ö",
+            "ô",
+            "õ",
+            "ø",
+            "œ",
+            "ō",
+            "º"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "à",
+            "ä",
+            "â",
+            "ã",
+            "å",
+            "ą",
+            "æ",
+            "ā",
+            "ª"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ],
+          [
+            "ñ"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ç",
+            "ć",
+            "č"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            ";",
+            "!",
+            ",",
+            "?",
+            ":",
+            "¡",
+            "@",
+            "¿"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "È",
+            "Ë",
+            "Ê",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ü",
+            "Ù",
+            "Û",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Ï",
+            "Ì",
+            "Î",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ò",
+            "Ö",
+            "Ô",
+            "Õ",
+            "Ø",
+            "Œ",
+            "Ō",
+            "º"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "À",
+            "Ä",
+            "Â",
+            "Ã",
+            "Å",
+            "Ą",
+            "Æ",
+            "Ā",
+            "ª"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ],
+          [
+            "Ñ"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ç",
+            "Ć",
+            "Č"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            ";",
+            "!",
+            ",",
+            "?",
+            ":",
+            "¡",
+            "@",
+            "¿"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ",",
+            "!",
+            "¡"
+          ],
+          [
+            ".",
+            "?",
+            "¿"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ",",
+            "!",
+            "¡"
+          ],
+          [
+            ".",
+            "?",
+            "¿"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "es",
+  "name": "Spanish"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/fi.json b/data/osk-layouts/fi.json
new file mode 100644
index 0000000..3ba5b56
--- /dev/null
+++ b/data/osk-layouts/fi.json
@@ -0,0 +1,570 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u",
+            "ü"
+          ],
+          [
+            "i"
+          ],
+          [
+            "o",
+            "ø",
+            "ô",
+            "ò",
+            "ó",
+            "õ",
+            "œ",
+            "ō"
+          ],
+          [
+            "p"
+          ],
+          [
+            "å"
+          ]
+        ],
+        [
+          [
+            "a",
+            "æ",
+            "à",
+            "á",
+            "â",
+            "ã",
+            "ā"
+          ],
+          [
+            "s",
+            "š",
+            "ß",
+            "ś"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ],
+          [
+            "ö",
+            "ø"
+          ],
+          [
+            "ä",
+            "æ"
+          ]
+        ],
+        [
+          [
+            "z",
+            "ž",
+            "ź",
+            "ż"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U",
+            "Ü"
+          ],
+          [
+            "I"
+          ],
+          [
+            "O",
+            "Ø",
+            "Ô",
+            "Ò",
+            "Ó",
+            "Õ",
+            "Œ",
+            "Ō"
+          ],
+          [
+            "P"
+          ],
+          [
+            "Å"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Æ",
+            "À",
+            "Á",
+            "Â",
+            "Ã",
+            "Ā"
+          ],
+          [
+            "S",
+            "Š",
+            "SS",
+            "Ś"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ],
+          [
+            "Ö",
+            "Ø"
+          ],
+          [
+            "Ä",
+            "Æ"
+          ]
+        ],
+        [
+          [
+            "Z",
+            "Ž",
+            "Ź",
+            "Ż"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "fi",
+  "name": "Finnish"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/fr.json b/data/osk-layouts/fr.json
new file mode 100644
index 0000000..2b2bedc
--- /dev/null
+++ b/data/osk-layouts/fr.json
@@ -0,0 +1,599 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "è",
+            "ê",
+            "ë",
+            "%",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y",
+            "%",
+            "ÿ"
+          ],
+          [
+            "u",
+            "ù",
+            "û",
+            "%",
+            "ü",
+            "ú",
+            "ū"
+          ],
+          [
+            "i",
+            "î",
+            "%",
+            "ï",
+            "ì",
+            "í",
+            "į",
+            "ī"
+          ],
+          [
+            "o",
+            "ô",
+            "œ",
+            "%",
+            "ö",
+            "ò",
+            "ó",
+            "õ",
+            "ø",
+            "ō",
+            "º"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "à",
+            "â",
+            "%",
+            "æ",
+            "á",
+            "ä",
+            "ã",
+            "å",
+            "ā",
+            "ª"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ç",
+            "ć",
+            "č"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "È",
+            "Ê",
+            "Ë",
+            "%",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y",
+            "%",
+            "Ÿ"
+          ],
+          [
+            "U",
+            "Ù",
+            "Û",
+            "%",
+            "Ü",
+            "Ú",
+            "Ū"
+          ],
+          [
+            "I",
+            "Î",
+            "%",
+            "Ï",
+            "Ì",
+            "Í",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O",
+            "Ô",
+            "Œ",
+            "%",
+            "Ö",
+            "Ò",
+            "Ó",
+            "Õ",
+            "Ø",
+            "Ō",
+            "º"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "À",
+            "Â",
+            "%",
+            "Æ",
+            "Á",
+            "Ä",
+            "Ã",
+            "Å",
+            "Ā",
+            "ª"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ç",
+            "Ć",
+            "Č"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "fr-CA",
+  "name": "French Canada"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ge.json b/data/osk-layouts/ge.json
new file mode 100644
index 0000000..a94b3ba
--- /dev/null
+++ b/data/osk-layouts/ge.json
@@ -0,0 +1,409 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "ქ"
+          ],
+          [
+            "წ"
+          ],
+          [
+            "ე",
+            "ჱ"
+          ],
+          [
+            "რ"
+          ],
+          [
+            "ტ"
+          ],
+          [
+            "ყ",
+            "ჸ"
+          ],
+          [
+            "უ"
+          ],
+          [
+            "ი",
+            "ჲ"
+          ],
+          [
+            "ო"
+          ],
+          [
+            "პ"
+          ]
+        ],
+        [
+          [
+            "ა",
+            "ჺ"
+          ],
+          [
+            "ს"
+          ],
+          [
+            "დ"
+          ],
+          [
+            "ფ",
+            "ჶ"
+          ],
+          [
+            "გ",
+            "ჹ"
+          ],
+          [
+            "ჰ",
+            "ჵ"
+          ],
+          [
+            "ჯ",
+            "ჷ"
+          ],
+          [
+            "კ"
+          ],
+          [
+            "ლ"
+          ]
+        ],
+        [
+          [
+            "ზ"
+          ],
+          [
+            "ხ",
+            "ჴ"
+          ],
+          [
+            "ც"
+          ],
+          [
+            "ვ",
+            "ჳ"
+          ],
+          [
+            "ბ"
+          ],
+          [
+            "ნ",
+            "ჼ"
+          ],
+          [
+            "მ"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "ka",
+  "name": "Georgian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/gr.json b/data/osk-layouts/gr.json
new file mode 100644
index 0000000..b2337e5
--- /dev/null
+++ b/data/osk-layouts/gr.json
@@ -0,0 +1,532 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            ";",
+            ":"
+          ],
+          [
+            "ς"
+          ],
+          [
+            "ε",
+            "έ"
+          ],
+          [
+            "ρ"
+          ],
+          [
+            "τ"
+          ],
+          [
+            "υ",
+            "ύ",
+            "ϋ",
+            "ΰ"
+          ],
+          [
+            "θ"
+          ],
+          [
+            "ι",
+            "ί",
+            "ϊ",
+            "ΐ"
+          ],
+          [
+            "ο",
+            "ό"
+          ],
+          [
+            "π"
+          ]
+        ],
+        [
+          [
+            "α",
+            "ά"
+          ],
+          [
+            "σ"
+          ],
+          [
+            "δ"
+          ],
+          [
+            "φ"
+          ],
+          [
+            "γ"
+          ],
+          [
+            "η",
+            "ή"
+          ],
+          [
+            "ξ"
+          ],
+          [
+            "κ"
+          ],
+          [
+            "λ"
+          ]
+        ],
+        [
+          [
+            "ζ"
+          ],
+          [
+            "χ"
+          ],
+          [
+            "ψ"
+          ],
+          [
+            "ω",
+            "ώ"
+          ],
+          [
+            "β"
+          ],
+          [
+            "ν"
+          ],
+          [
+            "μ"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            ";",
+            ":"
+          ],
+          [
+            "Σ"
+          ],
+          [
+            "Ε",
+            "Έ"
+          ],
+          [
+            "Ρ"
+          ],
+          [
+            "Τ"
+          ],
+          [
+            "Υ",
+            "Ύ",
+            "Ϋ",
+            "Ϋ́"
+          ],
+          [
+            "Θ"
+          ],
+          [
+            "Ι",
+            "Ί",
+            "Ϊ",
+            "Ϊ́"
+          ],
+          [
+            "Ο",
+            "Ό"
+          ],
+          [
+            "Π"
+          ]
+        ],
+        [
+          [
+            "Α",
+            "Ά"
+          ],
+          [
+            "Σ"
+          ],
+          [
+            "Δ"
+          ],
+          [
+            "Φ"
+          ],
+          [
+            "Γ"
+          ],
+          [
+            "Η",
+            "Ή"
+          ],
+          [
+            "Ξ"
+          ],
+          [
+            "Κ"
+          ],
+          [
+            "Λ"
+          ]
+        ],
+        [
+          [
+            "Ζ"
+          ],
+          [
+            "Χ"
+          ],
+          [
+            "Ψ"
+          ],
+          [
+            "Ω",
+            "Ώ"
+          ],
+          [
+            "Β"
+          ],
+          [
+            "Ν"
+          ],
+          [
+            "Μ"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "el",
+  "name": "Greek"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/hr.json b/data/osk-layouts/hr.json
new file mode 100644
index 0000000..ff0d1d0
--- /dev/null
+++ b/data/osk-layouts/hr.json
@@ -0,0 +1,531 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "z",
+            "ž",
+            "ź",
+            "ż"
+          ],
+          [
+            "u"
+          ],
+          [
+            "i"
+          ],
+          [
+            "o"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a"
+          ],
+          [
+            "s",
+            "š",
+            "ś",
+            "ß"
+          ],
+          [
+            "d",
+            "đ"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "y"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "č",
+            "ć",
+            "ç"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Z",
+            "Ž",
+            "Ź",
+            "Ż"
+          ],
+          [
+            "U"
+          ],
+          [
+            "I"
+          ],
+          [
+            "O"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A"
+          ],
+          [
+            "S",
+            "Š",
+            "Ś",
+            "SS"
+          ],
+          [
+            "D",
+            "Đ"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Y"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Č",
+            "Ć",
+            "Ç"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "hr",
+  "name": "Croatian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/hu.json b/data/osk-layouts/hu.json
new file mode 100644
index 0000000..9bcc532
--- /dev/null
+++ b/data/osk-layouts/hu.json
@@ -0,0 +1,579 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "è",
+            "ê",
+            "ë",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "z"
+          ],
+          [
+            "u",
+            "ú",
+            "ü",
+            "ű",
+            "û",
+            "ù",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "î",
+            "ï",
+            "ì",
+            "į",
+            "ī"
+          ],
+          [
+            "o",
+            "ó",
+            "ö",
+            "ő",
+            "ô",
+            "ò",
+            "õ",
+            "œ",
+            "ø",
+            "ō"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "à",
+            "â",
+            "ä",
+            "æ",
+            "ã",
+            "å",
+            "ā"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "y"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "È",
+            "Ê",
+            "Ë",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Z"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ü",
+            "Ű",
+            "Û",
+            "Ù",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Î",
+            "Ï",
+            "Ì",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ö",
+            "Ő",
+            "Ô",
+            "Ò",
+            "Õ",
+            "Œ",
+            "Ø",
+            "Ō"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "À",
+            "Â",
+            "Ä",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Y"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "hu",
+  "name": "Hungarian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/id.json b/data/osk-layouts/id.json
new file mode 100644
index 0000000..2342962
--- /dev/null
+++ b/data/osk-layouts/id.json
@@ -0,0 +1,507 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u"
+          ],
+          [
+            "i"
+          ],
+          [
+            "o"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U"
+          ],
+          [
+            "I"
+          ],
+          [
+            "O"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "id",
+  "name": "Indonesian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/il.json b/data/osk-layouts/il.json
new file mode 100644
index 0000000..76dd588
--- /dev/null
+++ b/data/osk-layouts/il.json
@@ -0,0 +1,419 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "'",
+            "\""
+          ],
+          [
+            "-",
+            "_"
+          ],
+          [
+            "ק"
+          ],
+          [
+            "ר"
+          ],
+          [
+            "א"
+          ],
+          [
+            "ט"
+          ],
+          [
+            "ו"
+          ],
+          [
+            "ן"
+          ],
+          [
+            "ם"
+          ],
+          [
+            "פ"
+          ]
+        ],
+        [
+          [
+            "ש"
+          ],
+          [
+            "ד"
+          ],
+          [
+            "ג",
+            "ג׳"
+          ],
+          [
+            "כ"
+          ],
+          [
+            "ע"
+          ],
+          [
+            "י",
+            "ײַ"
+          ],
+          [
+            "ח",
+            "ח׳"
+          ],
+          [
+            "ל"
+          ],
+          [
+            "ך"
+          ],
+          [
+            "ף"
+          ]
+        ],
+        [
+          [
+            "ז",
+            "ז׳"
+          ],
+          [
+            "ס"
+          ],
+          [
+            "ב"
+          ],
+          [
+            "ה"
+          ],
+          [
+            "נ"
+          ],
+          [
+            "מ"
+          ],
+          [
+            "צ",
+            "צ׳"
+          ],
+          [
+            "ת",
+            "ת׳"
+          ],
+          [
+            "ץ",
+            "ץ׳"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "₪",
+            "$",
+            "¢",
+            "€",
+            "£",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±",
+            "﬩"
+          ],
+          [
+            "(",
+            ">",
+            "}",
+            "]"
+          ],
+          [
+            ")",
+            "<",
+            "{",
+            "["
+          ]
+        ],
+        [
+          [
+            "*",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ",",
+            "!"
+          ],
+          [
+            ".",
+            "?"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "€"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            ">",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            " "
+          ],
+          [
+            ",",
+            "!"
+          ],
+          [
+            ".",
+            "?"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "he",
+  "name": "Hebrew"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/in+bolnagri.json b/data/osk-layouts/in+bolnagri.json
new file mode 100644
index 0000000..36f10ac
--- /dev/null
+++ b/data/osk-layouts/in+bolnagri.json
@@ -0,0 +1,439 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "◌ौ"
+          ],
+          [
+            "◌ै"
+          ],
+          [
+            "◌ा"
+          ],
+          [
+            "◌ी"
+          ],
+          [
+            "◌ू"
+          ],
+          [
+            "ब",
+            "ब॒",
+            "%"
+          ],
+          [
+            "ह"
+          ],
+          [
+            "ग",
+            "ज्ञ",
+            "ग़",
+            "ग॒",
+            "%"
+          ],
+          [
+            "द"
+          ],
+          [
+            "ज",
+            "ज॒",
+            "ज्ञ",
+            "ज़",
+            "%"
+          ],
+          [
+            "ड",
+            "ड॒",
+            "ड़"
+          ]
+        ],
+        [
+          [
+            "◌ो"
+          ],
+          [
+            "◌े"
+          ],
+          [
+            "◌्"
+          ],
+          [
+            "◌ि"
+          ],
+          [
+            "◌ु"
+          ],
+          [
+            "प"
+          ],
+          [
+            "र",
+            "ऋ",
+            "ऱ",
+            "ॠ"
+          ],
+          [
+            "क",
+            "क़"
+          ],
+          [
+            "त",
+            "त्र"
+          ],
+          [
+            "च"
+          ],
+          [
+            "ट"
+          ]
+        ],
+        [
+          [
+            "◌ॉ"
+          ],
+          [
+            "◌ं"
+          ],
+          [
+            "म",
+            "ॐ"
+          ],
+          [
+            "न",
+            "ञ",
+            "ङ",
+            "ऩ"
+          ],
+          [
+            "व"
+          ],
+          [
+            "ल",
+            "ऌ",
+            "ॡ"
+          ],
+          [
+            "स"
+          ],
+          [
+            "य",
+            "य़"
+          ],
+          [
+            "◌़"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "१",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "२",
+            "²",
+            "⅔"
+          ],
+          [
+            "३",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "४",
+            "⁴"
+          ],
+          [
+            "५",
+            "⅝"
+          ],
+          [
+            "६"
+          ],
+          [
+            "७",
+            "⅞"
+          ],
+          [
+            "८"
+          ],
+          [
+            "९"
+          ],
+          [
+            "०",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "₹",
+            "$",
+            "¢",
+            "€",
+            "£",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "€"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "hi",
+  "name": "Hindi"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ir.json b/data/osk-layouts/ir.json
new file mode 100644
index 0000000..a773b14
--- /dev/null
+++ b/data/osk-layouts/ir.json
@@ -0,0 +1,495 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "ض"
+          ],
+          [
+            "ص"
+          ],
+          [
+            "ث"
+          ],
+          [
+            "ق",
+            "ڨ"
+          ],
+          [
+            "ف",
+            "ڤ",
+            "ڢ",
+            "ڥ"
+          ],
+          [
+            "غ"
+          ],
+          [
+            "ع"
+          ],
+          [
+            "ه",
+            "ه‍"
+          ],
+          [
+            "خ"
+          ],
+          [
+            "ح"
+          ],
+          [
+            "ج",
+            "چ"
+          ]
+        ],
+        [
+          [
+            "ش",
+            "ڜ"
+          ],
+          [
+            "س"
+          ],
+          [
+            "ي",
+            "ئ",
+            "ى"
+          ],
+          [
+            "ب",
+            "پ"
+          ],
+          [
+            "ل",
+            "لا",
+            "لأ",
+            "لإ",
+            "لآ"
+          ],
+          [
+            "ا",
+            "آ",
+            "ء",
+            "أ",
+            "إ",
+            "ٱ"
+          ],
+          [
+            "ت"
+          ],
+          [
+            "ن"
+          ],
+          [
+            "م"
+          ],
+          [
+            "ك",
+            "گ",
+            "ک"
+          ],
+          [
+            "ط"
+          ]
+        ],
+        [
+          [
+            "ذ"
+          ],
+          [
+            "ء"
+          ],
+          [
+            "ؤ"
+          ],
+          [
+            "ر"
+          ],
+          [
+            "ى",
+            "ئ"
+          ],
+          [
+            "ة"
+          ],
+          [
+            "و"
+          ],
+          [
+            "ز",
+            "ژ"
+          ],
+          [
+            "ظ"
+          ],
+          [
+            "د"
+          ]
+        ],
+        [
+          [
+            "،"
+          ],
+          [
+            " "
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "\"",
+            "'",
+            "#",
+            "-",
+            ":",
+            "!",
+            "،",
+            "؟",
+            "@",
+            "&",
+            "%",
+            "+",
+            "؛",
+            "/",
+            ")",
+            "("
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "۱",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "۲",
+            "²",
+            "⅔"
+          ],
+          [
+            "۳",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "۴",
+            "⁴"
+          ],
+          [
+            "۵",
+            "⅝"
+          ],
+          [
+            "۶"
+          ],
+          [
+            "۷",
+            "⅞"
+          ],
+          [
+            "۸"
+          ],
+          [
+            "۹"
+          ],
+          [
+            "۰",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "٬",
+            "@"
+          ],
+          [
+            "٫",
+            "#"
+          ],
+          [
+            "﷼",
+            "$",
+            "¢",
+            "€",
+            "£",
+            "¥",
+            "₱"
+          ],
+          [
+            "٪",
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "﴿",
+            ">",
+            "}",
+            "]"
+          ],
+          [
+            ")",
+            "﴾",
+            "<",
+            "{",
+            "["
+          ]
+        ],
+        [
+          [
+            "*",
+            "★",
+            "٭"
+          ],
+          [
+            "«",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "»",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            "؛",
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "؟",
+            "?"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            "،",
+            ":",
+            "!",
+            "؟",
+            "؛",
+            "-",
+            "/",
+            "»",
+            "«"
+          ],
+          [
+            ".",
+            "ٕ",
+            "ٔ",
+            "ْ",
+            "ٍ",
+            "ٌ",
+            "ً",
+            "ّ",
+            "ٖ",
+            "ٰ",
+            "ٓ",
+            "ِ",
+            "ُ",
+            "َ",
+            "ـ"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "€"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "«",
+            "›",
+            "≥",
+            ">"
+          ],
+          [
+            "»",
+            "‹",
+            "≤",
+            "<"
+          ],
+          [
+            " "
+          ],
+          [
+            "،",
+            ":",
+            "!",
+            "؟",
+            "؛",
+            "-",
+            "/",
+            "»",
+            "«"
+          ],
+          [
+            ".",
+            "ٕ",
+            "ٔ",
+            "ْ",
+            "ٍ",
+            "ٌ",
+            "ً",
+            "ّ",
+            "ٖ",
+            "ٰ",
+            "ٓ",
+            "ِ",
+            "ُ",
+            "َ",
+            "ـ"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "fa",
+  "name": "Persian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/is.json b/data/osk-layouts/is.json
new file mode 100644
index 0000000..b53df32
--- /dev/null
+++ b/data/osk-layouts/is.json
@@ -0,0 +1,583 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "ë",
+            "è",
+            "ê",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t",
+            "þ"
+          ],
+          [
+            "y",
+            "ý",
+            "ÿ"
+          ],
+          [
+            "u",
+            "ú",
+            "ü",
+            "û",
+            "ù",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "ï",
+            "î",
+            "ì",
+            "į",
+            "ī"
+          ],
+          [
+            "o",
+            "ó",
+            "ö",
+            "ô",
+            "ò",
+            "õ",
+            "œ",
+            "ø",
+            "ō"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "ä",
+            "æ",
+            "å",
+            "à",
+            "â",
+            "ã",
+            "ā"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d",
+            "ð"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "Ë",
+            "È",
+            "Ê",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T",
+            "Þ"
+          ],
+          [
+            "Y",
+            "Ý",
+            "Ÿ"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ü",
+            "Û",
+            "Ù",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Ï",
+            "Î",
+            "Ì",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ö",
+            "Ô",
+            "Ò",
+            "Õ",
+            "Œ",
+            "Ø",
+            "Ō"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "Ä",
+            "Æ",
+            "Å",
+            "À",
+            "Â",
+            "Ã",
+            "Ā"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D",
+            "Ð"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "is",
+  "name": "Icelandic"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/it.json b/data/osk-layouts/it.json
new file mode 100644
index 0000000..d865266
--- /dev/null
+++ b/data/osk-layouts/it.json
@@ -0,0 +1,580 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "è",
+            "é",
+            "ê",
+            "ë",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u",
+            "ù",
+            "ú",
+            "û",
+            "ü",
+            "ū"
+          ],
+          [
+            "i",
+            "ì",
+            "í",
+            "î",
+            "ï",
+            "į",
+            "ī"
+          ],
+          [
+            "o",
+            "ò",
+            "ó",
+            "ô",
+            "ö",
+            "õ",
+            "œ",
+            "ø",
+            "ō",
+            "º"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "à",
+            "á",
+            "â",
+            "ä",
+            "æ",
+            "ã",
+            "å",
+            "ā",
+            "ª"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "È",
+            "É",
+            "Ê",
+            "Ë",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U",
+            "Ù",
+            "Ú",
+            "Û",
+            "Ü",
+            "Ū"
+          ],
+          [
+            "I",
+            "Ì",
+            "Í",
+            "Î",
+            "Ï",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O",
+            "Ò",
+            "Ó",
+            "Ô",
+            "Ö",
+            "Õ",
+            "Œ",
+            "Ø",
+            "Ō",
+            "º"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "À",
+            "Á",
+            "Â",
+            "Ä",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā",
+            "ª"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "it",
+  "name": "Italian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ke.json b/data/osk-layouts/ke.json
new file mode 100644
index 0000000..9c3e935
--- /dev/null
+++ b/data/osk-layouts/ke.json
@@ -0,0 +1,577 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "è",
+            "é",
+            "ê",
+            "ë",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u",
+            "û",
+            "ü",
+            "ù",
+            "ú",
+            "ū"
+          ],
+          [
+            "i",
+            "î",
+            "ï",
+            "í",
+            "ī",
+            "ì"
+          ],
+          [
+            "o",
+            "ô",
+            "ö",
+            "ò",
+            "ó",
+            "œ",
+            "ø",
+            "ō",
+            "õ"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "à",
+            "á",
+            "â",
+            "ä",
+            "æ",
+            "ã",
+            "å",
+            "ā"
+          ],
+          [
+            "s",
+            "ß"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g",
+            "g'"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ç"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "È",
+            "É",
+            "Ê",
+            "Ë",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U",
+            "Û",
+            "Ü",
+            "Ù",
+            "Ú",
+            "Ū"
+          ],
+          [
+            "I",
+            "Î",
+            "Ï",
+            "Í",
+            "Ī",
+            "Ì"
+          ],
+          [
+            "O",
+            "Ô",
+            "Ö",
+            "Ò",
+            "Ó",
+            "Œ",
+            "Ø",
+            "Ō",
+            "Õ"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "À",
+            "Á",
+            "Â",
+            "Ä",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S",
+            "SS"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G",
+            "G'"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ç"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "sw",
+  "name": "Swahili"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/kg.json b/data/osk-layouts/kg.json
new file mode 100644
index 0000000..b56915a
--- /dev/null
+++ b/data/osk-layouts/kg.json
@@ -0,0 +1,547 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "й"
+          ],
+          [
+            "ц"
+          ],
+          [
+            "у",
+            "ү"
+          ],
+          [
+            "к"
+          ],
+          [
+            "е",
+            "ё"
+          ],
+          [
+            "н",
+            "ң"
+          ],
+          [
+            "г"
+          ],
+          [
+            "ш"
+          ],
+          [
+            "щ"
+          ],
+          [
+            "з"
+          ],
+          [
+            "х"
+          ]
+        ],
+        [
+          [
+            "ф"
+          ],
+          [
+            "ы"
+          ],
+          [
+            "в"
+          ],
+          [
+            "а"
+          ],
+          [
+            "п"
+          ],
+          [
+            "р"
+          ],
+          [
+            "о",
+            "ө"
+          ],
+          [
+            "л"
+          ],
+          [
+            "д"
+          ],
+          [
+            "ж"
+          ],
+          [
+            "э"
+          ]
+        ],
+        [
+          [
+            "я"
+          ],
+          [
+            "ч"
+          ],
+          [
+            "с"
+          ],
+          [
+            "м"
+          ],
+          [
+            "и"
+          ],
+          [
+            "т"
+          ],
+          [
+            "ь",
+            "ъ"
+          ],
+          [
+            "б"
+          ],
+          [
+            "ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Й"
+          ],
+          [
+            "Ц"
+          ],
+          [
+            "У",
+            "Ү"
+          ],
+          [
+            "К"
+          ],
+          [
+            "Е",
+            "Ё"
+          ],
+          [
+            "Н",
+            "Ң"
+          ],
+          [
+            "Г"
+          ],
+          [
+            "Ш"
+          ],
+          [
+            "Щ"
+          ],
+          [
+            "З"
+          ],
+          [
+            "Х"
+          ]
+        ],
+        [
+          [
+            "Ф"
+          ],
+          [
+            "Ы"
+          ],
+          [
+            "В"
+          ],
+          [
+            "А"
+          ],
+          [
+            "П"
+          ],
+          [
+            "Р"
+          ],
+          [
+            "О",
+            "Ө"
+          ],
+          [
+            "Л"
+          ],
+          [
+            "Д"
+          ],
+          [
+            "Ж"
+          ],
+          [
+            "Э"
+          ]
+        ],
+        [
+          [
+            "Я"
+          ],
+          [
+            "Ч"
+          ],
+          [
+            "С"
+          ],
+          [
+            "М"
+          ],
+          [
+            "И"
+          ],
+          [
+            "Т"
+          ],
+          [
+            "Ь",
+            "Ъ"
+          ],
+          [
+            "Б"
+          ],
+          [
+            "Ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "ky",
+  "name": "Kirghiz"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/kh.json b/data/osk-layouts/kh.json
new file mode 100644
index 0000000..e5d34cb
--- /dev/null
+++ b/data/osk-layouts/kh.json
@@ -0,0 +1,481 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "១",
+            "៱"
+          ],
+          [
+            "២",
+            "៲"
+          ],
+          [
+            "៣",
+            "៳"
+          ],
+          [
+            "៤",
+            "៴"
+          ],
+          [
+            "៥",
+            "៵"
+          ],
+          [
+            "៦",
+            "៶"
+          ],
+          [
+            "៧",
+            "៷"
+          ],
+          [
+            "៨",
+            "៸"
+          ],
+          [
+            "៩",
+            "៹"
+          ],
+          [
+            "០",
+            "៰"
+          ],
+          [
+            "ឥ",
+            "",
+            "ឦ"
+          ],
+          [
+            "ឲ",
+            "ឱ"
+          ]
+        ],
+        [
+          [
+            "ឆ"
+          ],
+          [
+            "ឹ"
+          ],
+          [
+            "េ"
+          ],
+          [
+            "រ"
+          ],
+          [
+            "ត"
+          ],
+          [
+            "យ"
+          ],
+          [
+            "ុ"
+          ],
+          [
+            "ិ"
+          ],
+          [
+            "ោ"
+          ],
+          [
+            "ផ"
+          ],
+          [
+            "ៀ"
+          ],
+          [
+            "ឪ",
+            "ឧ",
+            "ឱ",
+            "ឳ",
+            "ឩ",
+            "ឨ"
+          ]
+        ],
+        [
+          [
+            "ា"
+          ],
+          [
+            "ស"
+          ],
+          [
+            "ដ"
+          ],
+          [
+            "ថ"
+          ],
+          [
+            "ង"
+          ],
+          [
+            "ហ"
+          ],
+          [
+            "្"
+          ],
+          [
+            "ក"
+          ],
+          [
+            "ល"
+          ],
+          [
+            "ើ"
+          ],
+          [
+            "់"
+          ],
+          [
+            "ឮ",
+            "ឭ",
+            "ឰ"
+          ]
+        ],
+        [
+          [
+            "ឋ"
+          ],
+          [
+            "ខ"
+          ],
+          [
+            "ច"
+          ],
+          [
+            "វ"
+          ],
+          [
+            "ប"
+          ],
+          [
+            "ន"
+          ],
+          [
+            "ម"
+          ],
+          [
+            "ុំ"
+          ],
+          [
+            "។"
+          ],
+          [
+            "៊"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "៛",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "km",
+  "name": "Khmer"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/la.json b/data/osk-layouts/la.json
new file mode 100644
index 0000000..aedff60
--- /dev/null
+++ b/data/osk-layouts/la.json
@@ -0,0 +1,472 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "ຢ",
+            "໑"
+          ],
+          [
+            "ຟ",
+            "໒"
+          ],
+          [
+            "ໂ",
+            "໓"
+          ],
+          [
+            "ຖ",
+            "໔"
+          ],
+          [
+            "ຸ"
+          ],
+          [
+            "ູ"
+          ],
+          [
+            "ຄ",
+            "໕"
+          ],
+          [
+            "ຕ",
+            "໖"
+          ],
+          [
+            "ຈ",
+            "໗"
+          ],
+          [
+            "ຂ",
+            "໘"
+          ],
+          [
+            "ຊ",
+            "໙"
+          ],
+          [
+            "ໍ"
+          ]
+        ],
+        [
+          [
+            "ົ"
+          ],
+          [
+            "ໄ",
+            "໐"
+          ],
+          [
+            "ຳ"
+          ],
+          [
+            "ພ"
+          ],
+          [
+            "ະ"
+          ],
+          [
+            "ິ"
+          ],
+          [
+            "ີ"
+          ],
+          [
+            "ຮ"
+          ],
+          [
+            "ນ"
+          ],
+          [
+            "ຍ"
+          ],
+          [
+            "ບ"
+          ],
+          [
+            "ລ"
+          ]
+        ],
+        [
+          [
+            "ັ"
+          ],
+          [
+            "ຫ"
+          ],
+          [
+            "ກ"
+          ],
+          [
+            "ດ"
+          ],
+          [
+            "ເ"
+          ],
+          [
+            "້"
+          ],
+          [
+            "່"
+          ],
+          [
+            "າ"
+          ],
+          [
+            "ສ"
+          ],
+          [
+            "ວ"
+          ],
+          [
+            "ງ"
+          ],
+          [
+            "“"
+          ]
+        ],
+        [
+          [
+            "ຜ"
+          ],
+          [
+            "ປ"
+          ],
+          [
+            "ແ"
+          ],
+          [
+            "ອ"
+          ],
+          [
+            "ຶ"
+          ],
+          [
+            "ື"
+          ],
+          [
+            "ທ"
+          ],
+          [
+            "ມ"
+          ],
+          [
+            "ໃ"
+          ],
+          [
+            "ຝ"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "₭",
+            "$",
+            "¢",
+            "€",
+            "£",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "€"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "lo",
+  "name": "Lao"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/latam.json b/data/osk-layouts/latam.json
new file mode 100644
index 0000000..4095c7a
--- /dev/null
+++ b/data/osk-layouts/latam.json
@@ -0,0 +1,603 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "è",
+            "ë",
+            "ê",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u",
+            "ú",
+            "ü",
+            "ù",
+            "û",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "ï",
+            "ì",
+            "î",
+            "į",
+            "ī"
+          ],
+          [
+            "o",
+            "ó",
+            "ò",
+            "ö",
+            "ô",
+            "õ",
+            "ø",
+            "œ",
+            "ō",
+            "º"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "à",
+            "ä",
+            "â",
+            "ã",
+            "å",
+            "ą",
+            "æ",
+            "ā",
+            "ª"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ],
+          [
+            "ñ"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ç",
+            "ć",
+            "č"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            ";",
+            "!",
+            ",",
+            "?",
+            ":",
+            "¡",
+            "@",
+            "¿"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "È",
+            "Ë",
+            "Ê",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ü",
+            "Ù",
+            "Û",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Ï",
+            "Ì",
+            "Î",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ò",
+            "Ö",
+            "Ô",
+            "Õ",
+            "Ø",
+            "Œ",
+            "Ō",
+            "º"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "À",
+            "Ä",
+            "Â",
+            "Ã",
+            "Å",
+            "Ą",
+            "Æ",
+            "Ā",
+            "ª"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ],
+          [
+            "Ñ"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ç",
+            "Ć",
+            "Č"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            ";",
+            "!",
+            ",",
+            "?",
+            ":",
+            "¡",
+            "@",
+            "¿"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ",",
+            "!",
+            "¡"
+          ],
+          [
+            ".",
+            "?",
+            "¿"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ",",
+            "!",
+            "¡"
+          ],
+          [
+            ".",
+            "?",
+            "¿"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "es-US",
+  "name": "Spanish United States"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/lt.json b/data/osk-layouts/lt.json
new file mode 100644
index 0000000..7cd5352
--- /dev/null
+++ b/data/osk-layouts/lt.json
@@ -0,0 +1,647 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "ė",
+            "ę",
+            "ē",
+            "è",
+            "é",
+            "ê",
+            "ë",
+            "ě"
+          ],
+          [
+            "r",
+            "ŗ",
+            "ř",
+            "ŕ"
+          ],
+          [
+            "t",
+            "ţ",
+            "ť"
+          ],
+          [
+            "y",
+            "ý",
+            "ÿ"
+          ],
+          [
+            "u",
+            "ū",
+            "ų",
+            "ü",
+            "ū",
+            "ù",
+            "ú",
+            "û",
+            "ů",
+            "ű"
+          ],
+          [
+            "i",
+            "į",
+            "ī",
+            "ì",
+            "í",
+            "î",
+            "ï",
+            "ı"
+          ],
+          [
+            "o",
+            "ö",
+            "õ",
+            "ò",
+            "ó",
+            "ô",
+            "œ",
+            "ő",
+            "ø"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "ą",
+            "ä",
+            "ā",
+            "à",
+            "á",
+            "â",
+            "ã",
+            "å",
+            "æ"
+          ],
+          [
+            "s",
+            "š",
+            "ß",
+            "ś",
+            "ş"
+          ],
+          [
+            "d",
+            "ď"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g",
+            "ģ",
+            "ğ"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k",
+            "ķ"
+          ],
+          [
+            "l",
+            "ļ",
+            "ł",
+            "ĺ",
+            "ľ"
+          ]
+        ],
+        [
+          [
+            "z",
+            "ž",
+            "ż",
+            "ź"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "č",
+            "ç",
+            "ć"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ņ",
+            "ñ",
+            "ń",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "Ė",
+            "Ę",
+            "Ē",
+            "È",
+            "É",
+            "Ê",
+            "Ë",
+            "Ě"
+          ],
+          [
+            "R",
+            "Ŗ",
+            "Ř",
+            "Ŕ"
+          ],
+          [
+            "T",
+            "Ţ",
+            "Ť"
+          ],
+          [
+            "Y",
+            "Ý",
+            "Ÿ"
+          ],
+          [
+            "U",
+            "Ū",
+            "Ų",
+            "Ü",
+            "Ū",
+            "Ù",
+            "Ú",
+            "Û",
+            "Ů",
+            "Ű"
+          ],
+          [
+            "I",
+            "Į",
+            "Ī",
+            "Ì",
+            "Í",
+            "Î",
+            "Ï",
+            "I"
+          ],
+          [
+            "O",
+            "Ö",
+            "Õ",
+            "Ò",
+            "Ó",
+            "Ô",
+            "Œ",
+            "Ő",
+            "Ø"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Ą",
+            "Ä",
+            "Ā",
+            "À",
+            "Á",
+            "Â",
+            "Ã",
+            "Å",
+            "Æ"
+          ],
+          [
+            "S",
+            "Š",
+            "SS",
+            "Ś",
+            "Ş"
+          ],
+          [
+            "D",
+            "Ď"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G",
+            "Ģ",
+            "Ğ"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K",
+            "Ķ"
+          ],
+          [
+            "L",
+            "Ļ",
+            "Ł",
+            "Ĺ",
+            "Ľ"
+          ]
+        ],
+        [
+          [
+            "Z",
+            "Ž",
+            "Ż",
+            "Ź"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Č",
+            "Ç",
+            "Ć"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ņ",
+            "Ñ",
+            "Ń",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "lt",
+  "name": "Lithuanian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/lv.json b/data/osk-layouts/lv.json
new file mode 100644
index 0000000..bab6ae3
--- /dev/null
+++ b/data/osk-layouts/lv.json
@@ -0,0 +1,645 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "ē",
+            "ė",
+            "è",
+            "é",
+            "ê",
+            "ë",
+            "ę",
+            "ě"
+          ],
+          [
+            "r",
+            "ŗ",
+            "ř",
+            "ŕ"
+          ],
+          [
+            "t",
+            "ţ",
+            "ť"
+          ],
+          [
+            "y",
+            "ý",
+            "ÿ"
+          ],
+          [
+            "u",
+            "ū",
+            "ų",
+            "ù",
+            "ú",
+            "û",
+            "ü",
+            "ů",
+            "ű"
+          ],
+          [
+            "i",
+            "ī",
+            "į",
+            "ì",
+            "í",
+            "î",
+            "ï",
+            "ı"
+          ],
+          [
+            "o",
+            "ò",
+            "ó",
+            "ô",
+            "õ",
+            "ö",
+            "œ",
+            "ő",
+            "ø"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "ā",
+            "à",
+            "á",
+            "â",
+            "ã",
+            "ä",
+            "å",
+            "æ",
+            "ą"
+          ],
+          [
+            "s",
+            "š",
+            "ß",
+            "ś",
+            "ş"
+          ],
+          [
+            "d",
+            "ď"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g",
+            "ģ",
+            "ğ"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k",
+            "ķ"
+          ],
+          [
+            "l",
+            "ļ",
+            "ł",
+            "ĺ",
+            "ľ"
+          ]
+        ],
+        [
+          [
+            "z",
+            "ž",
+            "ż",
+            "ź"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "č",
+            "ç",
+            "ć"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ņ",
+            "ñ",
+            "ń",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "Ē",
+            "Ė",
+            "È",
+            "É",
+            "Ê",
+            "Ë",
+            "Ę",
+            "Ě"
+          ],
+          [
+            "R",
+            "Ŗ",
+            "Ř",
+            "Ŕ"
+          ],
+          [
+            "T",
+            "Ţ",
+            "Ť"
+          ],
+          [
+            "Y",
+            "Ý",
+            "Ÿ"
+          ],
+          [
+            "U",
+            "Ū",
+            "Ų",
+            "Ù",
+            "Ú",
+            "Û",
+            "Ü",
+            "Ů",
+            "Ű"
+          ],
+          [
+            "I",
+            "Ī",
+            "Į",
+            "Ì",
+            "Í",
+            "Î",
+            "Ï",
+            "I"
+          ],
+          [
+            "O",
+            "Ò",
+            "Ó",
+            "Ô",
+            "Õ",
+            "Ö",
+            "Œ",
+            "Ő",
+            "Ø"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Ā",
+            "À",
+            "Á",
+            "Â",
+            "Ã",
+            "Ä",
+            "Å",
+            "Æ",
+            "Ą"
+          ],
+          [
+            "S",
+            "Š",
+            "SS",
+            "Ś",
+            "Ş"
+          ],
+          [
+            "D",
+            "Ď"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G",
+            "Ģ",
+            "Ğ"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K",
+            "Ķ"
+          ],
+          [
+            "L",
+            "Ļ",
+            "Ł",
+            "Ĺ",
+            "Ľ"
+          ]
+        ],
+        [
+          [
+            "Z",
+            "Ž",
+            "Ż",
+            "Ź"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Č",
+            "Ç",
+            "Ć"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ņ",
+            "Ñ",
+            "Ń",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "lv",
+  "name": "Latvian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/mk.json b/data/osk-layouts/mk.json
new file mode 100644
index 0000000..2815121
--- /dev/null
+++ b/data/osk-layouts/mk.json
@@ -0,0 +1,541 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "љ"
+          ],
+          [
+            "њ"
+          ],
+          [
+            "е",
+            "ѐ"
+          ],
+          [
+            "р"
+          ],
+          [
+            "т"
+          ],
+          [
+            "ѕ"
+          ],
+          [
+            "у"
+          ],
+          [
+            "и",
+            "ѝ"
+          ],
+          [
+            "о"
+          ],
+          [
+            "п"
+          ],
+          [
+            "ш"
+          ]
+        ],
+        [
+          [
+            "а"
+          ],
+          [
+            "с"
+          ],
+          [
+            "д"
+          ],
+          [
+            "ф"
+          ],
+          [
+            "г"
+          ],
+          [
+            "х"
+          ],
+          [
+            "ј"
+          ],
+          [
+            "к"
+          ],
+          [
+            "л"
+          ],
+          [
+            "ч"
+          ],
+          [
+            "ќ"
+          ]
+        ],
+        [
+          [
+            "з"
+          ],
+          [
+            "џ"
+          ],
+          [
+            "ц"
+          ],
+          [
+            "в"
+          ],
+          [
+            "б"
+          ],
+          [
+            "н"
+          ],
+          [
+            "м"
+          ],
+          [
+            "ѓ"
+          ],
+          [
+            "ж"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Љ"
+          ],
+          [
+            "Њ"
+          ],
+          [
+            "Е",
+            "Ѐ"
+          ],
+          [
+            "Р"
+          ],
+          [
+            "Т"
+          ],
+          [
+            "Ѕ"
+          ],
+          [
+            "У"
+          ],
+          [
+            "И",
+            "Ѝ"
+          ],
+          [
+            "О"
+          ],
+          [
+            "П"
+          ],
+          [
+            "Ш"
+          ]
+        ],
+        [
+          [
+            "А"
+          ],
+          [
+            "С"
+          ],
+          [
+            "Д"
+          ],
+          [
+            "Ф"
+          ],
+          [
+            "Г"
+          ],
+          [
+            "Х"
+          ],
+          [
+            "Ј"
+          ],
+          [
+            "К"
+          ],
+          [
+            "Л"
+          ],
+          [
+            "Ч"
+          ],
+          [
+            "Ќ"
+          ]
+        ],
+        [
+          [
+            "З"
+          ],
+          [
+            "Џ"
+          ],
+          [
+            "Ц"
+          ],
+          [
+            "В"
+          ],
+          [
+            "Б"
+          ],
+          [
+            "Н"
+          ],
+          [
+            "М"
+          ],
+          [
+            "Ѓ"
+          ],
+          [
+            "Ж"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "mk",
+  "name": "Macedonian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/mn.json b/data/osk-layouts/mn.json
new file mode 100644
index 0000000..88eaa24
--- /dev/null
+++ b/data/osk-layouts/mn.json
@@ -0,0 +1,547 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "ф"
+          ],
+          [
+            "ц"
+          ],
+          [
+            "у"
+          ],
+          [
+            "ж"
+          ],
+          [
+            "э"
+          ],
+          [
+            "н"
+          ],
+          [
+            "г"
+          ],
+          [
+            "ш",
+            "щ"
+          ],
+          [
+            "ү"
+          ],
+          [
+            "з"
+          ],
+          [
+            "к"
+          ]
+        ],
+        [
+          [
+            "й"
+          ],
+          [
+            "ы"
+          ],
+          [
+            "б"
+          ],
+          [
+            "ө"
+          ],
+          [
+            "а"
+          ],
+          [
+            "х"
+          ],
+          [
+            "р"
+          ],
+          [
+            "о"
+          ],
+          [
+            "л"
+          ],
+          [
+            "д"
+          ],
+          [
+            "п"
+          ]
+        ],
+        [
+          [
+            "я"
+          ],
+          [
+            "ч"
+          ],
+          [
+            "ё",
+            "е"
+          ],
+          [
+            "с"
+          ],
+          [
+            "м"
+          ],
+          [
+            "и"
+          ],
+          [
+            "т"
+          ],
+          [
+            "ь",
+            "ъ"
+          ],
+          [
+            "в",
+            "ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Ф"
+          ],
+          [
+            "Ц"
+          ],
+          [
+            "У"
+          ],
+          [
+            "Ж"
+          ],
+          [
+            "Э"
+          ],
+          [
+            "Н"
+          ],
+          [
+            "Г"
+          ],
+          [
+            "Ш",
+            "Щ"
+          ],
+          [
+            "Ү"
+          ],
+          [
+            "З"
+          ],
+          [
+            "К"
+          ]
+        ],
+        [
+          [
+            "Й"
+          ],
+          [
+            "Ы"
+          ],
+          [
+            "Б"
+          ],
+          [
+            "Ө"
+          ],
+          [
+            "А"
+          ],
+          [
+            "Х"
+          ],
+          [
+            "Р"
+          ],
+          [
+            "О"
+          ],
+          [
+            "Л"
+          ],
+          [
+            "Д"
+          ],
+          [
+            "П"
+          ]
+        ],
+        [
+          [
+            "Я"
+          ],
+          [
+            "Ч"
+          ],
+          [
+            "Ё",
+            "Е"
+          ],
+          [
+            "С"
+          ],
+          [
+            "М"
+          ],
+          [
+            "И"
+          ],
+          [
+            "Т"
+          ],
+          [
+            "Ь",
+            "Ъ"
+          ],
+          [
+            "В",
+            "Ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "₮",
+            "$",
+            "¢",
+            "€",
+            "£",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "€"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "mn",
+  "name": "Mongolian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/my.json b/data/osk-layouts/my.json
new file mode 100644
index 0000000..dfd5e09
--- /dev/null
+++ b/data/osk-layouts/my.json
@@ -0,0 +1,507 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u"
+          ],
+          [
+            "i"
+          ],
+          [
+            "o"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U"
+          ],
+          [
+            "I"
+          ],
+          [
+            "O"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "ms",
+  "name": "Malay"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/nl.json b/data/osk-layouts/nl.json
new file mode 100644
index 0000000..7a630b4
--- /dev/null
+++ b/data/osk-layouts/nl.json
@@ -0,0 +1,584 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "ë",
+            "ê",
+            "è",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y",
+            "ij"
+          ],
+          [
+            "u",
+            "ú",
+            "ü",
+            "û",
+            "ù",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "ï",
+            "ì",
+            "î",
+            "į",
+            "ī",
+            "ij"
+          ],
+          [
+            "o",
+            "ó",
+            "ö",
+            "ô",
+            "ò",
+            "õ",
+            "œ",
+            "ø",
+            "ō"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "ä",
+            "â",
+            "à",
+            "æ",
+            "ã",
+            "å",
+            "ā"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "Ë",
+            "Ê",
+            "È",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y",
+            "IJ"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ü",
+            "Û",
+            "Ù",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Ï",
+            "Ì",
+            "Î",
+            "Į",
+            "Ī",
+            "IJ"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ö",
+            "Ô",
+            "Ò",
+            "Õ",
+            "Œ",
+            "Ø",
+            "Ō"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "Ä",
+            "Â",
+            "À",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "nl",
+  "name": "Dutch"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/no.json b/data/osk-layouts/no.json
new file mode 100644
index 0000000..037f12c
--- /dev/null
+++ b/data/osk-layouts/no.json
@@ -0,0 +1,507 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u"
+          ],
+          [
+            "i"
+          ],
+          [
+            "o"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U"
+          ],
+          [
+            "I"
+          ],
+          [
+            "O"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "nb",
+  "name": "Norwegian Bokmål"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ph.json b/data/osk-layouts/ph.json
new file mode 100644
index 0000000..8d127b5
--- /dev/null
+++ b/data/osk-layouts/ph.json
@@ -0,0 +1,507 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u"
+          ],
+          [
+            "i"
+          ],
+          [
+            "o"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U"
+          ],
+          [
+            "I"
+          ],
+          [
+            "O"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "fil",
+  "name": "Filipino"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/pl.json b/data/osk-layouts/pl.json
new file mode 100644
index 0000000..4b08cd5
--- /dev/null
+++ b/data/osk-layouts/pl.json
@@ -0,0 +1,579 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "ę",
+            "è",
+            "é",
+            "ê",
+            "ë",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u"
+          ],
+          [
+            "i"
+          ],
+          [
+            "o",
+            "ó",
+            "ö",
+            "ô",
+            "ò",
+            "õ",
+            "œ",
+            "ø",
+            "ō"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "ą",
+            "á",
+            "à",
+            "â",
+            "ä",
+            "æ",
+            "ã",
+            "å",
+            "ā"
+          ],
+          [
+            "s",
+            "ś",
+            "ß",
+            "š"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l",
+            "ł"
+          ]
+        ],
+        [
+          [
+            "z",
+            "ż",
+            "ź",
+            "ž"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ć",
+            "ç",
+            "č"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ń",
+            "ñ"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "Ę",
+            "È",
+            "É",
+            "Ê",
+            "Ë",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U"
+          ],
+          [
+            "I"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ö",
+            "Ô",
+            "Ò",
+            "Õ",
+            "Œ",
+            "Ø",
+            "Ō"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Ą",
+            "Á",
+            "À",
+            "Â",
+            "Ä",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S",
+            "Ś",
+            "SS",
+            "Š"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L",
+            "Ł"
+          ]
+        ],
+        [
+          [
+            "Z",
+            "Ż",
+            "Ź",
+            "Ž"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ć",
+            "Ç",
+            "Č"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ń",
+            "Ñ"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "pl",
+  "name": "Polish"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/pt.json b/data/osk-layouts/pt.json
new file mode 100644
index 0000000..efd857a
--- /dev/null
+++ b/data/osk-layouts/pt.json
@@ -0,0 +1,584 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "ê",
+            "è",
+            "ę",
+            "ė",
+            "ē",
+            "ë"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u",
+            "ú",
+            "ü",
+            "ù",
+            "û",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "î",
+            "ì",
+            "ï",
+            "į",
+            "ī"
+          ],
+          [
+            "o",
+            "ó",
+            "õ",
+            "ô",
+            "ò",
+            "ö",
+            "œ",
+            "ø",
+            "ō",
+            "º"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "ã",
+            "à",
+            "â",
+            "ä",
+            "å",
+            "æ",
+            "ª"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ç",
+            "č",
+            "ć"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "Ê",
+            "È",
+            "Ę",
+            "Ė",
+            "Ē",
+            "Ë"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ü",
+            "Ù",
+            "Û",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Î",
+            "Ì",
+            "Ï",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O",
+            "Ó",
+            "Õ",
+            "Ô",
+            "Ò",
+            "Ö",
+            "Œ",
+            "Ø",
+            "Ō",
+            "º"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "Ã",
+            "À",
+            "Â",
+            "Ä",
+            "Å",
+            "Æ",
+            "ª"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ç",
+            "Č",
+            "Ć"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "pt-PT",
+  "name": "Portuguese Portugal"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ro.json b/data/osk-layouts/ro.json
new file mode 100644
index 0000000..c690f4e
--- /dev/null
+++ b/data/osk-layouts/ro.json
@@ -0,0 +1,547 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t",
+            "ț"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u"
+          ],
+          [
+            "i",
+            "î",
+            "ï",
+            "ì",
+            "í",
+            "į",
+            "ī"
+          ],
+          [
+            "o"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "â",
+            "ã",
+            "ă",
+            "à",
+            "á",
+            "ä",
+            "æ",
+            "å",
+            "ā"
+          ],
+          [
+            "s",
+            "ș",
+            "ß",
+            "ś",
+            "š"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T",
+            "Ț"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U"
+          ],
+          [
+            "I",
+            "Î",
+            "Ï",
+            "Ì",
+            "Í",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Â",
+            "Ã",
+            "Ă",
+            "À",
+            "Á",
+            "Ä",
+            "Æ",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S",
+            "Ș",
+            "SS",
+            "Ś",
+            "Š"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "ro",
+  "name": "Romanian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/rs.json b/data/osk-layouts/rs.json
new file mode 100644
index 0000000..7bdab9f
--- /dev/null
+++ b/data/osk-layouts/rs.json
@@ -0,0 +1,541 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "љ"
+          ],
+          [
+            "њ"
+          ],
+          [
+            "е",
+            "ѐ"
+          ],
+          [
+            "р"
+          ],
+          [
+            "т"
+          ],
+          [
+            "з"
+          ],
+          [
+            "у"
+          ],
+          [
+            "и",
+            "ѝ"
+          ],
+          [
+            "о"
+          ],
+          [
+            "п"
+          ],
+          [
+            "ш"
+          ]
+        ],
+        [
+          [
+            "а"
+          ],
+          [
+            "с"
+          ],
+          [
+            "д"
+          ],
+          [
+            "ф"
+          ],
+          [
+            "г"
+          ],
+          [
+            "х"
+          ],
+          [
+            "ј"
+          ],
+          [
+            "к"
+          ],
+          [
+            "л"
+          ],
+          [
+            "ч"
+          ],
+          [
+            "ћ"
+          ]
+        ],
+        [
+          [
+            "ѕ"
+          ],
+          [
+            "џ"
+          ],
+          [
+            "ц"
+          ],
+          [
+            "в"
+          ],
+          [
+            "б"
+          ],
+          [
+            "н"
+          ],
+          [
+            "м"
+          ],
+          [
+            "ђ"
+          ],
+          [
+            "ж"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Љ"
+          ],
+          [
+            "Њ"
+          ],
+          [
+            "Е",
+            "Ѐ"
+          ],
+          [
+            "Р"
+          ],
+          [
+            "Т"
+          ],
+          [
+            "З"
+          ],
+          [
+            "У"
+          ],
+          [
+            "И",
+            "Ѝ"
+          ],
+          [
+            "О"
+          ],
+          [
+            "П"
+          ],
+          [
+            "Ш"
+          ]
+        ],
+        [
+          [
+            "А"
+          ],
+          [
+            "С"
+          ],
+          [
+            "Д"
+          ],
+          [
+            "Ф"
+          ],
+          [
+            "Г"
+          ],
+          [
+            "Х"
+          ],
+          [
+            "Ј"
+          ],
+          [
+            "К"
+          ],
+          [
+            "Л"
+          ],
+          [
+            "Ч"
+          ],
+          [
+            "Ћ"
+          ]
+        ],
+        [
+          [
+            "Ѕ"
+          ],
+          [
+            "Џ"
+          ],
+          [
+            "Ц"
+          ],
+          [
+            "В"
+          ],
+          [
+            "Б"
+          ],
+          [
+            "Н"
+          ],
+          [
+            "М"
+          ],
+          [
+            "Ђ"
+          ],
+          [
+            "Ж"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "sr",
+  "name": "Serbian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ru.json b/data/osk-layouts/ru.json
new file mode 100644
index 0000000..9126cb0
--- /dev/null
+++ b/data/osk-layouts/ru.json
@@ -0,0 +1,541 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "й"
+          ],
+          [
+            "ц"
+          ],
+          [
+            "у"
+          ],
+          [
+            "к"
+          ],
+          [
+            "е",
+            "ё"
+          ],
+          [
+            "н"
+          ],
+          [
+            "г"
+          ],
+          [
+            "ш"
+          ],
+          [
+            "щ"
+          ],
+          [
+            "з"
+          ],
+          [
+            "х"
+          ]
+        ],
+        [
+          [
+            "ф"
+          ],
+          [
+            "ы"
+          ],
+          [
+            "в"
+          ],
+          [
+            "а"
+          ],
+          [
+            "п"
+          ],
+          [
+            "р"
+          ],
+          [
+            "о"
+          ],
+          [
+            "л"
+          ],
+          [
+            "д"
+          ],
+          [
+            "ж"
+          ],
+          [
+            "э"
+          ]
+        ],
+        [
+          [
+            "я"
+          ],
+          [
+            "ч"
+          ],
+          [
+            "с"
+          ],
+          [
+            "м"
+          ],
+          [
+            "и"
+          ],
+          [
+            "т"
+          ],
+          [
+            "ь",
+            "ъ"
+          ],
+          [
+            "б"
+          ],
+          [
+            "ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Й"
+          ],
+          [
+            "Ц"
+          ],
+          [
+            "У"
+          ],
+          [
+            "К"
+          ],
+          [
+            "Е",
+            "Ё"
+          ],
+          [
+            "Н"
+          ],
+          [
+            "Г"
+          ],
+          [
+            "Ш"
+          ],
+          [
+            "Щ"
+          ],
+          [
+            "З"
+          ],
+          [
+            "Х"
+          ]
+        ],
+        [
+          [
+            "Ф"
+          ],
+          [
+            "Ы"
+          ],
+          [
+            "В"
+          ],
+          [
+            "А"
+          ],
+          [
+            "П"
+          ],
+          [
+            "Р"
+          ],
+          [
+            "О"
+          ],
+          [
+            "Л"
+          ],
+          [
+            "Д"
+          ],
+          [
+            "Ж"
+          ],
+          [
+            "Э"
+          ]
+        ],
+        [
+          [
+            "Я"
+          ],
+          [
+            "Ч"
+          ],
+          [
+            "С"
+          ],
+          [
+            "М"
+          ],
+          [
+            "И"
+          ],
+          [
+            "Т"
+          ],
+          [
+            "Ь",
+            "Ъ"
+          ],
+          [
+            "Б"
+          ],
+          [
+            "Ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "ru",
+  "name": "Russian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/se.json b/data/osk-layouts/se.json
new file mode 100644
index 0000000..513a0b8
--- /dev/null
+++ b/data/osk-layouts/se.json
@@ -0,0 +1,624 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "è",
+            "ê",
+            "ë",
+            "ę"
+          ],
+          [
+            "r",
+            "ř"
+          ],
+          [
+            "t",
+            "ť",
+            "þ"
+          ],
+          [
+            "y",
+            "ý",
+            "ÿ",
+            "ü"
+          ],
+          [
+            "u",
+            "ü",
+            "ú",
+            "ù",
+            "û",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "ì",
+            "î",
+            "ï"
+          ],
+          [
+            "o",
+            "ó",
+            "ò",
+            "ô",
+            "õ",
+            "ō"
+          ],
+          [
+            "p"
+          ],
+          [
+            "å"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "à",
+            "â",
+            "ą",
+            "ã"
+          ],
+          [
+            "s",
+            "ś",
+            "š",
+            "ş",
+            "ß"
+          ],
+          [
+            "d",
+            "ð",
+            "ď"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l",
+            "ł"
+          ],
+          [
+            "ö",
+            "ø",
+            "œ"
+          ],
+          [
+            "ä",
+            "æ"
+          ]
+        ],
+        [
+          [
+            "z",
+            "ź",
+            "ž",
+            "ż"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ç",
+            "ć",
+            "č"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ń",
+            "ñ",
+            "ň"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "È",
+            "Ê",
+            "Ë",
+            "Ę"
+          ],
+          [
+            "R",
+            "Ř"
+          ],
+          [
+            "T",
+            "Ť",
+            "Þ"
+          ],
+          [
+            "Y",
+            "Ý",
+            "Ÿ",
+            "Ü"
+          ],
+          [
+            "U",
+            "Ü",
+            "Ú",
+            "Ù",
+            "Û",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Ì",
+            "Î",
+            "Ï"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ò",
+            "Ô",
+            "Õ",
+            "Ō"
+          ],
+          [
+            "P"
+          ],
+          [
+            "Å"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "À",
+            "Â",
+            "Ą",
+            "Ã"
+          ],
+          [
+            "S",
+            "Ś",
+            "Š",
+            "Ş",
+            "SS"
+          ],
+          [
+            "D",
+            "Ð",
+            "Ď"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L",
+            "Ł"
+          ],
+          [
+            "Ö",
+            "Ø",
+            "Œ"
+          ],
+          [
+            "Ä",
+            "Æ"
+          ]
+        ],
+        [
+          [
+            "Z",
+            "Ź",
+            "Ž",
+            "Ż"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ç",
+            "Ć",
+            "Č"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ń",
+            "Ñ",
+            "Ň"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "sv",
+  "name": "Swedish"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/si.json b/data/osk-layouts/si.json
new file mode 100644
index 0000000..f5c99c0
--- /dev/null
+++ b/data/osk-layouts/si.json
@@ -0,0 +1,518 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u"
+          ],
+          [
+            "i"
+          ],
+          [
+            "o"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a"
+          ],
+          [
+            "s",
+            "š"
+          ],
+          [
+            "d",
+            "đ"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z",
+            "ž"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "č",
+            "ć"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U"
+          ],
+          [
+            "I"
+          ],
+          [
+            "O"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A"
+          ],
+          [
+            "S",
+            "Š"
+          ],
+          [
+            "D",
+            "Đ"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z",
+            "Ž"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Č",
+            "Ć"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "sl",
+  "name": "Slovenian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/sk.json b/data/osk-layouts/sk.json
new file mode 100644
index 0000000..678232b
--- /dev/null
+++ b/data/osk-layouts/sk.json
@@ -0,0 +1,648 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "ě",
+            "ē",
+            "ė",
+            "è",
+            "ê",
+            "ë",
+            "ę"
+          ],
+          [
+            "r",
+            "ŕ",
+            "ř",
+            "ŗ"
+          ],
+          [
+            "t",
+            "ť",
+            "ţ"
+          ],
+          [
+            "y",
+            "ý",
+            "ÿ"
+          ],
+          [
+            "u",
+            "ú",
+            "ů",
+            "ü",
+            "ū",
+            "ų",
+            "ù",
+            "û",
+            "ű"
+          ],
+          [
+            "i",
+            "í",
+            "ī",
+            "į",
+            "ì",
+            "î",
+            "ï",
+            "ı"
+          ],
+          [
+            "o",
+            "ô",
+            "ó",
+            "ö",
+            "ò",
+            "õ",
+            "œ",
+            "ő",
+            "ø"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "ä",
+            "ā",
+            "à",
+            "â",
+            "ã",
+            "å",
+            "æ",
+            "ą"
+          ],
+          [
+            "s",
+            "š",
+            "ß",
+            "ś",
+            "ş"
+          ],
+          [
+            "d",
+            "ď"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g",
+            "ģ",
+            "ğ"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k",
+            "ķ"
+          ],
+          [
+            "l",
+            "ľ",
+            "ĺ",
+            "ļ",
+            "ł"
+          ]
+        ],
+        [
+          [
+            "z",
+            "ž",
+            "ż",
+            "ź"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "č",
+            "ç",
+            "ć"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ň",
+            "ņ",
+            "ñ",
+            "ń",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "Ě",
+            "Ē",
+            "Ė",
+            "È",
+            "Ê",
+            "Ë",
+            "Ę"
+          ],
+          [
+            "R",
+            "Ŕ",
+            "Ř",
+            "Ŗ"
+          ],
+          [
+            "T",
+            "Ť",
+            "Ţ"
+          ],
+          [
+            "Y",
+            "Ý",
+            "Ÿ"
+          ],
+          [
+            "U",
+            "Ú",
+            "Ů",
+            "Ü",
+            "Ū",
+            "Ų",
+            "Ù",
+            "Û",
+            "Ű"
+          ],
+          [
+            "I",
+            "Í",
+            "Ī",
+            "Į",
+            "Ì",
+            "Î",
+            "Ï",
+            "I"
+          ],
+          [
+            "O",
+            "Ô",
+            "Ó",
+            "Ö",
+            "Ò",
+            "Õ",
+            "Œ",
+            "Ő",
+            "Ø"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "Ä",
+            "Ā",
+            "À",
+            "Â",
+            "Ã",
+            "Å",
+            "Æ",
+            "Ą"
+          ],
+          [
+            "S",
+            "Š",
+            "SS",
+            "Ś",
+            "Ş"
+          ],
+          [
+            "D",
+            "Ď"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G",
+            "Ģ",
+            "Ğ"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K",
+            "Ķ"
+          ],
+          [
+            "L",
+            "Ľ",
+            "Ĺ",
+            "Ļ",
+            "Ł"
+          ]
+        ],
+        [
+          [
+            "Z",
+            "Ž",
+            "Ż",
+            "Ź"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Č",
+            "Ç",
+            "Ć"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ň",
+            "Ņ",
+            "Ñ",
+            "Ń",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "sk",
+  "name": "Slovak"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/th.json b/data/osk-layouts/th.json
new file mode 100644
index 0000000..c229a64
--- /dev/null
+++ b/data/osk-layouts/th.json
@@ -0,0 +1,472 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "ๅ"
+          ],
+          [
+            "/",
+            "๑"
+          ],
+          [
+            "_",
+            "๒"
+          ],
+          [
+            "ภ",
+            "๓"
+          ],
+          [
+            "ถ",
+            "๔"
+          ],
+          [
+            "ุ"
+          ],
+          [
+            "ึ"
+          ],
+          [
+            "ค",
+            "๕"
+          ],
+          [
+            "ต",
+            "๖"
+          ],
+          [
+            "จ",
+            "๗"
+          ],
+          [
+            "ข",
+            "๘"
+          ],
+          [
+            "ช",
+            "๙"
+          ]
+        ],
+        [
+          [
+            "ๆ",
+            "๐"
+          ],
+          [
+            "ไ"
+          ],
+          [
+            "ำ"
+          ],
+          [
+            "พ"
+          ],
+          [
+            "ะ"
+          ],
+          [
+            "ั"
+          ],
+          [
+            "ี"
+          ],
+          [
+            "ร"
+          ],
+          [
+            "น"
+          ],
+          [
+            "ย"
+          ],
+          [
+            "บ"
+          ],
+          [
+            "ล"
+          ]
+        ],
+        [
+          [
+            "ฟ"
+          ],
+          [
+            "ห"
+          ],
+          [
+            "ก"
+          ],
+          [
+            "ด"
+          ],
+          [
+            "เ"
+          ],
+          [
+            "้"
+          ],
+          [
+            "่"
+          ],
+          [
+            "า"
+          ],
+          [
+            "ส"
+          ],
+          [
+            "ว"
+          ],
+          [
+            "ง"
+          ],
+          [
+            "ฃ"
+          ]
+        ],
+        [
+          [
+            "ผ"
+          ],
+          [
+            "ป"
+          ],
+          [
+            "แ"
+          ],
+          [
+            "อ"
+          ],
+          [
+            "ิ"
+          ],
+          [
+            "ื"
+          ],
+          [
+            "ท"
+          ],
+          [
+            "ม"
+          ],
+          [
+            "ใ"
+          ],
+          [
+            "ฝ"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "฿",
+            "$",
+            "¢",
+            "€",
+            "£",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "€"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "th",
+  "name": "Thai"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/tr.json b/data/osk-layouts/tr.json
new file mode 100644
index 0000000..b3786cc
--- /dev/null
+++ b/data/osk-layouts/tr.json
@@ -0,0 +1,566 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u",
+            "ü",
+            "û",
+            "ù",
+            "ú",
+            "ū"
+          ],
+          [
+            "i",
+            "ı",
+            "î",
+            "ï",
+            "ì",
+            "í",
+            "į",
+            "ī"
+          ],
+          [
+            "o",
+            "ö",
+            "ô",
+            "œ",
+            "ò",
+            "ó",
+            "õ",
+            "ø",
+            "ō"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "â"
+          ],
+          [
+            "s",
+            "ş",
+            "ß",
+            "ś",
+            "š"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g",
+            "ğ"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ç",
+            "ć",
+            "č"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U",
+            "Ü",
+            "Û",
+            "Ù",
+            "Ú",
+            "Ū"
+          ],
+          [
+            "İ",
+            "I",
+            "Î",
+            "Ï",
+            "Ì",
+            "Í",
+            "Į",
+            "Ī"
+          ],
+          [
+            "O",
+            "Ö",
+            "Ô",
+            "Œ",
+            "Ò",
+            "Ó",
+            "Õ",
+            "Ø",
+            "Ō"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Â"
+          ],
+          [
+            "S",
+            "Ş",
+            "SS",
+            "Ś",
+            "Š"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G",
+            "Ğ"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ç",
+            "Ć",
+            "Č"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "€",
+            "¢",
+            "£",
+            "$",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "tr",
+  "name": "Turkish"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ua.json b/data/osk-layouts/ua.json
new file mode 100644
index 0000000..1185687
--- /dev/null
+++ b/data/osk-layouts/ua.json
@@ -0,0 +1,545 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "й"
+          ],
+          [
+            "ц"
+          ],
+          [
+            "у"
+          ],
+          [
+            "к"
+          ],
+          [
+            "е"
+          ],
+          [
+            "н"
+          ],
+          [
+            "г",
+            "ґ"
+          ],
+          [
+            "ш"
+          ],
+          [
+            "щ"
+          ],
+          [
+            "з"
+          ],
+          [
+            "х"
+          ]
+        ],
+        [
+          [
+            "ф"
+          ],
+          [
+            "і",
+            "ї"
+          ],
+          [
+            "в"
+          ],
+          [
+            "а"
+          ],
+          [
+            "п"
+          ],
+          [
+            "р"
+          ],
+          [
+            "о"
+          ],
+          [
+            "л"
+          ],
+          [
+            "д"
+          ],
+          [
+            "ж"
+          ],
+          [
+            "є"
+          ]
+        ],
+        [
+          [
+            "я"
+          ],
+          [
+            "ч"
+          ],
+          [
+            "с"
+          ],
+          [
+            "м"
+          ],
+          [
+            "и"
+          ],
+          [
+            "т"
+          ],
+          [
+            "ь",
+            "ъ"
+          ],
+          [
+            "б"
+          ],
+          [
+            "ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Й"
+          ],
+          [
+            "Ц"
+          ],
+          [
+            "У"
+          ],
+          [
+            "К"
+          ],
+          [
+            "Е"
+          ],
+          [
+            "Н"
+          ],
+          [
+            "Г",
+            "Ґ"
+          ],
+          [
+            "Ш"
+          ],
+          [
+            "Щ"
+          ],
+          [
+            "З"
+          ],
+          [
+            "Х"
+          ]
+        ],
+        [
+          [
+            "Ф"
+          ],
+          [
+            "І",
+            "Ї"
+          ],
+          [
+            "В"
+          ],
+          [
+            "А"
+          ],
+          [
+            "П"
+          ],
+          [
+            "Р"
+          ],
+          [
+            "О"
+          ],
+          [
+            "Л"
+          ],
+          [
+            "Д"
+          ],
+          [
+            "Ж"
+          ],
+          [
+            "Є"
+          ]
+        ],
+        [
+          [
+            "Я"
+          ],
+          [
+            "Ч"
+          ],
+          [
+            "С"
+          ],
+          [
+            "М"
+          ],
+          [
+            "И"
+          ],
+          [
+            "Т"
+          ],
+          [
+            "Ь",
+            "Ъ"
+          ],
+          [
+            "Б"
+          ],
+          [
+            "Ю"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "₴",
+            "$",
+            "¢",
+            "€",
+            "£",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "€"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "uk",
+  "name": "Ukrainian"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/uk.json b/data/osk-layouts/uk.json
new file mode 100644
index 0000000..c36a723
--- /dev/null
+++ b/data/osk-layouts/uk.json
@@ -0,0 +1,576 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "è",
+            "é",
+            "ê",
+            "ë",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u",
+            "û",
+            "ü",
+            "ù",
+            "ú",
+            "ū"
+          ],
+          [
+            "i",
+            "î",
+            "ï",
+            "í",
+            "ī",
+            "ì"
+          ],
+          [
+            "o",
+            "ô",
+            "ö",
+            "ò",
+            "ó",
+            "œ",
+            "ø",
+            "ō",
+            "õ"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "à",
+            "á",
+            "â",
+            "ä",
+            "æ",
+            "ã",
+            "å",
+            "ā"
+          ],
+          [
+            "s",
+            "ß"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ç"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "È",
+            "É",
+            "Ê",
+            "Ë",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U",
+            "Û",
+            "Ü",
+            "Ù",
+            "Ú",
+            "Ū"
+          ],
+          [
+            "I",
+            "Î",
+            "Ï",
+            "Í",
+            "Ī",
+            "Ì"
+          ],
+          [
+            "O",
+            "Ô",
+            "Ö",
+            "Ò",
+            "Ó",
+            "Œ",
+            "Ø",
+            "Ō",
+            "Õ"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "À",
+            "Á",
+            "Â",
+            "Ä",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S",
+            "SS"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ç"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "£",
+            "¢",
+            "$",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "en-GB",
+  "name": "English Great Britain"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/us.json b/data/osk-layouts/us.json
new file mode 100644
index 0000000..94dd6d3
--- /dev/null
+++ b/data/osk-layouts/us.json
@@ -0,0 +1,575 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "è",
+            "é",
+            "ê",
+            "ë",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y"
+          ],
+          [
+            "u",
+            "û",
+            "ü",
+            "ù",
+            "ú",
+            "ū"
+          ],
+          [
+            "i",
+            "î",
+            "ï",
+            "í",
+            "ī",
+            "ì"
+          ],
+          [
+            "o",
+            "ô",
+            "ö",
+            "ò",
+            "ó",
+            "œ",
+            "ø",
+            "ō",
+            "õ"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "à",
+            "á",
+            "â",
+            "ä",
+            "æ",
+            "ã",
+            "å",
+            "ā"
+          ],
+          [
+            "s",
+            "ß"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c",
+            "ç"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "È",
+            "É",
+            "Ê",
+            "Ë",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y"
+          ],
+          [
+            "U",
+            "Û",
+            "Ü",
+            "Ù",
+            "Ú",
+            "Ū"
+          ],
+          [
+            "I",
+            "Î",
+            "Ï",
+            "Í",
+            "Ī",
+            "Ì"
+          ],
+          [
+            "O",
+            "Ô",
+            "Ö",
+            "Ò",
+            "Ó",
+            "Œ",
+            "Ø",
+            "Ō",
+            "Õ"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "À",
+            "Á",
+            "Â",
+            "Ä",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S",
+            "SS"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C",
+            "Ç"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "en",
+  "name": "English United States"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/vn.json b/data/osk-layouts/vn.json
new file mode 100644
index 0000000..4c7c9b4
--- /dev/null
+++ b/data/osk-layouts/vn.json
@@ -0,0 +1,643 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "è",
+            "é",
+            "ẻ",
+            "ẽ",
+            "ẹ",
+            "ê",
+            "ề",
+            "ế",
+            "ể",
+            "ễ",
+            "ệ"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y",
+            "ỳ",
+            "ý",
+            "ỷ",
+            "ỹ",
+            "ỵ"
+          ],
+          [
+            "u",
+            "ù",
+            "ú",
+            "ủ",
+            "ũ",
+            "ụ",
+            "ư",
+            "ừ",
+            "ứ",
+            "ử",
+            "ữ",
+            "ự"
+          ],
+          [
+            "i",
+            "ì",
+            "í",
+            "ỉ",
+            "ĩ",
+            "ị"
+          ],
+          [
+            "o",
+            "ò",
+            "ó",
+            "ỏ",
+            "õ",
+            "ọ",
+            "ô",
+            "ồ",
+            "ố",
+            "ổ",
+            "ỗ",
+            "ộ",
+            "ơ",
+            "ờ",
+            "ớ",
+            "ở",
+            "ỡ",
+            "ợ"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "à",
+            "á",
+            "ả",
+            "ã",
+            "ạ",
+            "ă",
+            "ằ",
+            "ắ",
+            "ẳ",
+            "ẵ",
+            "ặ",
+            "â",
+            "ầ",
+            "ấ",
+            "ẩ",
+            "ẫ",
+            "ậ"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d",
+            "đ"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "È",
+            "É",
+            "Ẻ",
+            "Ẽ",
+            "Ẹ",
+            "Ê",
+            "Ề",
+            "Ế",
+            "Ể",
+            "Ễ",
+            "Ệ"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y",
+            "Ỳ",
+            "Ý",
+            "Ỷ",
+            "Ỹ",
+            "Ỵ"
+          ],
+          [
+            "U",
+            "Ù",
+            "Ú",
+            "Ủ",
+            "Ũ",
+            "Ụ",
+            "Ư",
+            "Ừ",
+            "Ứ",
+            "Ử",
+            "Ữ",
+            "Ự"
+          ],
+          [
+            "I",
+            "Ì",
+            "Í",
+            "Ỉ",
+            "Ĩ",
+            "Ị"
+          ],
+          [
+            "O",
+            "Ò",
+            "Ó",
+            "Ỏ",
+            "Õ",
+            "Ọ",
+            "Ô",
+            "Ồ",
+            "Ố",
+            "Ổ",
+            "Ỗ",
+            "Ộ",
+            "Ơ",
+            "Ờ",
+            "Ớ",
+            "Ở",
+            "Ỡ",
+            "Ợ"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "À",
+            "Á",
+            "Ả",
+            "Ã",
+            "Ạ",
+            "Ă",
+            "Ằ",
+            "Ắ",
+            "Ẳ",
+            "Ẵ",
+            "Ặ",
+            "Â",
+            "Ầ",
+            "Ấ",
+            "Ẩ",
+            "Ẫ",
+            "Ậ"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D",
+            "Đ"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "₫",
+            "$",
+            "¢",
+            "€",
+            "£",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "€"
+          ],
+          [
+            "$",
+            "¢"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "vi",
+  "name": "Vietnamese"
+}
\ No newline at end of file
diff --git a/data/osk-layouts/za.json b/data/osk-layouts/za.json
new file mode 100644
index 0000000..ccd2447
--- /dev/null
+++ b/data/osk-layouts/za.json
@@ -0,0 +1,589 @@
+{
+  "levels": [
+    {
+      "level": "",
+      "mode": "default",
+      "rows": [
+        [
+          [
+            "q"
+          ],
+          [
+            "w"
+          ],
+          [
+            "e",
+            "é",
+            "è",
+            "ê",
+            "ë",
+            "ę",
+            "ė",
+            "ē"
+          ],
+          [
+            "r"
+          ],
+          [
+            "t"
+          ],
+          [
+            "y",
+            "ý",
+            "ŷ",
+            "ÿ",
+            "ij"
+          ],
+          [
+            "u",
+            "ú",
+            "û",
+            "ü",
+            "ù",
+            "ū"
+          ],
+          [
+            "i",
+            "í",
+            "ì",
+            "ï",
+            "î",
+            "į",
+            "ī",
+            "ij"
+          ],
+          [
+            "o",
+            "ó",
+            "ô",
+            "ö",
+            "ò",
+            "õ",
+            "œ",
+            "ø",
+            "ō"
+          ],
+          [
+            "p"
+          ]
+        ],
+        [
+          [
+            "a",
+            "á",
+            "â",
+            "ä",
+            "à",
+            "æ",
+            "ã",
+            "å",
+            "ā"
+          ],
+          [
+            "s"
+          ],
+          [
+            "d"
+          ],
+          [
+            "f"
+          ],
+          [
+            "g"
+          ],
+          [
+            "h"
+          ],
+          [
+            "j"
+          ],
+          [
+            "k"
+          ],
+          [
+            "l"
+          ]
+        ],
+        [
+          [
+            "z"
+          ],
+          [
+            "x"
+          ],
+          [
+            "c"
+          ],
+          [
+            "v"
+          ],
+          [
+            "b"
+          ],
+          [
+            "n",
+            "ñ",
+            "ń"
+          ],
+          [
+            "m"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "shift",
+      "mode": "latched",
+      "rows": [
+        [
+          [
+            "Q"
+          ],
+          [
+            "W"
+          ],
+          [
+            "E",
+            "É",
+            "È",
+            "Ê",
+            "Ë",
+            "Ę",
+            "Ė",
+            "Ē"
+          ],
+          [
+            "R"
+          ],
+          [
+            "T"
+          ],
+          [
+            "Y",
+            "Ý",
+            "Ŷ",
+            "Ÿ",
+            "IJ"
+          ],
+          [
+            "U",
+            "Ú",
+            "Û",
+            "Ü",
+            "Ù",
+            "Ū"
+          ],
+          [
+            "I",
+            "Í",
+            "Ì",
+            "Ï",
+            "Î",
+            "Į",
+            "Ī",
+            "IJ"
+          ],
+          [
+            "O",
+            "Ó",
+            "Ô",
+            "Ö",
+            "Ò",
+            "Õ",
+            "Œ",
+            "Ø",
+            "Ō"
+          ],
+          [
+            "P"
+          ]
+        ],
+        [
+          [
+            "A",
+            "Á",
+            "Â",
+            "Ä",
+            "À",
+            "Æ",
+            "Ã",
+            "Å",
+            "Ā"
+          ],
+          [
+            "S"
+          ],
+          [
+            "D"
+          ],
+          [
+            "F"
+          ],
+          [
+            "G"
+          ],
+          [
+            "H"
+          ],
+          [
+            "J"
+          ],
+          [
+            "K"
+          ],
+          [
+            "L"
+          ]
+        ],
+        [
+          [
+            "Z"
+          ],
+          [
+            "X"
+          ],
+          [
+            "C"
+          ],
+          [
+            "V"
+          ],
+          [
+            "B"
+          ],
+          [
+            "N",
+            "Ñ",
+            "Ń"
+          ],
+          [
+            "M"
+          ]
+        ],
+        [
+          [
+            ","
+          ],
+          [
+            " "
+          ],
+          [
+            ".",
+            "#",
+            "!",
+            ",",
+            "?",
+            "-",
+            ":",
+            "'",
+            "@"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "1",
+            "¹",
+            "½",
+            "⅓",
+            "¼",
+            "⅛"
+          ],
+          [
+            "2",
+            "²",
+            "⅔"
+          ],
+          [
+            "3",
+            "³",
+            "¾",
+            "⅜"
+          ],
+          [
+            "4",
+            "⁴"
+          ],
+          [
+            "5",
+            "⅝"
+          ],
+          [
+            "6"
+          ],
+          [
+            "7",
+            "⅞"
+          ],
+          [
+            "8"
+          ],
+          [
+            "9"
+          ],
+          [
+            "0",
+            "ⁿ",
+            "∅"
+          ]
+        ],
+        [
+          [
+            "@"
+          ],
+          [
+            "#"
+          ],
+          [
+            "$",
+            "¢",
+            "£",
+            "€",
+            "¥",
+            "₱"
+          ],
+          [
+            "%",
+            "‰"
+          ],
+          [
+            "&"
+          ],
+          [
+            "-",
+            "_",
+            "–",
+            "—",
+            "·"
+          ],
+          [
+            "+",
+            "±"
+          ],
+          [
+            "(",
+            "<",
+            "{",
+            "["
+          ],
+          [
+            ")",
+            ">",
+            "}",
+            "]"
+          ]
+        ],
+        [
+          [
+            "*",
+            "†",
+            "‡",
+            "★"
+          ],
+          [
+            "\"",
+            "“",
+            "”",
+            "«",
+            "»"
+          ],
+          [
+            "'",
+            "‘",
+            "’",
+            "‹",
+            "›"
+          ],
+          [
+            ":"
+          ],
+          [
+            ";"
+          ],
+          [
+            "!",
+            "¡"
+          ],
+          [
+            "?",
+            "¿"
+          ]
+        ],
+        [
+          [
+            "_"
+          ],
+          [
+            "/"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    },
+    {
+      "level": "opt+shift",
+      "mode": "locked",
+      "rows": [
+        [
+          [
+            "~"
+          ],
+          [
+            "`"
+          ],
+          [
+            "|"
+          ],
+          [
+            "•",
+            "♪",
+            "♥",
+            "♠",
+            "♦",
+            "♣"
+          ],
+          [
+            "√"
+          ],
+          [
+            "Π",
+            "π"
+          ],
+          [
+            "÷"
+          ],
+          [
+            "×"
+          ],
+          [
+            "¶",
+            "§"
+          ],
+          [
+            "∆"
+          ]
+        ],
+        [
+          [
+            "£"
+          ],
+          [
+            "¢"
+          ],
+          [
+            "€"
+          ],
+          [
+            "¥"
+          ],
+          [
+            "^",
+            "↑",
+            "↓",
+            "←",
+            "→"
+          ],
+          [
+            "°",
+            "′",
+            "″"
+          ],
+          [
+            "=",
+            "≠",
+            "≈",
+            "∞"
+          ],
+          [
+            "{"
+          ],
+          [
+            "}"
+          ]
+        ],
+        [
+          [
+            "\\"
+          ],
+          [
+            "©"
+          ],
+          [
+            "®"
+          ],
+          [
+            "™"
+          ],
+          [
+            "℅"
+          ],
+          [
+            "["
+          ],
+          [
+            "]"
+          ]
+        ],
+        [
+          [
+            "<",
+            "‹",
+            "≤",
+            "«"
+          ],
+          [
+            ">",
+            "›",
+            "≥",
+            "»"
+          ],
+          [
+            " "
+          ],
+          [
+            ","
+          ],
+          [
+            ".",
+            "…"
+          ]
+        ]
+      ]
+    }
+  ],
+  "locale": "af",
+  "name": "Afrikaans"
+}
\ No newline at end of file


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