default partial alphanumeric_keys xkb_symbols "basic" { name[Group1]= "Arabic"; key.type[Group1]="FOUR_LEVEL"; key { [ Arabic_thal, Arabic_shadda, Arabic_percent, U0609 ]}; // ‎ذ‎ ‎◌ّ‎ ‎٪‎ ‎؉‎ key { [ 1, exclam, Arabic_1, NoSymbol ]}; // 1 ! ١ key { [ 2, at, Arabic_2, NoSymbol ]}; // 2 @ ٢ key { [ 3, numbersign, Arabic_3, NoSymbol ]}; // 3 # ٣ key { [ 4, dollar, Arabic_4, NoSymbol ]}; // 4 $ ٤ key { [ 5, percent, Arabic_5, U2030 ]}; // 5 % ٥ ‰ key { [ 6, asciicircum, Arabic_6, NoSymbol ]}; // 6 ^ ٦ key { [ 7, ampersand, Arabic_7, NoSymbol ]}; // 7 & ٧ key { [ 8, asterisk, Arabic_8, NoSymbol ]}; // 8 * ٨ key { [ 9, parenright, Arabic_9, NoSymbol ]}; // 9 ) ٩ key { [ 0, parenleft, Arabic_0, NoSymbol ]}; // 0 ( ٠ key { [ minus, underscore, endash, U2011 ]}; // - _ – Non-Breaking-Hyphen key { [ equal, plus, notequal, U2248 ]}; // = + ≠ ≈ key { [ Arabic_dad, Arabic_fatha, NoSymbol, U2066 ]}; // ‎ض‎ ‎◌َ LEFT‑TO‑RIGHT ISOLATE key { [ Arabic_sad, Arabic_fathatan, NoSymbol, U2067 ]}; // ‎ص‎ ‎◌ً RIGHT‑TO‑LEFT ISOLATE key { [ Arabic_theh, Arabic_damma, NoSymbol, U2068 ]}; // ‎ث‎ ‎◌ُ FIRST STRONG ISOLATE key { [ Arabic_qaf, Arabic_dammatan, NoSymbol, U2069 ]}; // ‎ق‎ ‎◌ٌ POP DIRECTIONAL ISOLATE key { [ Arabic_feh, UFEF9, Arabic_veh, NoSymbol ]}; // ‎ف‎ ‎ﻹ ‎ڤ key { [ Arabic_ghain,Arabic_hamzaunderalef, NoSymbol, U202A ]}; // ‎غ‎ ‎إ‎ LEFT-TO-RIGHT-EMBEDDING key { [ Arabic_ain, grave, NoSymbol, U202B ]}; // ‎ع‎ ` RIGHT-TO-LEFT EMBEDDING key { [ Arabic_ha, division, NoSymbol, U202C ]}; // ‎ه‎ ÷ POP DIRECTIONAL FORMATTING key { [ Arabic_khah, multiply, NoSymbol, NoSymbol ]}; // ‎خ‎ × key { [ Arabic_hah, Arabic_semicolon, NoSymbol, U200E ]}; // ‎ح‎ ؛ LEFT-TO-RIGHT MARK key { [ Arabic_jeem, less, Arabic_tcheh, U200F ]}; // ‎ج‎ < ‎چ‎ RIGHT-TO-LEFT MARK key { [ Arabic_dal, greater, NoSymbol, U061C ]}; // ‎د‎ > ARABIC LETTER MARK key { [ Arabic_sheen, Arabic_kasra, NoSymbol, NoSymbol ]}; // ‎ش‎ ‎◌ِ‎ key { [ Arabic_seen, Arabic_kasratan, NoSymbol, NoSymbol ]}; // ‎س‎ ‎◌ٍ‎ key { [ Arabic_yeh, bracketright, NoSymbol, NoSymbol ]}; // ‎ي‎ ] key { [ Arabic_beh, bracketleft, Arabic_peh, NoSymbol ]}; // ‎ب‎ [ ‎پ‎ key { [ Arabic_lam, U0FEF7, NoSymbol, NoSymbol ]}; // ‎ل‎ ‎ﻷ‎ key { [ Arabic_alef, Arabic_hamzaonalef, U0671, NoSymbol ]}; // ‎ا‎ ‎أ ‎ٱ‎ key { [ Arabic_teh, Arabic_tatweel, NoSymbol, NoSymbol ]}; // ‎ت‎ ‎ـ‎ key { [ Arabic_noon, Arabic_comma, U066B, NoSymbol ]}; // ‎ن‎ ‎،‎ ‎٫‎ key { [ Arabic_meem, slash, NoSymbol, NoSymbol ]}; // ‎م‎ / key { [ Arabic_kaf, colon, Arabic_gaf, NoSymbol ]}; // ‎ك‎ : ‎گ‎ key { [ Arabic_tah, quotedbl, U27E9, U200D ]}; // ‎ط‎ " ⟩ ZWJ key { [ backslash, bar, U27E8, U202F ]}; // \ | ⟨ NNBSP key { [ bar, ellipsis, brokenbar, NoSymbol ]}; // | … ¦ key { [Arabic_hamzaonyeh, asciitilde, guillemotright, U203A ]}; // ‎ئ‎ ~ » › key { [ Arabic_hamza, Arabic_sukun, guillemotleft, U2039 ]}; // ‎ء‎ ◌ْ « ‹ key { [Arabic_hamzaonwaw, braceright, NoSymbol, NoSymbol ]}; // ‎ؤ } key { [ Arabic_ra, braceleft, NoSymbol, NoSymbol ]}; // ‎ر‎ { key { [ UFEFB, UFEF5, NoSymbol, NoSymbol ]}; // ‎ﻻ‎ ‎ﻵ‎ key {[Arabic_alefmaksura, Arabic_maddaonalef, Arabic_superscript_alef, NoSymbol ]}; // ‎ى‎ ‎آ‎ ‎◌ٰ‎ key { [Arabic_tehmarbuta, apostrophe, NoSymbol, NoSymbol ]}; // ‎ة‎ ' key { [ Arabic_waw, comma, U066C, NoSymbol ]}; // ‎و‎ , ‎٬ key { [ Arabic_zain, period, Arabic_jeh, NoSymbol ]}; // ‎ز‎ . ‎ژ‎ key { [ Arabic_zah, Arabic_question_mark, U066D, U200C ]}; // ‎ظ‎ ‎؟‎ ‎٭‎ ZWNJ include "level3(ralt_switch)" }; // Synonym for the default partial alphanumeric_keys xkb_symbols "qwerty" { include "ara(basic)" name[Group1]= "Arabic (QWERTY)"; }; // Replaces the Western numeral signs with Arabic-script digits on the keypad, pushing the Western digits to the third level accessible by the right alt key. // As this set of definitions is unlisted, it is not usable without parallel mapping on the numeric row in the ara(digits) layout which includes it. partial hidden keypad_keys xkb_symbols "digits_KP" { key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD"; key { [ KP_Home, Arabic_7, 7, NoSymbol ] }; key { [ KP_Up, Arabic_8, 8, NoSymbol ] }; key { [ KP_Prior, Arabic_9, 9, NoSymbol ] }; key { [ KP_Left, Arabic_4, 4, NoSymbol ] }; key { [ KP_Begin, Arabic_5, 5, NoSymbol ] }; key { [ KP_Right, Arabic_6, 6, NoSymbol ] }; key { [ KP_End, Arabic_1, 1, NoSymbol ] }; key { [ KP_Down, Arabic_2, 2, NoSymbol ] }; key { [ KP_Next, Arabic_3, 3, NoSymbol ] }; key { [ KP_Insert, Arabic_0, 0, NoSymbol ] }; include "kpdl(momayyezoss)" }; // Replaces the Western numeral signs with Arabic-script digits on the numeric row, pushing the Western digits to the third level accessible by the right alt key. partial alphanumeric_keys xkb_symbols "digits" { include "ara(basic)" name[Group1]= "Arabic (Eastern Arabic numerals)"; key { [Arabic_thal,Arabic_shadda, percent,U2030]}; key { [ Arabic_1, exclam, 1, NoSymbol ] }; key { [ Arabic_2, at, 2, NoSymbol ] }; key { [ Arabic_3, numbersign, 3, NoSymbol ] }; key { [ Arabic_4, dollar, 4, NoSymbol ] }; key { [ Arabic_5, Arabic_percent, 5, U0609 ] }; key { [ Arabic_6, asciicircum, 6, NoSymbol ] }; key { [ Arabic_7, ampersand, 7, NoSymbol ] }; key { [ Arabic_8, asterisk, 8, NoSymbol ] }; key { [ Arabic_9, parenright, 9, NoSymbol ] }; key { [ Arabic_0, parenleft, 0, NoSymbol ] }; include "ara(digits_KP)" }; // Synonym for the layout with the Latin-script and Arabic-script digits switched partial alphanumeric_keys xkb_symbols "qwerty_digits" { include "ara(digits)" name[Group1]= "Arabic (QWERTY, Eastern Arabic numerals)"; }; partial alphanumeric_keys xkb_symbols "azerty" { include "ara(basic)" name[Group1]= "Arabic (AZERTY)"; // The North African Arabic keyboard differs from the Middle East one // by the numeric row; it follows French keyboard style. // // PROBLEM: some characters are inaccessible: ! @ # $ % ^ * // Should they go elsewhere? Replacing " ' that are now doubled? // Also, dead_circumflex and dead_diaeresis from French keyboard // as well as ugrave are missing, which questions the utility of the // other accentuated Latin letters. Maybe this is useful only with // a French keyboard in Group1? Then, shouldn't Group1 be filled? key { [ ampersand, 1 ] }; key { [ eacute, 2 ] }; key { [ quotedbl, 3 ] }; key { [ apostrophe, 4 ] }; key { [ parenleft, 5 ] }; key { [ minus, 6 ] }; key { [ egrave, 7 ] }; key { [ underscore, 8 ] }; key { [ ccedilla, 9 ] }; key { [ agrave, 0 ] }; key { [ parenright, degree ] }; }; partial alphanumeric_keys xkb_symbols "azerty_digits" { include "ara(azerty)" name[Group1]= "Arabic (AZERTY, Eastern Arabic numerals)"; key { [ ampersand, Arabic_1, 1, NoSymbol ] }; key { [ eacute, Arabic_2, 2, NoSymbol ] }; key { [ quotedbl, Arabic_3, 3, NoSymbol ] }; key { [ apostrophe, Arabic_4, 4, NoSymbol ] }; key { [ parenleft, Arabic_5, 5, NoSymbol ] }; key { [ minus, Arabic_6, 6, NoSymbol ] }; key { [ egrave, Arabic_7, 7, NoSymbol ] }; key { [ underscore, Arabic_8, 8, NoSymbol ] }; key { [ ccedilla, Arabic_9, 9, NoSymbol ] }; key { [ agrave, Arabic_0, 0, NoSymbol ] }; }; // Arabic keyboard using Buckwalter transliteration // http://www.qamus.org/transliteration.htm // Martin Vidner partial alphanumeric_keys xkb_symbols "buckwalter" { name[Group1]= "Arabic (Buckwalter)"; // ARABIC LETTER SUPERSCRIPT ALEF key { [ 0x1000670, Arabic_shadda ] }; // Arabic_0 .. Arabic_9 do not work in Kate, // Unicode never seems to work worse. key { [ 0x1000661, VoidSymbol ] }; key { [ 0x1000662, VoidSymbol ] }; key { [ 0x1000663, VoidSymbol ] }; key { [ 0x1000664, Arabic_sheen ] }; key { [ 0x1000665, Arabic_percent ] }; key { [ 0x1000666, VoidSymbol ] }; key { [ 0x1000667, Arabic_hamzaonwaw ] }; key { [ 0x1000668, Arabic_thal ] }; // ORNATE LEFT PARENTHESIS key { [ 0x1000669, 0x100fd3e ] }; // ORNATE RIGHT PARENTHESIS key { [ 0x1000660, 0x100fd3f ] }; key { [ minus, Arabic_tatweel ] }; key { [ equal, plus ] }; key { [ Arabic_qaf, VoidSymbol ] }; key { [ Arabic_waw, Arabic_hamzaonwaw ] }; key { [ VoidSymbol, Arabic_ain ] }; key { [ Arabic_ra, VoidSymbol ] }; key { [ Arabic_teh, Arabic_tah ] }; key { [ Arabic_yeh, Arabic_alefmaksura ] }; key { [ Arabic_damma, VoidSymbol ] }; key { [ Arabic_kasra, Arabic_hamzaunderalef ] }; key { [ Arabic_sukun, Arabic_hamzaonalef ] }; key { [ Arabic_tehmarbuta, VoidSymbol ] }; // ARABIC LETTER ALEF WASLA key { [ VoidSymbol, 0x1000671 ] }; key { [ VoidSymbol, Arabic_hamzaonyeh ] }; key { [ Arabic_fatha, Arabic_alef ] }; key { [ Arabic_seen, Arabic_sad ] }; key { [ Arabic_dal, Arabic_dad ] }; key { [ Arabic_feh, Arabic_fathatan ] }; key { [ Arabic_ghain, VoidSymbol ] }; key { [ Arabic_ha, Arabic_hah ] }; key { [ Arabic_jeem, VoidSymbol ] }; key { [ Arabic_kaf, Arabic_kasratan ] }; key { [ Arabic_lam, VoidSymbol ] }; key { [ Arabic_semicolon, VoidSymbol ] }; key { [ Arabic_hamza, VoidSymbol ] }; key { [ VoidSymbol, Arabic_maddaonalef ] }; key { [ Arabic_zain, Arabic_zah ] }; key { [ Arabic_khah, VoidSymbol ] }; key { [ VoidSymbol, VoidSymbol ] }; key { [ Arabic_theh, VoidSymbol ] }; key { [ Arabic_beh, VoidSymbol ] }; key { [ Arabic_noon, Arabic_dammatan ] }; key { [ Arabic_meem, VoidSymbol ] }; key { [ Arabic_comma, Arabic_hamzaunderalef ] }; // ARABIC FULL STOP (Urdu) key { [ 0x10006d4, Arabic_hamzaonalef ] }; key { [ VoidSymbol, Arabic_question_mark ] }; }; partial alphanumeric_keys xkb_symbols "olpc" { include "ara(basic)" name[Group1]= "Arabic (OLPC)"; // This OLPC layout comprises the following changes in comparison to the default Arabic one: // ‣ Arabic and European digits are swapped (which entails swapping of the percent and permille signs). // ‣ Lām-ʾalif is eliminated. People type as they pronounce, and lam-alef is just a visual formatting of the // sequence and thus arguably not used on the keyboard. This frees four slots which are used for the following three changes. // ‣ The characters move: // • Thal from to // • Shadda from to // ‣ £ and € obtain the and keys, the ^ and & signs previously occupying them take seat at and . // ‣ The key gets grave ` and asciitilde ~ as on English keyboards. // ‣ In sum the grave and asciitilde are present twice, as their erstwhile places are not removed. // ‣ The braces }{ take the place of the less-than and greater-than >< signs, // but these the place of kasra and kasratan which establish themselves in the braces’ former steads. // ‣ The … character on is replaced by |, because OLPC laptops have no key installed where the bar is else placed. key { [ grave, asciitilde, percent, U2030 ] }; key { [ Arabic_1, exclam, 1 ] }; key { [ Arabic_2, at, 2 ] }; key { [ Arabic_3, numbersign, 3 ] }; key { [ Arabic_4, dollar, 4 ] }; key { [ Arabic_5, Arabic_percent, 5, U0609 ] }; key { [ Arabic_6, sterling, 6 ] }; key { [ Arabic_7, EuroSign, 7 ] }; key { [ Arabic_8, asterisk, 8 ] }; key { [ Arabic_9, parenright, 9 ] }; key { [ Arabic_0, parenleft, 0 ] }; key { [ Arabic_feh, Arabic_shadda ] }; key { [ Arabic_jeem, braceright ] }; key { [ Arabic_dal, braceleft ] }; key { [ Arabic_sheen, greater ] }; key { [ Arabic_seen, less ] }; key { [ Arabic_lam, ampersand ] }; key { [ backslash, bar ] }; key { [ Arabic_hamzaonwaw, Arabic_kasra ] }; key { [ Arabic_ra, Arabic_kasratan ] }; key { [ Arabic_thal, asciicircum ] }; include "group(olpc)" }; partial alphanumeric_keys xkb_symbols "mac" { //This is a layout that is compatible with macbooks include "ara(digits)" name[Group1]= "Arabic (Macintosh)"; key { [ minus, underscore ] }; key { [ equal, plus ] }; key { [ Arabic_tatweel, VoidSymbol ] }; key { [ Arabic_theh, Arabic_kasra ] }; key { [ Arabic_qaf, Arabic_kasratan ] }; key { [ Arabic_feh, Arabic_damma ] }; key { [ Arabic_ghain, Arabic_dammatan ] }; key { [ Arabic_ain, Arabic_sukun ] }; key { [ Arabic_ha, Arabic_shadda ] }; key { [ Arabic_khah, bracketright ] }; key { [ Arabic_hah, bracketleft ] }; key { [ Arabic_jeem, braceright ] }; key { [Arabic_tehmarbuta, braceleft ] }; key { [ Arabic_sheen, guillemotright ] }; key { [ Arabic_seen, guillemotleft ] }; key { [ Arabic_yeh, Arabic_alefmaksura] }; key { [ Arabic_beh, 0x1000670 ] }; key { [ Arabic_lam, VoidSymbol ] }; key { [ Arabic_alef, Arabic_maddaonalef ] }; key { [ Arabic_teh, 0x1000671 ] }; key { [ Arabic_noon, VoidSymbol ] }; key { [ Arabic_meem, VoidSymbol ] }; key { [ Arabic_kaf, colon ] }; key { [ Arabic_semicolon, quotedbl ] }; key { [ backslash, bar ] }; key { [ Arabic_tatweel, VoidSymbol ] }; key { [ Arabic_zah, VoidSymbol ] }; key { [ Arabic_tah, VoidSymbol ] }; key { [ Arabic_thal, Arabic_hamzaonyeh ] }; key { [ Arabic_dal, Arabic_hamza ] }; key { [ Arabic_zain, Arabic_hamzaonalef ] }; key { [ Arabic_ra, Arabic_hamzaunderalef ] }; key { [ Arabic_waw, Arabic_hamzaonwaw ] }; key { [ Arabic_comma, greater ] }; key { [ period, less ] }; key { [ slash, Arabic_question_mark ] }; }; // EXTRAS: partial alphanumeric_keys xkb_symbols "sun_type6" { include "sun_vndr/ara(sun_type6)" }; partial alphanumeric_keys xkb_symbols "basic_ext" { name[Group1]= "Arabic (Arabic numerals, extensions in the 4th level)"; key.type[Group1]="FOUR_LEVEL"; key { [ Arabic_thal, Arabic_shadda, Arabic_percent, Arabic_ddal ]}; // ‎ذ‎ ‎◌ّ‎ ‎٪‎ ‎ڈ‎ key { [ 1, exclam, Arabic_1, Farsi_1 ]}; // 1 ! ١ ۱ key { [ 2, at, Arabic_2, Farsi_2 ]}; // 2 @ ٢ ۲ key { [ 3, numbersign, Arabic_3, Farsi_3 ]}; // 3 # ٣ ۳ key { [ 4, dollar, Arabic_4, Farsi_4 ]}; // 4 $ ٤ ۴ key { [ 5, percent, Arabic_5, Farsi_5 ]}; // 5 % ٥ ۵ key { [ 6, Farsi_yeh, Arabic_6, Farsi_6 ]}; // 6 ‎ی‎ ٦ ۶ key { [ 7, ampersand, Arabic_7, Farsi_7 ]}; // 7 & ٧ ۷ key { [ 8, asterisk, Arabic_8, Farsi_8 ]}; // 8 * ٨ ۸ key { [ 9, parenright, Arabic_9, Farsi_9 ]}; // 9 ) ٩ ۹ key { [ 0, parenleft, Arabic_0, Farsi_0 ]}; // 0 ( ٠ ۰ key { [ minus, underscore, endash, U2011 ]}; // - _ – Non-Breaking-Hyphen key { [ equal, plus, notequal, U2248 ]}; // = + ≠ ≈ key { [ Arabic_dad, Arabic_fatha, U0689, U2066 ]}; // ‎ض‎ ‎◌َ ډ LEFT‑TO‑RIGHT ISOLATE key { [ Arabic_sad, Arabic_fathatan, U06D5, U2067 ]}; // ‎ص‎ ‎◌ً ە RIGHT‑TO‑LEFT ISOLATE key { [ Arabic_theh, Arabic_damma, U067F, U2068 ]}; // ‎ث‎ ‎◌ُ ٿ FIRST STRONG ISOLATE key { [ Arabic_qaf, Arabic_dammatan, U06A6, U2069 ]}; // ‎ق‎ ‎◌ٌ ڦ POP DIRECTIONAL ISOLATE key { [ Arabic_feh, UFEF9, Arabic_veh, U068D ]}; // ‎ف‎ ‎ﻹ ‎ڤ ‎ڍ‎ key { [ Arabic_ghain,Arabic_hamzaunderalef, U0685, U202A ]}; // ‎غ‎ ‎إ‎ ‎څ‎ LEFT-TO-RIGHT-EMBEDDING key { [ Arabic_ain, Arabic_rreh, Arabic_heh_goal, U202B ]}; // ‎ع‎ ‎ڑ‎ ‎ہ‎ RIGHT-TO-LEFT EMBEDDING key { [ Arabic_ha, division, Arabic_heh_doachashmee, U202C ]}; // ‎ه‎ ÷ ‎ھ‎ POP DIRECTIONAL FORMATTING key { [ Arabic_khah, multiply, U0681, U0687 ]}; // ‎خ‎ × ‎ځ‎ ‎ڇ‎ key { [ Arabic_hah, Arabic_semicolon, U0683, U200E ]}; // ‎ح‎ ؛ ‎ڃ‎ LEFT-TO-RIGHT MARK key { [ Arabic_jeem, less, Arabic_tcheh, U200F ]}; // ‎ج‎ < ‎چ‎ RIGHT-TO-LEFT MARK key { [ Arabic_dal, greater, U0684, U061C ]}; // ‎د‎ > ‎ڄ‎ ARABIC LETTER MARK key { [ Arabic_sheen, Arabic_kasra, U06C6, U06C9 ]}; // ‎ش‎ ‎◌ِ‎ ‎ۆ‎ ‎ۉ‎ key { [ Arabic_seen, Arabic_kasratan, U067C, U0680 ]}; // ‎س‎ ‎◌ٍ‎ ‎ټ‎ ‎ڀ‎ key { [ Arabic_yeh, bracketright, U06D0, U06CD ]}; // ‎ي‎ ] ‎ې‎ ‎ۍ‎ key { [ Arabic_beh, bracketleft, Arabic_peh, U067B ]}; // ‎ب‎ [ ‎پ‎ ‎ٻ‎ key { [ Arabic_lam, U0FEF7, U076A, U0658 ]}; // ‎ل‎ ‎ﻷ‎ ‎ݪ‎ ٘‎◌‎ key { [ Arabic_alef, Arabic_hamzaonalef, U0671, Arabic_noon_ghunna ]}; // ‎ا‎ ‎أ ‎ٱ‎ ‎ں‎ key { [ Arabic_teh, Arabic_tatweel, U067D, U067A ]}; // ‎ت‎ ‎ـ‎ ‎ٽ‎ ٺ‎ key { [ Arabic_noon, Arabic_comma, U066B, U06BB ]}; // ‎ن‎ ‎،‎ ‎٫‎ ڻ‎ key { [ Arabic_meem, slash, U06B3, U06B1 ]}; // ‎م‎ / ‎ڳ‎ ‎ڱ‎ key { [ Arabic_kaf, colon, Arabic_gaf, Arabic_keheh ]}; // ‎ك‎ : ‎گ‎ ‎ک‎ key { [ Arabic_tah, quotedbl, U27E9, U200D ]}; // ‎ط‎ " ⟩ ZWJ key { [ backslash, bar, U27E8, U202F ]}; // \ | ⟨ NNBSP key { [ bar, ellipsis, U06C0, U0620 ]}; // | … ‎ۀ‎ ‎ؠ‎ key { [Arabic_hamzaonyeh, asciitilde, guillemotright, U203A ]}; // ‎ئ‎ ~ » › key { [ Arabic_hamza, Arabic_sukun, guillemotleft, U2039 ]}; // ‎ء‎ ◌ْ « ‹ key { [Arabic_hamzaonwaw, braceright, U06C7, U0677 ]}; // ‎ؤ } ‎ۇ‎ ‎ٷ‎ key { [ Arabic_ra, braceleft, U0693, U0699 ]}; // ‎ر‎ { ‎ړ ‎ڙ‎ key { [ UFEFB, UFEF5, U06AB, U06AD ]}; // ‎ﻻ‎ ‎ﻵ‎ ‎ګ‎ ‎ڭ‎ key {[Arabic_alefmaksura, Arabic_maddaonalef, Arabic_superscript_alef, Arabic_yeh_baree ]}; // ‎ى‎ ‎آ‎ ‎◌ٰ‎ ‎ے‎ key { [Arabic_tehmarbuta, apostrophe, Arabic_fullstop, U06AA ]}; // ‎ة‎ ' ۔ ‎ڪ‎ key { [ Arabic_waw, comma, U066C, U06CB ]}; // ‎و‎ , ‎٬‎ ‎ۋ‎ key { [ Arabic_zain, period, Arabic_jeh, U0696 ]}; // ‎ز‎ . ‎ژ‎ ‎ږ‎ key { [ Arabic_zah, Arabic_question_mark, Arabic_tteh, U200C ]}; // ‎ظ‎ ‎؟‎ ‎ٹ‎ ZWNJ include "level3(ralt_switch)" }; // Replaces the Western numeral signs with Arabic-script digits on the keypad, pushing the Western digits to the third level accessible by the right alt key. // As this set of definitions is unlisted, it is not usable without parallel mapping on the numeric row in the ara(basic_ext_digits) layout which includes it. partial hidden keypad_keys xkb_symbols "basic_ext_digits_KP" { key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD"; key { [ KP_Home, Arabic_7, 7, Farsi_7 ] }; key { [ KP_Up, Arabic_8, 8, Farsi_8 ] }; key { [ KP_Prior, Arabic_9, 9, Farsi_9 ] }; key { [ KP_Left, Arabic_4, 4, Farsi_4 ] }; key { [ KP_Begin, Arabic_5, 5, Farsi_5 ] }; key { [ KP_Right, Arabic_6, 6, Farsi_6 ] }; key { [ KP_End, Arabic_1, 1, Farsi_1 ] }; key { [ KP_Down, Arabic_2, 2, Farsi_2 ] }; key { [ KP_Next, Arabic_3, 3, Farsi_3 ] }; key { [ KP_Insert, Arabic_0, 0, Farsi_0 ] }; include "kpdl(momayyezoss)" }; // Replaces the Western numeral signs with Arabic-script digits on the numeric row, pushing the Western digits to the third level accessible by the right alt key. // The alternative numeral glyphs used in some languages that employ the Arabic script are featured in the fourth layer. partial alphanumeric_keys xkb_symbols "basic_ext_digits" { include "ara(basic_ext)" name[Group1]= "Arabic (Eastern Arabic numerals, extensions in the 4th level)"; key { [Arabic_thal,Arabic_shadda, percent, Arabic_ddal ]}; key { [ Arabic_1, exclam, 1, Farsi_1 ] }; key { [ Arabic_2, at, 2, Farsi_2 ] }; key { [ Arabic_3, numbersign, 3, Farsi_3 ] }; key { [ Arabic_4, dollar, 4, Farsi_4 ] }; key { [ Arabic_5, Arabic_percent, 5, Farsi_5 ] }; key { [ Arabic_6, Farsi_yeh, 6, Farsi_6 ] }; key { [ Arabic_7, ampersand, 7, Farsi_7 ] }; key { [ Arabic_8, asterisk, 8, Farsi_8 ] }; key { [ Arabic_9, parenright, 9, Farsi_9 ] }; key { [ Arabic_0, parenleft, 0, Farsi_0 ] }; include "ara(basic_ext_digits_KP)" }; // In this layout the Ugaritic characters get the places of the Arabic characters with the matching sound values. partial alphanumeric_keys xkb_symbols "uga" { name[Group1]= "Ugaritic instead of Arabic"; key.type[Group1]="TWO_LEVEL"; key { [ U1038F, NoSymbol ]}; // 𐎏 key { [ 1, exclam ]}; // 1 ! key { [ 2, at ]}; // 2 @ key { [ 3, numbersign ]}; // 3 # key { [ 4, dollar ]}; // 4 $ key { [ 5, percent ]}; // 5 % key { [ 6, asciicircum ]}; // 6 ^ key { [ 7, ampersand ]}; // 7 & key { [ 8, asterisk ]}; // 8 * key { [ 9, parenleft ]}; // 9 ( key { [ 0, parenright ]}; // 0 ) key { [ minus, underscore ]}; // - _ key { [ equal, plus ]}; // = + key { [ U1039D, NoSymbol ]}; // 𐎝 key { [ U10395, NoSymbol ]}; // 𐎕 key { [ U10398, NoSymbol ]}; // 𐎘 key { [ U10396, NoSymbol ]}; // 𐎖 key { [ U10394, NoSymbol ]}; // 𐎔 key { [ U10399, NoSymbol ]}; // 𐎙 key { [ U10393, grave ]}; // 𐎓 ` key { [ U10385, division ]}; // 𐎅 ÷ key { [ U10383, multiply ]}; // 𐎃 × key { [ U10388, semicolon ]}; // 𐎈 ; key { [ U10382, greater ]}; // 𐎂 > key { [ U10384, less ]}; // 𐎄 < key { [ U1038C, U27E8 ]}; // 𐎌 ⟨ key { [ U10392, U27E9 ]}; // 𐎒 ⟩ key { [ U1038A, bracketleft ]}; // 𐎊 [ key { [ U10381, bracketright ]}; // 𐎁 ] key { [ U1038D, NoSymbol ]}; // 𐎍 key { [ U10380, NoSymbol ]}; // 𐎀 key { [ U1039A, NoSymbol ]}; // 𐎚 key { [ U10390, NoSymbol ]}; // 𐎐 key { [ U1038E, slash ]}; // 𐎎 / key { [ U1038B, colon ]}; // 𐎋: key { [ U10389, quotedbl ]}; // 𐎉 " key { [backslash, bar ]}; // \ | key { [ bar, endash ]}; // | – key { [ U1039B, guillemotleft ]}; // 𐎛 « key { [ NoSymbol, guillemotright ]}; // » key { [ U1039C, braceleft ]}; // 𐎜 { key { [ U10397, braceright ]}; // 𐎗 } key { [ U1039F, U2039 ]}; // 𐎟 ‹ key { [ question, U203A ]}; // ? › key { [ U002BC, apostrophe ]}; // ʼ ' key { [ U10386, comma ]}; // 𐎆 , key { [ U10387, period ]}; // 𐎇 . key { [ U10391, periodcentered ]}; // 𐎑 · }; // An Ergonomic implementation of the basic Arabic keyboard (PC). Brings all letters to the middle 30 keys. xkb_symbols "ergoarabic" { include "ara(basic)" name[Group1]= "Arabic (ErgoArabic)"; key { [ grave, asciitilde, NoSymbol, NoSymbol ]}; key { [ Arabic_dal, Arabic_thal, NoSymbol, U2066 ]}; key { [ Arabic_sad, Arabic_dad, NoSymbol, U2067 ]}; key { [ Arabic_feh, Arabic_shadda, Arabic_veh, NoSymbol ]}; key { [ Arabic_hamza, Arabic_hamzaunderalef, NoSymbol, U202A ]}; key { [ Arabic_ain, Arabic_ghain, NoSymbol, U202B ]}; key { [ Arabic_ha, division, NoSymbol, U202C ]}; key { [ Arabic_waw, Arabic_hamzaonwaw, NoSymbol, NoSymbol ]}; key { [ Arabic_tehmarbuta, Arabic_semicolon, NoSymbol, U200E ]}; key { [ bracketright, braceright, NoSymbol, U200F ]}; key { [ bracketleft, braceleft, NoSymbol, U061C ]}; key { [ Arabic_yeh, Arabic_fatha, NoSymbol, NoSymbol ]}; key { [ Arabic_beh, Arabic_fathatan, Arabic_peh, NoSymbol ]}; key { [ Arabic_lam, Arabic_maddaonalef,Arabic_superscript_alef, NoSymbol ]}; key { [ Arabic_teh, Arabic_tatweel, NoSymbol, NoSymbol ]}; key { [ Arabic_noon, multiply, U066B, NoSymbol ]}; key { [ Arabic_meem, comma, NoSymbol, NoSymbol ]}; key { [ Arabic_kaf, colon, Arabic_gaf, NoSymbol ]}; key { [ apostrophe, quotedbl, U27E9, U200D ]}; key { [ backslash, bar, U27E8, U202F ]}; key { [ Arabic_hamzaonyeh, NoSymbol, U203A, NoSymbol ]}; key { [Arabic_alefmaksura, Arabic_sukun, U2039, NoSymbol ]}; key { [ Arabic_tah, Arabic_zah, NoSymbol, NoSymbol ]}; key { [ Arabic_ra, Arabic_zain, Arabic_jeh, NoSymbol ]}; key { [ Arabic_khah, ellipsis, NoSymbol, NoSymbol ]}; key { [ Arabic_hah, guillemotright, NoSymbol, NoSymbol ]}; key { [ Arabic_jeem, guillemotleft, Arabic_tcheh, NoSymbol ]}; key { [ Arabic_comma, greater, NoSymbol, NoSymbol ]}; key { [ period, less, NoSymbol, NoSymbol ]}; key { [ slash, Arabic_question_mark, U066D, U200C ]}; };