diff --git a/rules/base.xml.in b/rules/base.xml.in
index 4cd0a3b..736fa80 100644
--- a/rules/base.xml.in
+++ b/rules/base.xml.in
@@ -5917,6 +5917,57 @@
+
+
+ id
+ id
+ Indonesian (Jawi)
+
+ id
+ ms
+ min
+ ace
+ bjn
+ tsg
+ mfa
+
+
+
+
+
+
+ my
+ ms
+ Malay (Jawi)
+
+ id
+ ms
+ min
+ ace
+ bjn
+ tsg
+ mfa
+
+
+
+
+
+
+ bn
+ ms
+ Malay (Jawi)
+
+ id
+ ms
+ min
+ ace
+ bjn
+ tsg
+ mfa
+
+
+
+
diff --git a/symbols/bn b/symbols/bn
new file mode 100644
index 0000000..22cebef
--- /dev/null
+++ b/symbols/bn
@@ -0,0 +1,7 @@
+default partial alphanumeric_keys
+xkb_symbols "jawi" {
+ include "id(jawi)"
+
+ name[Group1]= "Malay (Jawi)";
+};
+
diff --git a/symbols/id b/symbols/id
new file mode 100644
index 0000000..b8e4257
--- /dev/null
+++ b/symbols/id
@@ -0,0 +1,71 @@
+// Modified from Arabic (buckwalter)
+default partial alphanumeric_keys
+xkb_symbols "jawi" {
+ name[Group1]= "Indonesian (Jawi)";
+
+ // `
+ key { [ Arabic_superscript_alef, Arabic_shadda, grave, asciitilde ] }; // ـٰ supercript alef
+
+ // 1..=
+ key { [ Arabic_1, exclam ] };
+ key { [ Arabic_2, at ] };
+ key { [ Arabic_3, numbersign ] };
+ key { [ Arabic_4, 0x1000657 , dollar, 0x10006e9 ] }; // ـٗ inverted damma, ۩
+ key { [ Arabic_5, Arabic_percent ] };
+ key { [ Arabic_6, asciicircum ] };
+ key { [ Arabic_7, ampersand ] };
+ key { [ Arabic_8, asterisk , 0x100066d, 0x10006de ] }; // ٭, ۞
+ key { [ Arabic_9, parenright , 0x100fd3e, 0x100fd3e ] }; // ornate left
+ key { [ Arabic_0, parenleft , 0x100fd3f, 0x100fd3f ] }; // ornate right
+ key { [ minus, Arabic_tatweel , underscore, underscore ] };
+ key { [ equal, plus ] };
+
+ // Q..]
+ key { [ Arabic_qaf, Arabic_hamza ] };
+ key { [ Arabic_waw, Arabic_hamzaonwaw ] };
+ key { [ Arabic_ain, 0x10006ce ] }; // yeh with small v
+ key { [ Arabic_ra, 0x1000656 ] }; // ـٖ subscript alef
+ key { [ Arabic_teh, Arabic_tah ] };
+ key { [ Arabic_yeh, Arabic_alefmaksura ] };
+ key { [ Arabic_damma, Arabic_hamzaonalef ] };
+ key { [ Arabic_kasra, Arabic_hamzaunderalef ] };
+ key { [ Arabic_sukun, 0x10006c6 ] }; // oe
+ key { [ Arabic_veh, Arabic_tehmarbuta ] }; // ڤ p
+ key { [ Arabic_fathatan, 0x1000671 , bracketright, braceright ] }; // ٱ alef wasla
+ key { [ Arabic_kasratan, Arabic_hamzaonyeh, bracketleft, braceleft ] };
+
+ // A..'
+ key { [ Arabic_fatha, Arabic_alef ] };
+ key { [ Arabic_seen, Arabic_sad ] };
+ key { [ Arabic_dal, Arabic_dad ] };
+ key { [ Arabic_feh, 0x10006a0 ] }; // ڠ ng
+ key { [ 0x1000762, Arabic_ghain ] }; // ݢ g (prefered)
+ key { [ Arabic_ha, Arabic_hah ] };
+ key { [ Arabic_jeem, 0x10006ac ] }; // ڬ g
+ key { [ Arabic_kaf, Arabic_keheh ] }; // ک k (prefered)
+ key { [ Arabic_lam, Arabic_madda_above ] }; // ـٓ maddah above
+ key { [ Arabic_semicolon, colon ] };
+ key { [ apostrophe, quotedbl , 0x100066c, 0x100066c ] }; // thousand sep
+
+ // \
+ key { [ Arabic_dammatan, Arabic_maddaonalef, backslash, bar ] };
+
+ // not exist in US keyboard
+ key { [ bar, brokenbar ] };
+
+ // Z../
+ key { [ Arabic_zain, Arabic_zah ] };
+ key { [ Arabic_khah, Arabic_sheen ] };
+ key { [ Arabic_tcheh, Arabic_thal ] }; // چ c/ch
+ key { [ 0x10006cf, Arabic_theh ] }; // ۏ v
+ key { [ Arabic_beh, 0x10000bb ] }; // »
+ key { [ Arabic_noon, 0x10006bd ] }; // ڽ ny
+ key { [ Arabic_meem, 0x10000ab ] }; // «
+ key { [ Arabic_comma, less , 0x100066b, 0x100060d ] }; // decimal sep, date sep
+ key { [ period, greater, Arabic_fullstop, 0x10006dd ] }; // ۔ full stop,
+ key { [ slash, Arabic_question_mark ] };
+
+
+ include "level3(ralt_switch)"
+};
+
diff --git a/symbols/my b/symbols/my
new file mode 100644
index 0000000..22cebef
--- /dev/null
+++ b/symbols/my
@@ -0,0 +1,7 @@
+default partial alphanumeric_keys
+xkb_symbols "jawi" {
+ include "id(jawi)"
+
+ name[Group1]= "Malay (Jawi)";
+};
+