[gnome-shell/wip/carlosg/osk-updates: 5/17] data: Move extra keys to JSON files




commit 4c5525540bd7e437ff4cf8ab52c828c64756835e
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri Apr 15 13:10:45 2022 +0200

    data: Move extra keys to JSON files
    
    Have these defined in the JSON files themselves, instead of trying
    to add them from JS while minding the differences in number of levels
    and rows.
    
    This means more redundant data in the JSON files, but simplifies
    OSK layout creation significantly, and allows finer control over the
    appearance without quirks.

 data/osk-layouts/am.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ara.json         | 120 +++++++++++++++++++++++--
 data/osk-layouts/at.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/be.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/bg.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/by.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ca.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ch+fr.json       | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ch.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/cz.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/de.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/dk.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ee.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/epo.json         | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/es+cat.json      | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/es.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/fi.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/fr.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ge.json          | 120 +++++++++++++++++++++++--
 data/osk-layouts/gr.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/hr.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/hu.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/id.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/il.json          | 120 +++++++++++++++++++++++--
 data/osk-layouts/in+bolnagri.json | 120 +++++++++++++++++++++++--
 data/osk-layouts/in+mal.json      | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ir.json          | 120 +++++++++++++++++++++++--
 data/osk-layouts/is.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/it.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ke.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/kg.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/kh.json          | 120 +++++++++++++++++++++++--
 data/osk-layouts/la.json          | 120 +++++++++++++++++++++++--
 data/osk-layouts/latam.json       | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/lt.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/lv.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/mk.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/mn.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/my.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/nl.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/no.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ph.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/pl.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/pt.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ro.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/rs.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ru.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/se.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/si.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/sk.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/th.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/tr.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/ua.json          | 176 +++++++++++++++++++++++++++++++++++--
 data/osk-layouts/uk.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/us.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/vn.json          | 178 ++++++++++++++++++++++++++++++++++++--
 data/osk-layouts/za.json          | 178 ++++++++++++++++++++++++++++++++++++--
 js/ui/keyboard.js                 | 154 +--------------------------------
 58 files changed, 9228 insertions(+), 624 deletions(-)
---
diff --git a/data/osk-layouts/am.json b/data/osk-layouts/am.json
index 8378a480f1..e547284586 100644
--- a/data/osk-layouts/am.json
+++ b/data/osk-layouts/am.json
@@ -54,6 +54,11 @@
             "strings": [
               "ծ"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -107,6 +112,11 @@
             "strings": [
               "պ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
@@ -162,6 +172,12 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "զ"
@@ -201,24 +217,48 @@
             "strings": [
               "շ"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
               "։"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -277,6 +317,11 @@
             "strings": [
               "Ծ"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -330,6 +375,11 @@
             "strings": [
               "Պ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
@@ -385,6 +435,12 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Զ"
@@ -424,24 +480,48 @@
             "strings": [
               "Շ"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
               "։"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -515,6 +595,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -579,9 +664,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -631,9 +727,21 @@
               "՞",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -645,10 +753,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -674,6 +782,18 @@
               "՛",
               "՟"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -739,6 +859,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -795,9 +920,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -832,9 +968,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -852,10 +1000,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -881,6 +1029,18 @@
               "՛",
               "՟"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/ara.json b/data/osk-layouts/ara.json
index 858ecbd5f8..00cabb365e 100644
--- a/data/osk-layouts/ara.json
+++ b/data/osk-layouts/ara.json
@@ -65,6 +65,11 @@
               "ج",
               "چ"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -137,6 +142,11 @@
             "strings": [
               "ط"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
@@ -194,16 +204,22 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "،"
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -225,6 +241,18 @@
               ")",
               "("
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -298,6 +326,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -365,9 +398,20 @@
               "{",
               "["
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -415,9 +459,21 @@
               "؟",
               "?"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -429,10 +485,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -465,6 +521,18 @@
               "َ",
               "ـ"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -526,6 +594,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -582,9 +655,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -619,9 +703,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -639,10 +735,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -675,6 +771,18 @@
               "َ",
               "ـ"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/at.json b/data/osk-layouts/at.json
index 9291521245..7f585605b8 100644
--- a/data/osk-layouts/at.json
+++ b/data/osk-layouts/at.json
@@ -72,6 +72,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -130,9 +135,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "y"
@@ -169,19 +185,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -195,6 +223,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -271,6 +311,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -329,9 +374,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Y"
@@ -368,19 +424,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -394,6 +462,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -467,6 +547,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -531,9 +616,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -581,9 +677,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -595,10 +703,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -610,6 +718,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -675,6 +795,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -732,9 +857,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -769,9 +905,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -789,10 +937,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -804,6 +952,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/be.json b/data/osk-layouts/be.json
index b216c8cb87..1679d83789 100644
--- a/data/osk-layouts/be.json
+++ b/data/osk-layouts/be.json
@@ -82,6 +82,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -137,9 +142,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -176,19 +192,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -202,6 +230,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -288,6 +328,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -343,9 +388,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -382,19 +438,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -408,6 +476,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -481,6 +561,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -545,9 +630,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -595,9 +691,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -609,10 +717,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -624,6 +732,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -689,6 +809,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -746,9 +871,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -783,9 +919,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -803,10 +951,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -818,6 +966,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -825,4 +985,4 @@
   ],
   "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
index a452fb756a..b0ac5e2430 100644
--- a/data/osk-layouts/bg.json
+++ b/data/osk-layouts/bg.json
@@ -60,6 +60,11 @@
             "strings": [
               "ч"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -117,9 +122,20 @@
             "strings": [
               "щ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "з"
@@ -159,19 +175,31 @@
             "strings": [
               "ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -185,6 +213,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -249,6 +289,11 @@
             "strings": [
               "Ч"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -306,9 +351,20 @@
             "strings": [
               "Щ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "З"
@@ -348,19 +404,31 @@
             "strings": [
               "Ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -374,6 +442,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -447,6 +527,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -511,9 +596,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -561,9 +657,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -575,10 +683,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -590,6 +698,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -655,6 +775,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -711,9 +836,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -748,9 +884,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -768,10 +916,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -783,6 +931,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/by.json b/data/osk-layouts/by.json
index 5aa936e6b8..107f3624e5 100644
--- a/data/osk-layouts/by.json
+++ b/data/osk-layouts/by.json
@@ -60,6 +60,11 @@
             "strings": [
               "х"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -117,9 +122,20 @@
             "strings": [
               "э"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "я"
@@ -165,19 +181,31 @@
             "strings": [
               "ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -191,6 +219,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -255,6 +295,11 @@
             "strings": [
               "Х"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -312,9 +357,20 @@
             "strings": [
               "Э"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Я"
@@ -360,19 +416,31 @@
             "strings": [
               "Ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -386,6 +454,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -459,6 +539,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -523,9 +608,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -573,9 +669,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -587,10 +695,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -602,6 +710,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -667,6 +787,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -723,9 +848,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -760,9 +896,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -780,10 +928,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -795,6 +943,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/ca.json b/data/osk-layouts/ca.json
index eaebe20b2c..2f28076c88 100644
--- a/data/osk-layouts/ca.json
+++ b/data/osk-layouts/ca.json
@@ -87,6 +87,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -144,9 +149,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -184,19 +200,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -210,6 +238,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -301,6 +341,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -358,9 +403,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -398,19 +454,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -424,6 +492,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -497,6 +577,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -561,9 +646,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -611,9 +707,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -625,10 +733,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -640,6 +748,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -705,6 +825,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -761,9 +886,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -798,9 +934,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -818,10 +966,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -833,6 +981,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -840,4 +1000,4 @@
   ],
   "locale": "fr-CA",
   "name": "French Canada"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ch+fr.json b/data/osk-layouts/ch+fr.json
index 2f1cff87af..4b6d355b9e 100644
--- a/data/osk-layouts/ch+fr.json
+++ b/data/osk-layouts/ch+fr.json
@@ -72,6 +72,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -130,9 +135,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "y"
@@ -169,19 +185,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -195,6 +223,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -271,6 +311,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -329,9 +374,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Y"
@@ -368,19 +424,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -394,6 +462,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -467,6 +547,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -531,9 +616,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -581,9 +677,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -595,10 +703,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -610,6 +718,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -675,6 +795,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -732,9 +857,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -769,9 +905,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -789,10 +937,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -804,6 +952,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -811,4 +971,4 @@
   ],
   "locale": "fr-CH",
   "name": "Swiss French"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ch.json b/data/osk-layouts/ch.json
index c108c1879f..a6ecd307d1 100644
--- a/data/osk-layouts/ch.json
+++ b/data/osk-layouts/ch.json
@@ -72,6 +72,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -130,9 +135,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "y"
@@ -169,19 +185,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -195,6 +223,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -271,6 +311,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -329,9 +374,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Y"
@@ -368,19 +424,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -394,6 +462,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -467,6 +547,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -531,9 +616,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -581,9 +677,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -595,10 +703,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -610,6 +718,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -675,6 +795,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -732,9 +857,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -769,9 +905,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -789,10 +937,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -804,6 +952,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -811,4 +971,4 @@
   ],
   "locale": "de-CH",
   "name": "Swiss German"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/cz.json b/data/osk-layouts/cz.json
index 35988275e5..3f45065c13 100644
--- a/data/osk-layouts/cz.json
+++ b/data/osk-layouts/cz.json
@@ -87,6 +87,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -146,9 +151,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "y",
@@ -191,19 +207,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -217,6 +245,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -308,6 +348,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -367,9 +412,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Y",
@@ -412,19 +468,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -438,6 +506,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -511,6 +591,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -575,9 +660,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -625,9 +721,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -639,10 +747,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -654,6 +762,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -719,6 +839,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -775,9 +900,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -812,9 +948,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -832,10 +980,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -847,6 +995,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -854,4 +1014,4 @@
   ],
   "locale": "cs",
   "name": "Czech"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/de.json b/data/osk-layouts/de.json
index 9f48ba4de1..7b9a2ad336 100644
--- a/data/osk-layouts/de.json
+++ b/data/osk-layouts/de.json
@@ -72,6 +72,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -130,9 +135,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "y"
@@ -169,19 +185,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -195,6 +223,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -271,6 +311,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -329,9 +374,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Y"
@@ -368,19 +424,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -394,6 +462,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -467,6 +547,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -531,9 +616,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -581,9 +677,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -595,10 +703,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -610,6 +718,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -675,6 +795,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -732,9 +857,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -769,9 +905,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -789,10 +937,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -804,6 +952,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -811,4 +971,4 @@
   ],
   "locale": "de",
   "name": "German"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/dk.json b/data/osk-layouts/dk.json
index 8ce8088340..85e69fa278 100644
--- a/data/osk-layouts/dk.json
+++ b/data/osk-layouts/dk.json
@@ -76,6 +76,11 @@
             "strings": [
               "å"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -146,9 +151,20 @@
               "ø",
               "ö"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -185,19 +201,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 4
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -211,6 +239,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -291,6 +331,11 @@
             "strings": [
               "Å"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -361,9 +406,20 @@
               "Ø",
               "Ö"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -400,19 +456,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 4
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -426,6 +494,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -499,6 +579,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -563,9 +648,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -613,9 +709,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -627,10 +735,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -642,6 +750,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -707,6 +827,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -764,9 +889,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -801,9 +937,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -821,10 +969,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -836,6 +984,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/ee.json b/data/osk-layouts/ee.json
index e762a35d9e..65336fad40 100644
--- a/data/osk-layouts/ee.json
+++ b/data/osk-layouts/ee.json
@@ -97,6 +97,11 @@
             "strings": [
               "ü"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -176,9 +181,20 @@
             "strings": [
               "ä"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z",
@@ -223,19 +239,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 4
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -249,6 +277,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -350,6 +390,11 @@
             "strings": [
               "Ü"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -429,9 +474,20 @@
             "strings": [
               "Ä"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z",
@@ -476,19 +532,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 4
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -502,6 +570,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -575,6 +655,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -639,9 +724,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -689,9 +785,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -703,10 +811,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -718,6 +826,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -783,6 +903,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -840,9 +965,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -877,9 +1013,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -897,10 +1045,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -912,6 +1060,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/epo.json b/data/osk-layouts/epo.json
index 45fed380d7..a3aae9e7cf 100644
--- a/data/osk-layouts/epo.json
+++ b/data/osk-layouts/epo.json
@@ -106,6 +106,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -189,9 +194,20 @@
             "strings": [
               "ĵ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z",
@@ -242,19 +258,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -268,6 +296,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -378,6 +418,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -461,9 +506,20 @@
             "strings": [
               "Ĵ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z",
@@ -514,19 +570,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -540,6 +608,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -613,6 +693,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -677,9 +762,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -727,9 +823,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -741,10 +849,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -756,6 +864,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -821,6 +941,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -877,9 +1002,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -914,9 +1050,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -934,10 +1082,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -949,6 +1097,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/es+cat.json b/data/osk-layouts/es+cat.json
index 57e9b954b1..947892037f 100644
--- a/data/osk-layouts/es+cat.json
+++ b/data/osk-layouts/es+cat.json
@@ -81,6 +81,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -145,9 +150,20 @@
             "strings": [
               "ç"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -187,19 +203,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -212,6 +240,18 @@
               ";",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -297,6 +337,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -361,9 +406,20 @@
             "strings": [
               "Ç"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -403,19 +459,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -428,6 +496,18 @@
               ";",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -501,6 +581,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -565,9 +650,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -615,9 +711,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -629,10 +737,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -645,6 +753,18 @@
               "?",
               "·"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -710,6 +830,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -767,9 +892,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -804,9 +940,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -824,10 +972,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -840,6 +988,18 @@
               "?",
               "·"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/es.json b/data/osk-layouts/es.json
index 8fd6e06705..e631ca2e79 100644
--- a/data/osk-layouts/es.json
+++ b/data/osk-layouts/es.json
@@ -81,6 +81,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -143,9 +148,20 @@
             "strings": [
               "ñ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -185,19 +201,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -211,6 +239,18 @@
               "@",
               "¿"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -296,6 +336,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -358,9 +403,20 @@
             "strings": [
               "Ñ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -400,19 +456,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -426,6 +494,18 @@
               "@",
               "¿"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -499,6 +579,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -563,9 +648,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -613,9 +709,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -627,10 +735,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -645,6 +753,18 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -710,6 +830,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -767,9 +892,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -804,9 +940,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -824,10 +972,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -842,6 +990,18 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/fi.json b/data/osk-layouts/fi.json
index c93d73af93..c433d22986 100644
--- a/data/osk-layouts/fi.json
+++ b/data/osk-layouts/fi.json
@@ -67,6 +67,11 @@
             "strings": [
               "å"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -135,9 +140,20 @@
               "ä",
               "æ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z",
@@ -175,19 +191,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 4
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -201,6 +229,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -272,6 +312,11 @@
             "strings": [
               "Å"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -340,9 +385,20 @@
               "Ä",
               "Æ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z",
@@ -380,19 +436,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 4
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -406,6 +474,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -479,6 +559,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -543,9 +628,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -593,9 +689,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -607,10 +715,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -622,6 +730,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -687,6 +807,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -744,9 +869,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -781,9 +917,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -801,10 +949,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -816,6 +964,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/fr.json b/data/osk-layouts/fr.json
index 44803c0552..a32be40eff 100644
--- a/data/osk-layouts/fr.json
+++ b/data/osk-layouts/fr.json
@@ -97,6 +97,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -149,9 +154,20 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "w"
@@ -193,19 +209,31 @@
               "‹",
               "›"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -219,6 +247,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -320,6 +360,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -372,9 +417,20 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "W"
@@ -416,19 +472,31 @@
               "‹",
               "›"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -442,6 +510,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -515,6 +595,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -579,9 +664,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -629,9 +725,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -643,10 +751,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -658,6 +766,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -723,6 +843,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -780,9 +905,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -817,9 +953,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -837,10 +985,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -852,6 +1000,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/ge.json b/data/osk-layouts/ge.json
index c6a1a33c99..e10e0f20a2 100644
--- a/data/osk-layouts/ge.json
+++ b/data/osk-layouts/ge.json
@@ -57,6 +57,11 @@
             "strings": [
               "პ"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -109,6 +114,11 @@
             "strings": [
               "ლ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2.5
           }
         ],
         [
@@ -152,16 +162,22 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -175,6 +191,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -248,6 +276,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -312,9 +345,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -362,9 +406,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -376,10 +432,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -391,6 +447,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -456,6 +524,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -512,9 +585,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -549,9 +633,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -569,10 +665,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -584,6 +680,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/gr.json b/data/osk-layouts/gr.json
index 4395d9d287..30f36a5575 100644
--- a/data/osk-layouts/gr.json
+++ b/data/osk-layouts/gr.json
@@ -63,6 +63,11 @@
             "strings": [
               "π"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -112,9 +117,20 @@
             "strings": [
               "λ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "ζ"
@@ -150,19 +166,31 @@
             "strings": [
               "μ"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -176,6 +204,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -243,6 +283,11 @@
             "strings": [
               "Π"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -292,9 +337,20 @@
             "strings": [
               "Λ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Ζ"
@@ -330,19 +386,31 @@
             "strings": [
               "Μ"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -356,6 +424,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -429,6 +509,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -493,9 +578,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -543,9 +639,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -557,10 +665,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -572,6 +680,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -637,6 +757,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -694,9 +819,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -731,9 +867,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -751,10 +899,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -766,6 +914,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -773,4 +933,4 @@
   ],
   "locale": "el",
   "name": "Greek"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/hr.json b/data/osk-layouts/hr.json
index a800c21f51..63752d7909 100644
--- a/data/osk-layouts/hr.json
+++ b/data/osk-layouts/hr.json
@@ -57,6 +57,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -108,9 +113,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "y"
@@ -150,19 +166,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -176,6 +204,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -237,6 +277,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -288,9 +333,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Y"
@@ -330,19 +386,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -356,6 +424,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -429,6 +509,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -493,9 +578,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -543,9 +639,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -557,10 +665,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -572,6 +680,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -637,6 +757,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -693,9 +818,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -730,9 +866,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -750,10 +898,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -765,6 +913,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -772,4 +932,4 @@
   ],
   "locale": "hr",
   "name": "Croatian"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/hu.json b/data/osk-layouts/hu.json
index e66f704c67..7909636c06 100644
--- a/data/osk-layouts/hu.json
+++ b/data/osk-layouts/hu.json
@@ -82,6 +82,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -137,9 +142,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "y"
@@ -174,19 +190,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -200,6 +228,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -286,6 +326,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -341,9 +386,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Y"
@@ -378,19 +434,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -404,6 +472,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -477,6 +557,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -541,9 +626,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -591,9 +687,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -605,10 +713,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -620,6 +728,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -685,6 +805,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -741,9 +866,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -778,9 +914,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -798,10 +946,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -813,6 +961,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -820,4 +980,4 @@
   ],
   "locale": "hu",
   "name": "Hungarian"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/id.json b/data/osk-layouts/id.json
index 5e7701a793..d7bd6a0c7d 100644
--- a/data/osk-layouts/id.json
+++ b/data/osk-layouts/id.json
@@ -54,6 +54,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -101,9 +106,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -138,19 +154,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -164,6 +192,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -222,6 +262,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -269,9 +314,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -306,19 +362,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -332,6 +400,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -405,6 +485,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -469,9 +554,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -519,9 +615,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -533,10 +641,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -548,6 +656,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -613,6 +733,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -669,9 +794,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -706,9 +842,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -726,10 +874,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -741,6 +889,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -748,4 +908,4 @@
   ],
   "locale": "id",
   "name": "Indonesian"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/il.json b/data/osk-layouts/il.json
index de8a4a364b..61b6132e92 100644
--- a/data/osk-layouts/il.json
+++ b/data/osk-layouts/il.json
@@ -56,6 +56,11 @@
             "strings": [
               "פ"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -111,6 +116,11 @@
             "strings": [
               "ף"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
@@ -165,16 +175,22 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -188,6 +204,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -261,6 +289,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -327,9 +360,20 @@
               "{",
               "["
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -375,9 +419,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -389,10 +445,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -405,6 +461,18 @@
               ".",
               "?"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -470,6 +538,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -527,9 +600,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -564,9 +648,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -584,10 +680,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -600,6 +696,18 @@
               ".",
               "?"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/in+bolnagri.json b/data/osk-layouts/in+bolnagri.json
index 86835df6d4..fae28a782b 100644
--- a/data/osk-layouts/in+bolnagri.json
+++ b/data/osk-layouts/in+bolnagri.json
@@ -71,6 +71,11 @@
               "ड॒",
               "ड़"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -133,6 +138,11 @@
             "strings": [
               "ट"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
@@ -190,16 +200,22 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -213,6 +229,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -286,6 +314,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -351,9 +384,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -401,9 +445,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -415,10 +471,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -430,6 +486,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -495,6 +563,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -552,9 +625,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -589,9 +673,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -609,10 +705,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -624,6 +720,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/in+mal.json b/data/osk-layouts/in+mal.json
index b7e5b5e780..ed4fa9ac97 100644
--- a/data/osk-layouts/in+mal.json
+++ b/data/osk-layouts/in+mal.json
@@ -64,6 +64,11 @@
             "strings": [
               "‍"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -121,9 +126,20 @@
             "strings": [
               "ട"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "െ"
@@ -170,19 +186,31 @@
             "strings": [
               "യ"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -196,6 +224,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -259,6 +299,11 @@
             "strings": [
               "ഞ"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -316,9 +361,20 @@
             "strings": [
               "ഠ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "എ"
@@ -363,19 +419,31 @@
             "strings": [
               "യ"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -389,6 +457,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -472,6 +552,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -537,9 +622,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -587,9 +683,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -601,10 +709,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -616,6 +724,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -681,6 +801,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -702,7 +827,7 @@
           {
             "strings": [
               "¥"
-             ]
+            ]
           },
           {
             "strings": [
@@ -737,9 +862,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -774,9 +910,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -794,10 +942,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -809,6 +957,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/ir.json b/data/osk-layouts/ir.json
index 6826eabfa7..0b6f50e544 100644
--- a/data/osk-layouts/ir.json
+++ b/data/osk-layouts/ir.json
@@ -65,6 +65,11 @@
               "ج",
               "چ"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -137,6 +142,11 @@
             "strings": [
               "ط"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
@@ -194,16 +204,22 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "،"
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -225,6 +241,18 @@
               ")",
               "("
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -298,6 +326,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -368,9 +401,20 @@
               "{",
               "["
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -418,9 +462,21 @@
               "؟",
               "?"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -432,10 +488,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -468,6 +524,18 @@
               "َ",
               "ـ"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -529,6 +597,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -586,9 +659,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -623,9 +707,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "«",
@@ -643,10 +739,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -679,6 +775,18 @@
               "َ",
               "ـ"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/is.json b/data/osk-layouts/is.json
index c451c8ba13..3af80dd0d1 100644
--- a/data/osk-layouts/is.json
+++ b/data/osk-layouts/is.json
@@ -83,6 +83,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -139,9 +144,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -176,19 +192,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -202,6 +230,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -289,6 +329,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -345,9 +390,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -382,19 +438,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -408,6 +476,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -481,6 +561,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -545,9 +630,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -595,9 +691,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -609,10 +717,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -624,6 +732,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -689,6 +809,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -745,9 +870,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -782,9 +918,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -802,10 +950,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -817,6 +965,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -824,4 +984,4 @@
   ],
   "locale": "is",
   "name": "Icelandic"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/it.json b/data/osk-layouts/it.json
index 88ad78966e..d09cd1f8e4 100644
--- a/data/osk-layouts/it.json
+++ b/data/osk-layouts/it.json
@@ -81,6 +81,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -137,9 +142,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -174,19 +190,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -200,6 +228,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -285,6 +325,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -341,9 +386,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -378,19 +434,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -404,6 +472,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -477,6 +557,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -541,9 +626,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -591,9 +687,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -605,10 +713,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -620,6 +728,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -685,6 +805,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -742,9 +867,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -779,9 +915,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -799,10 +947,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -814,6 +962,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -821,4 +981,4 @@
   ],
   "locale": "it",
   "name": "Italian"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ke.json b/data/osk-layouts/ke.json
index 0a7250ebba..4c94033f43 100644
--- a/data/osk-layouts/ke.json
+++ b/data/osk-layouts/ke.json
@@ -77,6 +77,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -134,9 +139,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -173,19 +189,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -199,6 +227,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -280,6 +320,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -337,9 +382,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -376,19 +432,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -402,6 +470,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -475,6 +555,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -539,9 +624,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -589,9 +685,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -603,10 +711,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -618,6 +726,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -683,6 +803,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -739,9 +864,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -776,9 +912,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -796,10 +944,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -811,6 +959,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -818,4 +978,4 @@
   ],
   "locale": "sw",
   "name": "Swahili"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/kg.json b/data/osk-layouts/kg.json
index c3de4d1571..3c6df45bd0 100644
--- a/data/osk-layouts/kg.json
+++ b/data/osk-layouts/kg.json
@@ -62,6 +62,11 @@
             "strings": [
               "х"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -120,9 +125,20 @@
             "strings": [
               "э"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "я"
@@ -168,19 +184,31 @@
             "strings": [
               "ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -194,6 +222,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -260,6 +300,11 @@
             "strings": [
               "Х"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -318,9 +363,20 @@
             "strings": [
               "Э"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Я"
@@ -366,19 +422,31 @@
             "strings": [
               "Ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -392,6 +460,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -465,6 +545,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -529,9 +614,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -579,9 +675,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -593,10 +701,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -608,6 +716,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -673,6 +793,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -729,9 +854,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -766,9 +902,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -786,10 +934,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -801,6 +949,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/kh.json b/data/osk-layouts/kh.json
index b99ed23de8..555fed44cc 100644
--- a/data/osk-layouts/kh.json
+++ b/data/osk-layouts/kh.json
@@ -77,6 +77,11 @@
               "ឲ",
               "ឱ"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -144,6 +149,11 @@
               "ឩ",
               "ឨ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
@@ -263,16 +273,22 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 7,
             "strings": [
               " "
-            ]
+            ],
+            "width": 7
           },
           {
             "strings": [
@@ -286,6 +302,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -359,6 +387,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -424,9 +457,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -474,9 +518,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -488,10 +544,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -503,6 +559,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -568,6 +636,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -624,9 +697,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -661,9 +745,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -681,10 +777,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -696,6 +792,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/la.json b/data/osk-layouts/la.json
index b50ef2d303..e420c227db 100644
--- a/data/osk-layouts/la.json
+++ b/data/osk-layouts/la.json
@@ -73,6 +73,11 @@
             "strings": [
               "ໍ"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -136,6 +141,11 @@
             "strings": [
               "ລ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
@@ -253,16 +263,22 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 7,
             "strings": [
               " "
-            ]
+            ],
+            "width": 7
           },
           {
             "strings": [
@@ -276,6 +292,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -349,6 +377,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -414,9 +447,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -464,9 +508,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -478,10 +534,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -493,6 +549,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -558,6 +626,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -615,9 +688,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -652,9 +736,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -672,10 +768,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -687,6 +783,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/latam.json b/data/osk-layouts/latam.json
index 955ead8d36..b3c68bbc8c 100644
--- a/data/osk-layouts/latam.json
+++ b/data/osk-layouts/latam.json
@@ -81,6 +81,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -143,9 +148,20 @@
             "strings": [
               "ñ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -185,19 +201,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -211,6 +239,18 @@
               "@",
               "¿"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -296,6 +336,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -358,9 +403,20 @@
             "strings": [
               "Ñ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -400,19 +456,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -426,6 +494,18 @@
               "@",
               "¿"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -499,6 +579,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -563,9 +648,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -613,9 +709,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -627,10 +735,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -645,6 +753,18 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -710,6 +830,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -766,9 +891,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -803,9 +939,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -823,10 +971,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -841,6 +989,18 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/lt.json b/data/osk-layouts/lt.json
index d0d7533a6f..40cabb6a16 100644
--- a/data/osk-layouts/lt.json
+++ b/data/osk-layouts/lt.json
@@ -93,6 +93,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -161,9 +166,20 @@
               "ĺ",
               "ľ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z",
@@ -208,19 +224,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -234,6 +262,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -331,6 +371,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -399,9 +444,20 @@
               "Ĺ",
               "Ľ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z",
@@ -446,19 +502,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -472,6 +540,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -545,6 +625,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -609,9 +694,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -659,9 +755,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -673,10 +781,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -688,6 +796,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -753,6 +873,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -809,9 +934,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -846,9 +982,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -866,10 +1014,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -881,6 +1029,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -888,4 +1048,4 @@
   ],
   "locale": "lt",
   "name": "Lithuanian"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/lv.json b/data/osk-layouts/lv.json
index c2dcb717a2..49e2c6eea5 100644
--- a/data/osk-layouts/lv.json
+++ b/data/osk-layouts/lv.json
@@ -92,6 +92,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -160,9 +165,20 @@
               "ĺ",
               "ľ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z",
@@ -207,19 +223,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -233,6 +261,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -329,6 +369,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -397,9 +442,20 @@
               "Ĺ",
               "Ľ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z",
@@ -444,19 +500,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -470,6 +538,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -543,6 +623,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -607,9 +692,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -657,9 +753,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -671,10 +779,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -686,6 +794,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -751,6 +871,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -807,9 +932,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -844,9 +980,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -864,10 +1012,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -879,6 +1027,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -886,4 +1046,4 @@
   ],
   "locale": "lv",
   "name": "Latvian"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/mk.json b/data/osk-layouts/mk.json
index 9b0f3e9f95..9f42772b8f 100644
--- a/data/osk-layouts/mk.json
+++ b/data/osk-layouts/mk.json
@@ -61,6 +61,11 @@
             "strings": [
               "ш"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -118,9 +123,20 @@
             "strings": [
               "ќ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "з"
@@ -165,19 +181,31 @@
             "strings": [
               "ж"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -191,6 +219,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -256,6 +296,11 @@
             "strings": [
               "Ш"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -313,9 +358,20 @@
             "strings": [
               "Ќ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "З"
@@ -360,19 +416,31 @@
             "strings": [
               "Ж"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -386,6 +454,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -459,6 +539,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -523,9 +608,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -573,9 +669,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -587,10 +695,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -602,6 +710,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -667,6 +787,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -723,9 +848,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -760,9 +896,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -780,10 +928,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -795,6 +943,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/mn.json b/data/osk-layouts/mn.json
index fe8e3cf71c..64ee5a0057 100644
--- a/data/osk-layouts/mn.json
+++ b/data/osk-layouts/mn.json
@@ -60,6 +60,11 @@
             "strings": [
               "к"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -117,9 +122,20 @@
             "strings": [
               "п"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "я"
@@ -167,19 +183,31 @@
               "в",
               "ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -193,6 +221,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -257,6 +297,11 @@
             "strings": [
               "К"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -314,9 +359,20 @@
             "strings": [
               "П"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Я"
@@ -364,19 +420,31 @@
               "В",
               "Ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -390,6 +458,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -463,6 +543,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -528,9 +613,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -578,9 +674,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -592,10 +700,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -607,6 +715,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -672,6 +792,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -729,9 +854,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -766,9 +902,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -786,10 +934,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -801,6 +949,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/my.json b/data/osk-layouts/my.json
index 60b1fb52c7..a094ac5d6c 100644
--- a/data/osk-layouts/my.json
+++ b/data/osk-layouts/my.json
@@ -54,6 +54,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -101,9 +106,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -138,19 +154,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -164,6 +192,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -222,6 +262,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -269,9 +314,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -306,19 +362,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -332,6 +400,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -405,6 +485,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -469,9 +554,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -519,9 +615,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -533,10 +641,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -548,6 +656,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -613,6 +733,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -669,9 +794,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -706,9 +842,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -726,10 +874,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -741,6 +889,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -748,4 +908,4 @@
   ],
   "locale": "ms",
   "name": "Malay"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/nl.json b/data/osk-layouts/nl.json
index 22c0aa138f..8687ed7c24 100644
--- a/data/osk-layouts/nl.json
+++ b/data/osk-layouts/nl.json
@@ -82,6 +82,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -137,9 +142,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -176,19 +192,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -202,6 +230,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -288,6 +328,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -343,9 +388,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -382,19 +438,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -408,6 +476,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -481,6 +561,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -545,9 +630,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -595,9 +691,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -609,10 +717,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -624,6 +732,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -689,6 +809,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -746,9 +871,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -783,9 +919,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -803,10 +951,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -818,6 +966,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -825,4 +985,4 @@
   ],
   "locale": "nl",
   "name": "Dutch"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/no.json b/data/osk-layouts/no.json
index f0d9741f45..d9a47ed031 100644
--- a/data/osk-layouts/no.json
+++ b/data/osk-layouts/no.json
@@ -76,6 +76,11 @@
             "strings": [
               "å"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -146,9 +151,20 @@
               "æ",
               "ä"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -185,19 +201,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 4
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -211,6 +239,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -291,6 +331,11 @@
             "strings": [
               "Å"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -361,9 +406,20 @@
               "Æ",
               "Ä"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -400,19 +456,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 4
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -426,6 +494,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -499,6 +579,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -563,9 +648,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -613,9 +709,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -627,10 +735,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -642,6 +750,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -707,6 +827,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -764,9 +889,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -801,9 +937,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -821,10 +969,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -836,6 +984,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/ph.json b/data/osk-layouts/ph.json
index 7d838f4cea..4d40baacba 100644
--- a/data/osk-layouts/ph.json
+++ b/data/osk-layouts/ph.json
@@ -54,6 +54,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -101,9 +106,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -138,19 +154,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -164,6 +192,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -222,6 +262,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -269,9 +314,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -306,19 +362,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -332,6 +400,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -405,6 +485,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -469,9 +554,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -519,9 +615,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -533,10 +641,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -548,6 +656,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -613,6 +733,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -669,9 +794,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -706,9 +842,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -726,10 +874,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -741,6 +889,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -748,4 +908,4 @@
   ],
   "locale": "fil",
   "name": "Filipino"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/pl.json b/data/osk-layouts/pl.json
index ea5e547fc7..8599dc4b4f 100644
--- a/data/osk-layouts/pl.json
+++ b/data/osk-layouts/pl.json
@@ -69,6 +69,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -129,9 +134,20 @@
               "l",
               "ł"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z",
@@ -174,19 +190,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -200,6 +228,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -273,6 +313,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -333,9 +378,20 @@
               "L",
               "Ł"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z",
@@ -378,19 +434,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -404,6 +472,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -477,6 +557,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -541,9 +626,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -591,9 +687,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -605,10 +713,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -620,6 +728,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -685,6 +805,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -741,9 +866,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -778,9 +914,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -798,10 +946,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -813,6 +961,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -820,4 +980,4 @@
   ],
   "locale": "pl",
   "name": "Polish"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/pt.json b/data/osk-layouts/pt.json
index e19bbb3876..dbb29bf7dd 100644
--- a/data/osk-layouts/pt.json
+++ b/data/osk-layouts/pt.json
@@ -81,6 +81,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -136,9 +141,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -176,19 +192,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -202,6 +230,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -287,6 +327,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -342,9 +387,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -382,19 +438,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -408,6 +476,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -481,6 +561,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -545,9 +630,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -595,9 +691,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -609,10 +717,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -624,6 +732,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -689,6 +809,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -746,9 +871,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -783,9 +919,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -803,10 +951,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -818,6 +966,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -825,4 +985,4 @@
   ],
   "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
index f9ea966598..9ff1f100d8 100644
--- a/data/osk-layouts/ro.json
+++ b/data/osk-layouts/ro.json
@@ -61,6 +61,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -121,9 +126,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -158,19 +174,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -184,6 +212,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -249,6 +289,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -309,9 +354,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -346,19 +402,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -372,6 +440,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -445,6 +525,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -509,9 +594,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -559,9 +655,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -573,10 +681,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -588,6 +696,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -653,6 +773,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -709,9 +834,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -746,9 +882,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -766,10 +914,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -781,6 +929,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -788,4 +948,4 @@
   ],
   "locale": "ro",
   "name": "Romanian"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/rs.json b/data/osk-layouts/rs.json
index d9b3ad4da3..6ce4f5405d 100644
--- a/data/osk-layouts/rs.json
+++ b/data/osk-layouts/rs.json
@@ -61,6 +61,11 @@
             "strings": [
               "ш"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -118,9 +123,20 @@
             "strings": [
               "ћ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "ѕ"
@@ -165,19 +181,31 @@
             "strings": [
               "ж"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -191,6 +219,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -256,6 +296,11 @@
             "strings": [
               "Ш"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -313,9 +358,20 @@
             "strings": [
               "Ћ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Ѕ"
@@ -360,19 +416,31 @@
             "strings": [
               "Ж"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -386,6 +454,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -459,6 +539,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -523,9 +608,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -573,9 +669,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -587,10 +695,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -602,6 +710,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -667,6 +787,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -723,9 +848,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -760,9 +896,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -780,10 +928,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -795,6 +943,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/ru.json b/data/osk-layouts/ru.json
index 0f574b6287..a04fd76da8 100644
--- a/data/osk-layouts/ru.json
+++ b/data/osk-layouts/ru.json
@@ -60,6 +60,11 @@
             "strings": [
               "х"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -117,9 +122,20 @@
             "strings": [
               "э"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "я"
@@ -165,19 +181,31 @@
             "strings": [
               "ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -191,6 +219,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -255,6 +295,11 @@
             "strings": [
               "Х"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -312,9 +357,20 @@
             "strings": [
               "Э"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Я"
@@ -360,19 +416,31 @@
             "strings": [
               "Ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -386,6 +454,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -459,6 +539,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -523,9 +608,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -573,9 +669,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -587,10 +695,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -602,6 +710,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -667,6 +787,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -723,9 +848,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -760,9 +896,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -780,10 +928,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -795,6 +943,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/se.json b/data/osk-layouts/se.json
index a378ffe6a0..78ed750ada 100644
--- a/data/osk-layouts/se.json
+++ b/data/osk-layouts/se.json
@@ -84,6 +84,11 @@
             "strings": [
               "å"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -156,9 +161,20 @@
               "ä",
               "æ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z",
@@ -202,19 +218,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 4
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -228,6 +256,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -316,6 +356,11 @@
             "strings": [
               "Å"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -388,9 +433,20 @@
               "Ä",
               "Æ"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z",
@@ -434,19 +490,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 4
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -460,6 +528,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -533,6 +613,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -597,9 +682,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -647,9 +743,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -661,10 +769,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -676,6 +784,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -741,6 +861,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -798,9 +923,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -835,9 +971,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -855,10 +1003,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -870,6 +1018,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/si.json b/data/osk-layouts/si.json
index e39159f433..8c05a03c1f 100644
--- a/data/osk-layouts/si.json
+++ b/data/osk-layouts/si.json
@@ -54,6 +54,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -103,9 +108,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z",
@@ -143,19 +159,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -169,6 +197,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -227,6 +267,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -276,9 +321,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z",
@@ -316,19 +372,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -342,6 +410,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -415,6 +495,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -479,9 +564,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -529,9 +625,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -543,10 +651,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -558,6 +666,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -623,6 +743,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -680,9 +805,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -717,9 +853,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -737,10 +885,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -752,6 +900,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -759,4 +919,4 @@
   ],
   "locale": "sl",
   "name": "Slovenian"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/sk.json b/data/osk-layouts/sk.json
index 40c68a68a2..94a5d0062e 100644
--- a/data/osk-layouts/sk.json
+++ b/data/osk-layouts/sk.json
@@ -92,6 +92,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -160,9 +165,20 @@
               "ļ",
               "ł"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z",
@@ -208,19 +224,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -234,6 +262,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -330,6 +370,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -398,9 +443,20 @@
               "Ļ",
               "Ł"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z",
@@ -446,19 +502,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -472,6 +540,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -545,6 +625,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -609,9 +694,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -659,9 +755,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -673,10 +781,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -688,6 +796,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -753,6 +873,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -810,9 +935,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -847,9 +983,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -867,10 +1015,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -882,6 +1030,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -889,4 +1049,4 @@
   ],
   "locale": "sk",
   "name": "Slovak"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/th.json b/data/osk-layouts/th.json
index 4f110e9d56..10cdd52304 100644
--- a/data/osk-layouts/th.json
+++ b/data/osk-layouts/th.json
@@ -73,6 +73,11 @@
               "ช",
               "๙"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -136,6 +141,11 @@
             "strings": [
               "ล"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
@@ -201,6 +211,12 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "ผ"
@@ -250,19 +266,31 @@
             "strings": [
               "ฝ"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 7,
             "strings": [
               " "
-            ]
+            ],
+            "width": 7
           },
           {
             "strings": [
@@ -280,6 +308,18 @@
               "๛",
               "๚"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -348,6 +388,11 @@
             "strings": [
               "๙"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -410,6 +455,11 @@
             "strings": [
               ","
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
@@ -475,6 +525,12 @@
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "("
@@ -524,19 +580,31 @@
             "strings": [
               "ฦ"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 7,
             "strings": [
               " "
-            ]
+            ],
+            "width": 7
           },
           {
             "strings": [
@@ -554,6 +622,18 @@
               "๛",
               "๚"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -627,6 +707,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -692,9 +777,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -742,9 +838,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -756,10 +864,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -771,6 +879,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -836,6 +956,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -893,9 +1018,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -930,9 +1066,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -950,10 +1098,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -965,6 +1113,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/tr.json b/data/osk-layouts/tr.json
index 24f8d29bb6..137b0ba66c 100644
--- a/data/osk-layouts/tr.json
+++ b/data/osk-layouts/tr.json
@@ -74,6 +74,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -127,9 +132,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -167,19 +183,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -193,6 +221,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -271,6 +311,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -324,9 +369,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -364,19 +420,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -390,6 +458,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -463,6 +543,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -527,9 +612,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -577,9 +673,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -591,10 +699,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -606,6 +714,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -671,6 +791,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -728,9 +853,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -765,9 +901,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -785,10 +933,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -800,6 +948,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -807,4 +967,4 @@
   ],
   "locale": "tr",
   "name": "Turkish"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/ua.json b/data/osk-layouts/ua.json
index b2b2b0b981..ec3a68d962 100644
--- a/data/osk-layouts/ua.json
+++ b/data/osk-layouts/ua.json
@@ -60,6 +60,11 @@
             "strings": [
               "х"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -118,9 +123,20 @@
             "strings": [
               "є"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "я"
@@ -166,19 +182,31 @@
             "strings": [
               "ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -192,6 +220,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -256,6 +296,11 @@
             "strings": [
               "Х"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -314,9 +359,20 @@
             "strings": [
               "Є"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 1.5
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Я"
@@ -362,19 +418,31 @@
             "strings": [
               "Ю"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 6,
             "strings": [
               " "
-            ]
+            ],
+            "width": 6
           },
           {
             "strings": [
@@ -388,6 +456,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -461,6 +541,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -526,9 +611,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -576,9 +672,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -590,10 +698,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -605,6 +713,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -670,6 +790,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -727,9 +852,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -764,9 +900,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -784,10 +932,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -799,6 +947,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
diff --git a/data/osk-layouts/uk.json b/data/osk-layouts/uk.json
index 2fb23e784f..baca6a1b30 100644
--- a/data/osk-layouts/uk.json
+++ b/data/osk-layouts/uk.json
@@ -77,6 +77,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -133,9 +138,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -172,19 +188,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -198,6 +226,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -279,6 +319,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -335,9 +380,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -374,19 +430,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -400,6 +468,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -473,6 +553,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -537,9 +622,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -587,9 +683,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -601,10 +709,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -616,6 +724,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -681,6 +801,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -738,9 +863,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -775,9 +911,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -795,10 +943,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -810,6 +958,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -817,4 +977,4 @@
   ],
   "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
index 96d67fc2f3..725b86c377 100644
--- a/data/osk-layouts/us.json
+++ b/data/osk-layouts/us.json
@@ -77,6 +77,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -133,9 +138,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -172,19 +188,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -198,6 +226,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -279,6 +319,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -335,9 +380,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -374,19 +430,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -400,6 +468,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -473,6 +553,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -537,9 +622,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -587,9 +683,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -601,10 +709,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -616,6 +724,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -681,6 +801,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -737,9 +862,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -774,9 +910,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -794,10 +942,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -809,6 +957,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -816,4 +976,4 @@
   ],
   "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
index 918aa456e2..76388e3267 100644
--- a/data/osk-layouts/vn.json
+++ b/data/osk-layouts/vn.json
@@ -103,6 +103,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -168,9 +173,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -205,19 +221,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -231,6 +259,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -338,6 +378,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -403,9 +448,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -440,19 +496,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -466,6 +534,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -539,6 +619,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -604,9 +689,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -654,9 +750,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -668,10 +776,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -683,6 +791,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -748,6 +868,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -805,9 +930,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -842,9 +978,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -862,10 +1010,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -877,6 +1025,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -884,4 +1044,4 @@
   ],
   "locale": "vi",
   "name": "Vietnamese"
-}
+}
\ No newline at end of file
diff --git a/data/osk-layouts/za.json b/data/osk-layouts/za.json
index a28011a044..b1e3e7a12f 100644
--- a/data/osk-layouts/za.json
+++ b/data/osk-layouts/za.json
@@ -85,6 +85,11 @@
             "strings": [
               "p"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -140,9 +145,20 @@
             "strings": [
               "l"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 1.5
+          },
           {
             "strings": [
               "z"
@@ -179,19 +195,31 @@
             "strings": [
               "m"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 1,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -205,6 +233,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -294,6 +334,11 @@
             "strings": [
               "P"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -349,9 +394,20 @@
             "strings": [
               "L"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "Z"
@@ -388,19 +444,31 @@
             "strings": [
               "M"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "iconName": "keyboard-shift-symbolic",
+            "level": 0,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               ","
             ]
           },
           {
-            "width": 5,
             "strings": [
               " "
-            ]
+            ],
+            "width": 5
           },
           {
             "strings": [
@@ -414,6 +482,18 @@
               "'",
               "@"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -487,6 +567,11 @@
               "ⁿ",
               "∅"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -551,9 +636,20 @@
               "}",
               "]"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 1.5
+          },
           {
             "strings": [
               "*",
@@ -601,9 +697,21 @@
               "?",
               "¿"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "=/<",
+            "level": 3,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "_"
@@ -615,10 +723,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -630,6 +738,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -695,6 +815,11 @@
             "strings": [
               "∆"
             ]
+          },
+          {
+            "iconName": "edit-clear-symbolic",
+            "keyval": "0xff08",
+            "width": 1.5
           }
         ],
         [
@@ -751,9 +876,20 @@
             "strings": [
               "}"
             ]
+          },
+          {
+            "iconName": "keyboard-enter-symbolic",
+            "keyval": "0xff0d",
+            "width": 2
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 1.5
+          },
           {
             "strings": [
               "\\"
@@ -788,9 +924,21 @@
             "strings": [
               "]"
             ]
+          },
+          {
+            "action": "levelSwitch",
+            "label": "?123",
+            "level": 2,
+            "width": 3
           }
         ],
         [
+          {
+            "action": "levelSwitch",
+            "label": "ABC",
+            "level": 0,
+            "width": 1.5
+          },
           {
             "strings": [
               "<",
@@ -808,10 +956,10 @@
             ]
           },
           {
-            "width": 3,
             "strings": [
               " "
-            ]
+            ],
+            "width": 3
           },
           {
             "strings": [
@@ -823,6 +971,18 @@
               ".",
               "…"
             ]
+          },
+          {
+            "action": "emoji",
+            "iconName": "face-smile-symbolic"
+          },
+          {
+            "action": "languageMenu",
+            "iconName": "keyboard-layout-symbolic"
+          },
+          {
+            "action": "hide",
+            "iconName": "go-down-symbolic"
           }
         ]
       ]
@@ -830,4 +990,4 @@
   ],
   "locale": "af",
   "name": "Afrikaans"
-}
+}
\ No newline at end of file
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index c82c8166d5..3bcfc2b2b0 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -25,54 +25,6 @@ const SHOW_KEYBOARD = 'screen-keyboard-enabled';
 /* KeyContainer puts keys in a grid where a 1:1 key takes this size */
 const KEY_SIZE = 2;
 
-const defaultKeysPre = [
-    [
-        [],
-        [],
-        [{ width: 1.5, level: 1, extraClassName: 'shift-key-lowercase', icon: 'keyboard-shift-symbolic' }],
-        [{ label: '?123', width: 1.5, level: 2 }],
-    ], [
-        [],
-        [],
-        [{ width: 1.5, level: 0, extraClassName: 'shift-key-uppercase', icon: 'keyboard-shift-symbolic' }],
-        [{ label: '?123', width: 1.5, level: 2 }],
-    ], [
-        [],
-        [],
-        [{ label: '=/<', width: 1.5, level: 3 }],
-        [{ label: 'ABC', width: 1.5, level: 0 }],
-    ], [
-        [],
-        [],
-        [{ label: '?123', width: 1.5, level: 2 }],
-        [{ label: 'ABC', width: 1.5, level: 0 }],
-    ],
-];
-
-const defaultKeysPost = [
-    [
-        [{ width: 1.5, keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic' }],
-        [{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 
'keyboard-enter-symbolic' }],
-        [{ width: 3, level: 1, right: true, extraClassName: 'shift-key-lowercase', icon: 
'keyboard-shift-symbolic' }],
-        [{ action: 'emoji', icon: 'face-smile-symbolic' }, { action: 'languageMenu', extraClassName: 
'layout-key', icon: 'keyboard-layout-symbolic' }, { action: 'hide', extraClassName: 'hide-key', icon: 
'go-down-symbolic' }],
-    ], [
-        [{ width: 1.5, keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic' }],
-        [{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 
'keyboard-enter-symbolic' }],
-        [{ width: 3, level: 0, right: true, extraClassName: 'shift-key-uppercase', icon: 
'keyboard-shift-symbolic' }],
-        [{ action: 'emoji', icon: 'face-smile-symbolic' }, { action: 'languageMenu', extraClassName: 
'layout-key', icon: 'keyboard-layout-symbolic' }, { action: 'hide', extraClassName: 'hide-key', icon: 
'go-down-symbolic' }],
-    ], [
-        [{ width: 1.5, keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic' }],
-        [{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 
'keyboard-enter-symbolic' }],
-        [{ label: '=/<', width: 3, level: 3, right: true }],
-        [{ action: 'emoji', icon: 'face-smile-symbolic' }, { action: 'languageMenu', extraClassName: 
'layout-key', icon: 'keyboard-layout-symbolic' }, { action: 'hide', extraClassName: 'hide-key', icon: 
'go-down-symbolic' }],
-    ], [
-        [{ width: 1.5, keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic' }],
-        [{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 
'keyboard-enter-symbolic' }],
-        [{ label: '?123', width: 3, level: 2, right: true }],
-        [{ action: 'emoji', icon: 'face-smile-symbolic' }, { action: 'languageMenu', extraClassName: 
'layout-key', icon: 'keyboard-layout-symbolic' }, { action: 'hide', extraClassName: 'hide-key', icon: 
'go-down-symbolic' }],
-    ],
-];
-
 var AspectContainer = GObject.registerClass(
 class AspectContainer extends St.Widget {
     _init(params) {
@@ -1596,83 +1548,6 @@ var Keyboard = GObject.registerClass({
         this._languagePopup.open(true);
     }
 
-    _loadDefaultKeys(keys, layout, numLevels, numKeys) {
-        let extraButton;
-        for (let i = 0; i < keys.length; i++) {
-            let key = keys[i];
-            let keyval = key.keyval;
-            let switchToLevel = key.level;
-            let action = key.action;
-            let icon = key.icon;
-
-            /* Skip emoji button if necessary */
-            if (!this._emojiKeyVisible && action == 'emoji')
-                continue;
-
-            extraButton = new Key({
-                label: key.label,
-                icon_name: icon,
-            });
-
-            extraButton.keyButton.add_style_class_name('default-key');
-            if (key.extraClassName != null)
-                extraButton.keyButton.add_style_class_name(key.extraClassName);
-            if (key.width != null)
-                extraButton.setWidth(key.width);
-
-            let actor = extraButton.keyButton;
-
-            extraButton.connect('pressed', () => {
-                if (switchToLevel != null) {
-                    this._setActiveLayer(switchToLevel);
-                    // Shift only gets latched on long press
-                    this._latched = switchToLevel != 1;
-                } else if (keyval != null) {
-                    this._keyboardController.keyvalPress(keyval);
-                }
-            });
-            extraButton.connect('released', () => {
-                if (keyval != null)
-                    this._keyboardController.keyvalRelease(keyval);
-                else if (action == 'hide')
-                    this.close();
-                else if (action == 'languageMenu')
-                    this._popupLanguageMenu(actor);
-                else if (action == 'emoji')
-                    this._toggleEmoji();
-            });
-
-            if (switchToLevel == 0) {
-                layout.shiftKeys.push(extraButton);
-            } else if (switchToLevel == 1) {
-                extraButton.connect('long-press', () => {
-                    this._latched = true;
-                    this._setCurrentLevelLatched(this._currentPage, this._latched);
-                });
-            }
-
-            /* Fixup default keys based on the number of levels/keys */
-            if (switchToLevel == 1 && numLevels == 3) {
-                // Hide shift key if the keymap has no uppercase level
-                if (key.right) {
-                    /* Only hide the key actor, so the container still takes space */
-                    extraButton.keyButton.hide();
-                } else {
-                    extraButton.hide();
-                }
-                extraButton.setWidth(1.5);
-            } else if (key.right && numKeys > 8) {
-                extraButton.setWidth(2);
-            } else if (keyval == Clutter.KEY_Return && numKeys > 9) {
-                extraButton.setWidth(1.5);
-            } else if (!this._emojiKeyVisible && (action == 'hide' || action == 'languageMenu')) {
-                extraButton.setWidth(1.5);
-            }
-
-            layout.appendKey(extraButton, extraButton.keyButton.keyWidth);
-        }
-    }
-
     _updateCurrentPageVisible() {
         if (this._currentPage)
             this._currentPage.visible = !this._emojiActive && !this._keypadVisible;
@@ -1695,38 +1570,11 @@ var Keyboard = GObject.registerClass({
         }
     }
 
-    _getDefaultKeysForRow(row, numRows, level) {
-        /* The first 2 rows in defaultKeysPre/Post belong together with
-         * the first 2 rows on each keymap. On keymaps that have more than
-         * 4 rows, the last 2 default key rows must be respectively
-         * assigned to the 2 last keymap ones.
-         */
-        if (row < 2) {
-            return [defaultKeysPre[level][row], defaultKeysPost[level][row]];
-        } else if (row >= numRows - 2) {
-            let defaultRow = row - (numRows - 2) + 2;
-            return [defaultKeysPre[level][defaultRow], defaultKeysPost[level][defaultRow]];
-        } else {
-            return [null, null];
-        }
-    }
-
-    _mergeRowKeys(layout, pre, row, post, numLevels) {
-        if (pre != null)
-            this._loadDefaultKeys(pre, layout, numLevels, row.length);
-
-        this._addRowKeys(row, layout);
-
-        if (post != null)
-            this._loadDefaultKeys(post, layout, numLevels, row.length);
-    }
-
     _loadRows(model, level, numLevels, layout) {
         let rows = model.rows;
         for (let i = 0; i < rows.length; ++i) {
             layout.appendRow();
-            let [pre, post] = this._getDefaultKeysForRow(i, rows.length, level);
-            this._mergeRowKeys(layout, pre, rows[i], post, numLevels);
+            this._addRowKeys(rows[i], layout);
         }
     }
 


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