diff --git a/data/gnome-shell-osk-layouts.gresource.xml b/data/gnome-shell-osk-layouts.gresource.xml
index 86d6cb985..b7969c7bd 100644
--- a/data/gnome-shell-osk-layouts.gresource.xml
+++ b/data/gnome-shell-osk-layouts.gresource.xml
@@ -22,6 +22,7 @@
id.json
il.json
in+bolnagri.json
+ in+mal.json
ir.json
is.json
it.json
diff --git a/data/osk-layouts/in+mal.json b/data/osk-layouts/in+mal.json
new file mode 100644
index 000000000..bc153beae
--- /dev/null
+++ b/data/osk-layouts/in+mal.json
@@ -0,0 +1,559 @@
+{
+ "levels": [
+ {
+ "level": "",
+ "mode": "default",
+ "rows": [
+ [
+ [
+ "െ"
+ ],
+ [
+ "ൌ"
+ ],
+ [
+ "ൈ"
+ ],
+ [
+ "ാ"
+ ],
+ [
+ "ീ"
+ ],
+ [
+ "ൂ"
+ ],
+ [
+ "ബ"
+ ],
+ [
+ "ഹ"
+ ],
+ [
+ "ഗ"
+ ],
+ [
+ "ദ"
+ ],
+ [
+ "ജ"
+ ],
+ [
+ "ഡ"
+ ],
+ [
+ ""
+ ]
+ ],
+ [
+ [
+ "ോ"
+ ],
+ [
+ "േ"
+ ],
+ [
+ "്"
+ ],
+ [
+ "ി"
+ ],
+ [
+ "ു"
+ ],
+ [
+ "പ"
+ ],
+ [
+ "ര"
+ ],
+ [
+ "ക"
+ ],
+ [
+ "ത"
+ ],
+ [
+ "ച"
+ ],
+ [
+ "ട"
+ ]
+ ],
+ [
+ [
+ "െ"
+ ],
+ [
+ "ം"
+ ],
+ [
+ "മ",
+ "ç"
+ ],
+ [
+ "ന"
+ ],
+ [
+ "വ"
+ ],
+ [
+ "ല",
+ "ñ"
+ ],
+ [
+ "സ"
+ ],
+ [
+ "ഷ"
+ ],
+ [
+ "യ"
+ ]
+ ],
+ [
+ [
+ ","
+ ],
+ [
+ " "
+ ],
+ [
+ ".",
+ "#",
+ "!",
+ ",",
+ "?",
+ "-",
+ ":",
+ "'",
+ "@"
+ ]
+ ]
+ ]
+ },
+ {
+ "level": "shift",
+ "mode": "latched",
+ "rows": [
+ [
+ [
+ "ഔ"
+ ],
+ [
+ "ഐ"
+ ],
+ [
+ "ആ"
+ ],
+ [
+ "ഈ"
+ ],
+ [
+ "ഊ"
+ ],
+ [
+ "ഭ"
+ ],
+ [
+ "ങ"
+ ],
+ [
+ "ഘ"
+ ],
+ [
+ "ധ"
+ ],
+ [
+ "ഝ"
+ ],
+ [
+ "ഢ"
+ ],
+ [
+ "ഞ"
+ ]
+ ],
+ [
+ [
+ "ഓ"
+ ],
+ [
+ "ഏ"
+ ],
+ [
+ "അ"
+ ],
+ [
+ "ഇ"
+ ],
+ [
+ "ഉ"
+ ],
+ [
+ "ഫ"
+ ],
+ [
+ "റ"
+ ],
+ [
+ "ഖ"
+ ],
+ [
+ "ഥ"
+ ],
+ [
+ "ഛ"
+ ],
+ [
+ "ഠ"
+ ]
+ ],
+ [
+ [
+ "എ"
+ ],
+ [
+ ""
+ ],
+ [
+ "ണ"
+ ],
+ [
+ "ന"
+ ],
+ [
+ "ഴ"
+ ],
+ [
+ "ള"
+ ],
+ [
+ "ശ"
+ ],
+ [
+ "ഷ"
+ ],
+ [
+ "യ"
+ ]
+ ],
+ [
+ [
+ ","
+ ],
+ [
+ " "
+ ],
+ [
+ ".",
+ "#",
+ "!",
+ ",",
+ "?",
+ "-",
+ ":",
+ "'",
+ "@"
+ ]
+ ]
+ ]
+ },
+ {
+ "level": "opt",
+ "mode": "locked",
+ "rows": [
+ [
+ [
+ "൧",
+ "1",
+ "¹",
+ "½",
+ "⅓",
+ "¼",
+ "⅛"
+ ],
+ [
+ "൨",
+ "2",
+ "²",
+ "⅔"
+ ],
+ [
+ "൩",
+ "3",
+ "³",
+ "¾",
+ "⅜"
+ ],
+ [
+ "൪",
+ "4",
+ "⁴"
+ ],
+ [
+ "൫",
+ "5",
+ "⅝"
+ ],
+ [
+ "൬",
+ "6"
+ ],
+ [
+ "൭",
+ "7",
+ "⅞"
+ ],
+ [
+ "൮",
+ "8"
+ ],
+ [
+ "൯",
+ "9"
+ ],
+ [
+ "൦",
+ "0",
+ "ⁿ",
+ "∅"
+ ]
+ ],
+ [
+ [
+ "@"
+ ],
+ [
+ "#"
+ ],
+ [
+ "₹",
+ "$",
+ "¢",
+ "£",
+ "€",
+ "¥",
+ "₱"
+ ],
+ [
+ "%",
+ "‰"
+ ],
+ [
+ "&"
+ ],
+ [
+ "-",
+ "_",
+ "–",
+ "—",
+ "·"
+ ],
+ [
+ "+",
+ "±"
+ ],
+ [
+ "(",
+ "<",
+ "{",
+ "["
+ ],
+ [
+ ")",
+ ">",
+ "}",
+ "]"
+ ]
+ ],
+ [
+ [
+ "*",
+ "†",
+ "‡",
+ "★"
+ ],
+ [
+ "\"",
+ "“",
+ "”",
+ "«",
+ "»"
+ ],
+ [
+ "'",
+ "‘",
+ "’",
+ "‹",
+ "›"
+ ],
+ [
+ ":"
+ ],
+ [
+ ";"
+ ],
+ [
+ "!",
+ "¡"
+ ],
+ [
+ "?",
+ "¿"
+ ]
+ ],
+ [
+ [
+ "_"
+ ],
+ [
+ "/"
+ ],
+ [
+ " "
+ ],
+ [
+ ","
+ ],
+ [
+ ".",
+ "…"
+ ]
+ ]
+ ]
+ },
+ {
+ "level": "opt+shift",
+ "mode": "locked",
+ "rows": [
+ [
+ [
+ "~"
+ ],
+ [
+ "`"
+ ],
+ [
+ "|"
+ ],
+ [
+ "•",
+ "♪",
+ "♥",
+ "♠",
+ "♦",
+ "♣"
+ ],
+ [
+ "√"
+ ],
+ [
+ "Π",
+ "π"
+ ],
+ [
+ "÷"
+ ],
+ [
+ "×"
+ ],
+ [
+ "¶",
+ "§"
+ ],
+ [
+ "∆"
+ ]
+ ],
+ [
+ [
+ "£"
+ ],
+ [
+ "¢"
+ ],
+ [
+ "€"
+ ],
+ [
+ "¥"
+ ],
+ [
+ "^",
+ "↑",
+ "↓",
+ "←",
+ "→"
+ ],
+ [
+ "°",
+ "′",
+ "″"
+ ],
+ [
+ "=",
+ "≠",
+ "≈",
+ "∞"
+ ],
+ [
+ "{"
+ ],
+ [
+ "}"
+ ]
+ ],
+ [
+ [
+ "\\"
+ ],
+ [
+ "©"
+ ],
+ [
+ "®"
+ ],
+ [
+ "™"
+ ],
+ [
+ "℅"
+ ],
+ [
+ "["
+ ],
+ [
+ "]"
+ ]
+ ],
+ [
+ [
+ "<",
+ "‹",
+ "≤",
+ "«"
+ ],
+ [
+ ">",
+ "›",
+ "≥",
+ "»"
+ ],
+ [
+ " "
+ ],
+ [
+ ","
+ ],
+ [
+ ".",
+ "…"
+ ]
+ ]
+ ]
+ }
+ ],
+ "locale": "ml",
+ "name": "Malayalam"
+}