// ArabicKeys Phonetic keyboard layouts for Linux, version 1.0
// https://arabickeys.app/download/
//
// Each Arabic letter sits on the Latin key that sounds like it: s types س.
// Shift gives the deep letter (Shift+s ص), AltGr (the right Alt key) gives the
// letter written with an added h (AltGr+s ش), AltGr on a vowel gives its short
// vowel mark, and AltGr on a digit gives the Eastern Arabic digit.
// One section per regional G letter: levant گ, maghreb ڨ, morocco ݣ.
// Columns: key alone, Shift, AltGr, AltGr+Shift.

default partial alphanumeric_keys
xkb_symbols "levant" {
    name[Group1] = "Arabic (ArabicKeys Phonetic, Iraq and Levant)";
    key.type[Group1] = "FOUR_LEVEL";

    key <TLDE> { [ grave, asciitilde, NoSymbol, NoSymbol ] };  // ` ~
    key <AE01> { [ 1, exclam, U0661, NoSymbol ] };  // 1 ! ١
    key <AE02> { [ 2, at, U0662, NoSymbol ] };  // 2 @ ٢
    key <AE03> { [ 3, numbersign, U0663, NoSymbol ] };  // 3 # ٣
    key <AE04> { [ 4, dollar, U0664, NoSymbol ] };  // 4 $ ٤
    key <AE05> { [ 5, percent, U0665, U066A ] };  // 5 % ٥ ٪
    key <AE06> { [ 6, asciicircum, U0666, NoSymbol ] };  // 6 ^ ٦
    key <AE07> { [ 7, ampersand, U0667, NoSymbol ] };  // 7 & ٧
    key <AE08> { [ 8, asterisk, U0668, NoSymbol ] };  // 8 * ٨
    key <AE09> { [ 9, parenleft, U0669, NoSymbol ] };  // 9 ( ٩
    key <AE10> { [ 0, parenright, U0660, NoSymbol ] };  // 0 ) ٠
    key <AE11> { [ minus, underscore, NoSymbol, NoSymbol ] };  // - _
    key <AE12> { [ equal, plus, NoSymbol, NoSymbol ] };  // = +
    key <AD01> { [ U0642, NoSymbol, NoSymbol, NoSymbol ] };  // ق
    key <AD02> { [ U0648, U0624, U0651, NoSymbol ] };  // و ؤ ◌ّ
    key <AD03> { [ U0639, U063A, U064E, U064B ] };  // ع غ ◌َ ◌ً
    key <AD04> { [ U0631, NoSymbol, NoSymbol, NoSymbol ] };  // ر
    key <AD05> { [ U062A, U0637, U062B, NoSymbol ] };  // ت ط ث
    key <AD06> { [ U064A, U0649, NoSymbol, NoSymbol ] };  // ي ى
    key <AD07> { [ U0648, U0624, U064F, U064C ] };  // و ؤ ◌ُ ◌ٌ
    key <AD08> { [ U064A, U0626, U0650, U064D ] };  // ي ئ ◌ِ ◌ٍ
    key <AD09> { [ U0648, U0624, U0652, NoSymbol ] };  // و ؤ ◌ْ
    key <AD10> { [ U0629, U067E, NoSymbol, NoSymbol ] };  // ة پ
    key <AD11> { [ bracketleft, braceleft, U00AB, NoSymbol ] };  // [ { «
    key <AD12> { [ bracketright, braceright, U00BB, NoSymbol ] };  // ] } »
    key <BKSL> { [ backslash, bar, NoSymbol, NoSymbol ] };  // \ |
    key <AC01> { [ U0627, U0622, U0623, U0625 ] };  // ا آ أ إ
    key <AC02> { [ U0633, U0635, U0634, NoSymbol ] };  // س ص ش
    key <AC03> { [ U062F, U0636, U0630, NoSymbol ] };  // د ض ذ
    key <AC04> { [ U0641, U06A4, NoSymbol, NoSymbol ] };  // ف ڤ
    key <AC05> { [ U06AF, U062C, U063A, NoSymbol ] };  // گ ج غ
    key <AC06> { [ U0647, U062D, NoSymbol, NoSymbol ] };  // ه ح
    key <AC07> { [ U062C, NoSymbol, NoSymbol, NoSymbol ] };  // ج
    key <AC08> { [ U0643, U062E, U062E, NoSymbol ] };  // ك خ خ
    key <AC09> { [ U0644, UFEFB, NoSymbol, NoSymbol ] };  // ل لا
    key <AC10> { [ U061B, colon, semicolon, NoSymbol ] };  // ؛ : ;
    key <AC11> { [ U0621, quotedbl, NoSymbol, NoSymbol ] };  // ء "
    key <AB01> { [ U0632, U0638, NoSymbol, NoSymbol ] };  // ز ظ
    key <AB02> { [ U062E, NoSymbol, NoSymbol, NoSymbol ] };  // خ
    key <AB03> { [ U0634, U0686, NoSymbol, NoSymbol ] };  // ش چ
    key <AB04> { [ U06A4, NoSymbol, NoSymbol, NoSymbol ] };  // ڤ
    key <AB05> { [ U0628, NoSymbol, NoSymbol, NoSymbol ] };  // ب
    key <AB06> { [ U0646, NoSymbol, NoSymbol, NoSymbol ] };  // ن
    key <AB07> { [ U0645, U0640, NoSymbol, NoSymbol ] };  // م ـ
    key <AB08> { [ U060C, less, comma, NoSymbol ] };  // ، < ,
    key <AB09> { [ period, greater, NoSymbol, NoSymbol ] };  // . >
    key <AB10> { [ slash, U061F, NoSymbol, question ] };  // / ؟ ?
    key <SPCE> { [ space, space, U200C, NoSymbol ] };  // space space ZWNJ
    // The key beside left Shift on European keyboards.
    key <LSGT> { [ backslash, bar, NoSymbol, NoSymbol ] };

    // The right Alt key is AltGr.
    include "level3(ralt_switch)"
};

partial alphanumeric_keys
xkb_symbols "maghreb" {
    name[Group1] = "Arabic (ArabicKeys Phonetic, Algeria and Tunisia)";
    key.type[Group1] = "FOUR_LEVEL";

    key <TLDE> { [ grave, asciitilde, NoSymbol, NoSymbol ] };  // ` ~
    key <AE01> { [ 1, exclam, U0661, NoSymbol ] };  // 1 ! ١
    key <AE02> { [ 2, at, U0662, NoSymbol ] };  // 2 @ ٢
    key <AE03> { [ 3, numbersign, U0663, NoSymbol ] };  // 3 # ٣
    key <AE04> { [ 4, dollar, U0664, NoSymbol ] };  // 4 $ ٤
    key <AE05> { [ 5, percent, U0665, U066A ] };  // 5 % ٥ ٪
    key <AE06> { [ 6, asciicircum, U0666, NoSymbol ] };  // 6 ^ ٦
    key <AE07> { [ 7, ampersand, U0667, NoSymbol ] };  // 7 & ٧
    key <AE08> { [ 8, asterisk, U0668, NoSymbol ] };  // 8 * ٨
    key <AE09> { [ 9, parenleft, U0669, NoSymbol ] };  // 9 ( ٩
    key <AE10> { [ 0, parenright, U0660, NoSymbol ] };  // 0 ) ٠
    key <AE11> { [ minus, underscore, NoSymbol, NoSymbol ] };  // - _
    key <AE12> { [ equal, plus, NoSymbol, NoSymbol ] };  // = +
    key <AD01> { [ U0642, NoSymbol, NoSymbol, NoSymbol ] };  // ق
    key <AD02> { [ U0648, U0624, U0651, NoSymbol ] };  // و ؤ ◌ّ
    key <AD03> { [ U0639, U063A, U064E, U064B ] };  // ع غ ◌َ ◌ً
    key <AD04> { [ U0631, NoSymbol, NoSymbol, NoSymbol ] };  // ر
    key <AD05> { [ U062A, U0637, U062B, NoSymbol ] };  // ت ط ث
    key <AD06> { [ U064A, U0649, NoSymbol, NoSymbol ] };  // ي ى
    key <AD07> { [ U0648, U0624, U064F, U064C ] };  // و ؤ ◌ُ ◌ٌ
    key <AD08> { [ U064A, U0626, U0650, U064D ] };  // ي ئ ◌ِ ◌ٍ
    key <AD09> { [ U0648, U0624, U0652, NoSymbol ] };  // و ؤ ◌ْ
    key <AD10> { [ U0629, U067E, NoSymbol, NoSymbol ] };  // ة پ
    key <AD11> { [ bracketleft, braceleft, U00AB, NoSymbol ] };  // [ { «
    key <AD12> { [ bracketright, braceright, U00BB, NoSymbol ] };  // ] } »
    key <BKSL> { [ backslash, bar, NoSymbol, NoSymbol ] };  // \ |
    key <AC01> { [ U0627, U0622, U0623, U0625 ] };  // ا آ أ إ
    key <AC02> { [ U0633, U0635, U0634, NoSymbol ] };  // س ص ش
    key <AC03> { [ U062F, U0636, U0630, NoSymbol ] };  // د ض ذ
    key <AC04> { [ U0641, U06A4, NoSymbol, NoSymbol ] };  // ف ڤ
    key <AC05> { [ U06A8, U062C, U063A, NoSymbol ] };  // ڨ ج غ
    key <AC06> { [ U0647, U062D, NoSymbol, NoSymbol ] };  // ه ح
    key <AC07> { [ U062C, NoSymbol, NoSymbol, NoSymbol ] };  // ج
    key <AC08> { [ U0643, U062E, U062E, NoSymbol ] };  // ك خ خ
    key <AC09> { [ U0644, UFEFB, NoSymbol, NoSymbol ] };  // ل لا
    key <AC10> { [ U061B, colon, semicolon, NoSymbol ] };  // ؛ : ;
    key <AC11> { [ U0621, quotedbl, NoSymbol, NoSymbol ] };  // ء "
    key <AB01> { [ U0632, U0638, NoSymbol, NoSymbol ] };  // ز ظ
    key <AB02> { [ U062E, NoSymbol, NoSymbol, NoSymbol ] };  // خ
    key <AB03> { [ U0634, U0686, NoSymbol, NoSymbol ] };  // ش چ
    key <AB04> { [ U06A4, NoSymbol, NoSymbol, NoSymbol ] };  // ڤ
    key <AB05> { [ U0628, NoSymbol, NoSymbol, NoSymbol ] };  // ب
    key <AB06> { [ U0646, NoSymbol, NoSymbol, NoSymbol ] };  // ن
    key <AB07> { [ U0645, U0640, NoSymbol, NoSymbol ] };  // م ـ
    key <AB08> { [ U060C, less, comma, NoSymbol ] };  // ، < ,
    key <AB09> { [ period, greater, NoSymbol, NoSymbol ] };  // . >
    key <AB10> { [ slash, U061F, NoSymbol, question ] };  // / ؟ ?
    key <SPCE> { [ space, space, U200C, NoSymbol ] };  // space space ZWNJ
    // The key beside left Shift on European keyboards.
    key <LSGT> { [ backslash, bar, NoSymbol, NoSymbol ] };

    // The right Alt key is AltGr.
    include "level3(ralt_switch)"
};

partial alphanumeric_keys
xkb_symbols "morocco" {
    name[Group1] = "Arabic (ArabicKeys Phonetic, Morocco)";
    key.type[Group1] = "FOUR_LEVEL";

    key <TLDE> { [ grave, asciitilde, NoSymbol, NoSymbol ] };  // ` ~
    key <AE01> { [ 1, exclam, U0661, NoSymbol ] };  // 1 ! ١
    key <AE02> { [ 2, at, U0662, NoSymbol ] };  // 2 @ ٢
    key <AE03> { [ 3, numbersign, U0663, NoSymbol ] };  // 3 # ٣
    key <AE04> { [ 4, dollar, U0664, NoSymbol ] };  // 4 $ ٤
    key <AE05> { [ 5, percent, U0665, U066A ] };  // 5 % ٥ ٪
    key <AE06> { [ 6, asciicircum, U0666, NoSymbol ] };  // 6 ^ ٦
    key <AE07> { [ 7, ampersand, U0667, NoSymbol ] };  // 7 & ٧
    key <AE08> { [ 8, asterisk, U0668, NoSymbol ] };  // 8 * ٨
    key <AE09> { [ 9, parenleft, U0669, NoSymbol ] };  // 9 ( ٩
    key <AE10> { [ 0, parenright, U0660, NoSymbol ] };  // 0 ) ٠
    key <AE11> { [ minus, underscore, NoSymbol, NoSymbol ] };  // - _
    key <AE12> { [ equal, plus, NoSymbol, NoSymbol ] };  // = +
    key <AD01> { [ U0642, NoSymbol, NoSymbol, NoSymbol ] };  // ق
    key <AD02> { [ U0648, U0624, U0651, NoSymbol ] };  // و ؤ ◌ّ
    key <AD03> { [ U0639, U063A, U064E, U064B ] };  // ع غ ◌َ ◌ً
    key <AD04> { [ U0631, NoSymbol, NoSymbol, NoSymbol ] };  // ر
    key <AD05> { [ U062A, U0637, U062B, NoSymbol ] };  // ت ط ث
    key <AD06> { [ U064A, U0649, NoSymbol, NoSymbol ] };  // ي ى
    key <AD07> { [ U0648, U0624, U064F, U064C ] };  // و ؤ ◌ُ ◌ٌ
    key <AD08> { [ U064A, U0626, U0650, U064D ] };  // ي ئ ◌ِ ◌ٍ
    key <AD09> { [ U0648, U0624, U0652, NoSymbol ] };  // و ؤ ◌ْ
    key <AD10> { [ U0629, U067E, NoSymbol, NoSymbol ] };  // ة پ
    key <AD11> { [ bracketleft, braceleft, U00AB, NoSymbol ] };  // [ { «
    key <AD12> { [ bracketright, braceright, U00BB, NoSymbol ] };  // ] } »
    key <BKSL> { [ backslash, bar, NoSymbol, NoSymbol ] };  // \ |
    key <AC01> { [ U0627, U0622, U0623, U0625 ] };  // ا آ أ إ
    key <AC02> { [ U0633, U0635, U0634, NoSymbol ] };  // س ص ش
    key <AC03> { [ U062F, U0636, U0630, NoSymbol ] };  // د ض ذ
    key <AC04> { [ U0641, U06A4, NoSymbol, NoSymbol ] };  // ف ڤ
    key <AC05> { [ U0763, U062C, U063A, NoSymbol ] };  // ݣ ج غ
    key <AC06> { [ U0647, U062D, NoSymbol, NoSymbol ] };  // ه ح
    key <AC07> { [ U062C, NoSymbol, NoSymbol, NoSymbol ] };  // ج
    key <AC08> { [ U0643, U062E, U062E, NoSymbol ] };  // ك خ خ
    key <AC09> { [ U0644, UFEFB, NoSymbol, NoSymbol ] };  // ل لا
    key <AC10> { [ U061B, colon, semicolon, NoSymbol ] };  // ؛ : ;
    key <AC11> { [ U0621, quotedbl, NoSymbol, NoSymbol ] };  // ء "
    key <AB01> { [ U0632, U0638, NoSymbol, NoSymbol ] };  // ز ظ
    key <AB02> { [ U062E, NoSymbol, NoSymbol, NoSymbol ] };  // خ
    key <AB03> { [ U0634, U0686, NoSymbol, NoSymbol ] };  // ش چ
    key <AB04> { [ U06A4, NoSymbol, NoSymbol, NoSymbol ] };  // ڤ
    key <AB05> { [ U0628, NoSymbol, NoSymbol, NoSymbol ] };  // ب
    key <AB06> { [ U0646, NoSymbol, NoSymbol, NoSymbol ] };  // ن
    key <AB07> { [ U0645, U0640, NoSymbol, NoSymbol ] };  // م ـ
    key <AB08> { [ U060C, less, comma, NoSymbol ] };  // ، < ,
    key <AB09> { [ period, greater, NoSymbol, NoSymbol ] };  // . >
    key <AB10> { [ slash, U061F, NoSymbol, question ] };  // / ؟ ?
    key <SPCE> { [ space, space, U200C, NoSymbol ] };  // space space ZWNJ
    // The key beside left Shift on European keyboards.
    key <LSGT> { [ backslash, bar, NoSymbol, NoSymbol ] };

    // The right Alt key is AltGr.
    include "level3(ralt_switch)"
};
