// $XConsortium: th /main/3 1996/08/31 12:20:18 kaleb $
// $XFree86: xc/programs/xkbcomp/symbols/ar,v 1.1 2001/11/21 22:28:52 dawes Exp $
partial default alphanumeric_keys 
xkb_symbols "basic" {
    name[Group2]= "Arabic";

// Unicode keysyms for all the Arabic letters
// 0x100060C: ARABIC COMMA
// 0x100061B: ARABIC SEMICOLON
// 0x100061F: ARABIC QUESTION MARK
// 0x1000621: ARABIC LETTER HAMZA
// 0x1000622: ARABIC LETTER ALEF WITH MADDA ABOVE
// 0x1000623: ARABIC LETTER ALEF WITH HAMZA ABOVE
// 0x1000624: ARABIC LETTER WAW WITH HAMZA ABOVE
// 0x1000625: ARABIC LETTER ALEF WITH HAMZA BELOW
// 0x1000626: ARABIC LETTER YEH WITH HAMZA ABOVE
// 0x1000627: ARABIC LETTER ALEF
// 0x1000628: ARABIC LETTER BEH
// 0x1000629: ARABIC LETTER TEH MARBUTA
// 0x100062A: ARABIC LETTER TEH
// 0x100062B: ARABIC LETTER THEH
// 0x100062C: ARABIC LETTER JEEM
// 0x100062D: ARABIC LETTER HAH
// 0x100062E: ARABIC LETTER KHAH
// 0x100062F: ARABIC LETTER DAL
// 0x1000630: ARABIC LETTER THAL
// 0x1000631: ARABIC LETTER REH
// 0x1000632: ARABIC LETTER ZAIN
// 0x1000633: ARABIC LETTER SEEN
// 0x1000634: ARABIC LETTER SHEEN
// 0x1000635: ARABIC LETTER SAD
// 0x1000636: ARABIC LETTER DAD
// 0x1000637: ARABIC LETTER TAH
// 0x1000638: ARABIC LETTER ZAH
// 0x1000639: ARABIC LETTER AIN
// 0x100063A: ARABIC LETTER GHAIN
// 0x1000640: ARABIC TATWEEL
// 0x1000641: ARABIC LETTER FEH
// 0x1000642: ARABIC LETTER QAF
// 0x1000643: ARABIC LETTER KAF
// 0x1000644: ARABIC LETTER LAM
// 0x1000645: ARABIC LETTER MEEM
// 0x1000646: ARABIC LETTER NOON
// 0x1000647: ARABIC LETTER HEH
// 0x1000648: ARABIC LETTER WAW
// 0x1000649: ARABIC LETTER ALEF MAKSURA
// 0x100064A: ARABIC LETTER YEH
// 0x100064B: ARABIC FATHATAN
// 0x100064C: ARABIC DAMMATAN
// 0x100064D: ARABIC KASRATAN
// 0x100064E: ARABIC FATHA
// 0x100064F: ARABIC DAMMA
// 0x1000650: ARABIC KASRA
// 0x1000651: ARABIC SHADDA
// 0x1000652: ARABIC SUKUN
// 0x1000653: ARABIC MADDAH ABOVE
// 0x1000654: ARABIC HAMZA ABOVE
// 0x1000655: ARABIC HAMZA BELOW
// 0x1000660: ARABIC-INDIC DIGIT ZERO
// 0x1000661: ARABIC-INDIC DIGIT ONE
// 0x1000662: ARABIC-INDIC DIGIT TWO
// 0x1000663: ARABIC-INDIC DIGIT THREE
// 0x1000664: ARABIC-INDIC DIGIT FOUR
// 0x1000665: ARABIC-INDIC DIGIT FIVE
// 0x1000666: ARABIC-INDIC DIGIT SIX
// 0x1000667: ARABIC-INDIC DIGIT SEVEN
// 0x1000668: ARABIC-INDIC DIGIT EIGHT
// 0x1000669: ARABIC-INDIC DIGIT NINE
// 0x100066A: ARABIC PERCENT SIGN
// 0x100066B: ARABIC DECIMAL SEPARATOR
// 0x100066C: ARABIC THOUSANDS SEPARATOR
// 0x100066D: ARABIC FIVE POINTED STAR
// 0x1000670: ARABIC LETTER SUPERSCRIPT ALEF
// 0x1000671: ARABIC LETTER ALEF WASLA
// 0x1000672: ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
// 0x1000673: ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
// 0x1000674: ARABIC LETTER HIGH HAMZA
// 0x1000675: ARABIC LETTER HIGH HAMZA ALEF
// 0x1000676: ARABIC LETTER HIGH HAMZA WAW
// 0x1000677: ARABIC LETTER U WITH HAMZA ABOVE
// 0x1000678: ARABIC LETTER HIGH HAMZA YEH
// 0x1000679: ARABIC LETTER TTEH
// 0x100067A: ARABIC LETTER TTEHEH
// 0x100067B: ARABIC LETTER BEEH
// 0x100067C: ARABIC LETTER TEH WITH RING
// 0x100067D: ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
// 0x100067E: ARABIC LETTER PEH
// 0x100067F: ARABIC LETTER TEHEH
// 0x1000680: ARABIC LETTER BEHEH
// 0x1000681: ARABIC LETTER HAH WITH HAMZA ABOVE
// 0x1000682: ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
// 0x1000683: ARABIC LETTER NYEH
// 0x1000684: ARABIC LETTER DYEH
// 0x1000685: ARABIC LETTER HAH WITH THREE DOTS ABOVE
// 0x1000686: ARABIC LETTER TCHEH
// 0x1000687: ARABIC LETTER TCHEHEH
// 0x1000688: ARABIC LETTER DDAL
// 0x1000689: ARABIC LETTER DAL WITH RING
// 0x100068A: ARABIC LETTER DAL WITH DOT BELOW
// 0x100068B: ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
// 0x100068C: ARABIC LETTER DAHAL
// 0x100068D: ARABIC LETTER DDAHAL
// 0x100068E: ARABIC LETTER DUL
// 0x100068F: ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
// 0x1000690: ARABIC LETTER DAL WITH FOUR DOTS ABOVE
// 0x1000691: ARABIC LETTER RREH
// 0x1000692: ARABIC LETTER REH WITH SMALL V
// 0x1000693: ARABIC LETTER REH WITH RING
// 0x1000694: ARABIC LETTER REH WITH DOT BELOW
// 0x1000695: ARABIC LETTER REH WITH SMALL V BELOW
// 0x1000696: ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
// 0x1000697: ARABIC LETTER REH WITH TWO DOTS ABOVE
// 0x1000698: ARABIC LETTER JEH
// 0x1000699: ARABIC LETTER REH WITH FOUR DOTS ABOVE
// 0x100069A: ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
// 0x100069B: ARABIC LETTER SEEN WITH THREE DOTS BELOW
// 0x100069C: ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
// 0x100069D: ARABIC LETTER SAD WITH TWO DOTS BELOW
// 0x100069E: ARABIC LETTER SAD WITH THREE DOTS ABOVE
// 0x100069F: ARABIC LETTER TAH WITH THREE DOTS ABOVE
// 0x10006A0: ARABIC LETTER AIN WITH THREE DOTS ABOVE
// 0x10006A1: ARABIC LETTER DOTLESS FEH
// 0x10006A2: ARABIC LETTER FEH WITH DOT MOVED BELOW
// 0x10006A3: ARABIC LETTER FEH WITH DOT BELOW
// 0x10006A4: ARABIC LETTER VEH
// 0x10006A5: ARABIC LETTER FEH WITH THREE DOTS BELOW
// 0x10006A6: ARABIC LETTER PEHEH
// 0x10006A7: ARABIC LETTER QAF WITH DOT ABOVE
// 0x10006A8: ARABIC LETTER QAF WITH THREE DOTS ABOVE
// 0x10006A9: ARABIC LETTER KEHEH
// 0x10006AA: ARABIC LETTER SWASH KAF
// 0x10006AB: ARABIC LETTER KAF WITH RING
// 0x10006AC: ARABIC LETTER KAF WITH DOT ABOVE
// 0x10006AD: ARABIC LETTER NG
// 0x10006AE: ARABIC LETTER KAF WITH THREE DOTS BELOW
// 0x10006AF: ARABIC LETTER GAF
// 0x10006B0: ARABIC LETTER GAF WITH RING
// 0x10006B1: ARABIC LETTER NGOEH
// 0x10006B2: ARABIC LETTER GAF WITH TWO DOTS BELOW
// 0x10006B3: ARABIC LETTER GUEH
// 0x10006B4: ARABIC LETTER GAF WITH THREE DOTS ABOVE
// 0x10006B5: ARABIC LETTER LAM WITH SMALL V
// 0x10006B6: ARABIC LETTER LAM WITH DOT ABOVE
// 0x10006B7: ARABIC LETTER LAM WITH THREE DOTS ABOVE
// 0x10006B8: ARABIC LETTER LAM WITH THREE DOTS BELOW
// 0x10006B9: ARABIC LETTER NOON WITH DOT BELOW
// 0x10006BA: ARABIC LETTER NOON GHUNNA
// 0x10006BB: ARABIC LETTER RNOON
// 0x10006BC: ARABIC LETTER NOON WITH RING
// 0x10006BD: ARABIC LETTER NOON WITH THREE DOTS ABOVE
// 0x10006BE: ARABIC LETTER HEH DOACHASHMEE
// 0x10006BF: ARABIC LETTER TCHEH WITH DOT ABOVE
// 0x10006C0: ARABIC LETTER HEH WITH YEH ABOVE
// 0x10006C1: ARABIC LETTER HEH GOAL
// 0x10006C2: ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
// 0x10006C3: ARABIC LETTER TEH MARBUTA GOAL
// 0x10006C4: ARABIC LETTER WAW WITH RING
// 0x10006C5: ARABIC LETTER KIRGHIZ OE
// 0x10006C6: ARABIC LETTER OE
// 0x10006C7: ARABIC LETTER U
// 0x10006C8: ARABIC LETTER YU
// 0x10006C9: ARABIC LETTER KIRGHIZ YU
// 0x10006CA: ARABIC LETTER WAW WITH TWO DOTS ABOVE
// 0x10006CB: ARABIC LETTER VE
// 0x10006CC: ARABIC LETTER FARSI YEH
// 0x10006CD: ARABIC LETTER YEH WITH TAIL
// 0x10006CE: ARABIC LETTER YEH WITH SMALL V
// 0x10006CF: ARABIC LETTER WAW WITH DOT ABOVE
// 0x10006D0: ARABIC LETTER E
// 0x10006D1: ARABIC LETTER YEH WITH THREE DOTS BELOW
// 0x10006D2: ARABIC LETTER YEH BARREE
// 0x10006D3: ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
// 0x10006D4: ARABIC FULL STOP
// 0x10006D5: ARABIC LETTER AE
// 0x10006D6: ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
// 0x10006D7: ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
// 0x10006D8: ARABIC SMALL HIGH MEEM INITIAL FORM
// 0x10006D9: ARABIC SMALL HIGH LAM ALEF
// 0x10006DA: ARABIC SMALL HIGH JEEM
// 0x10006DB: ARABIC SMALL HIGH THREE DOTS
// 0x10006DC: ARABIC SMALL HIGH SEEN
// 0x10006DD: ARABIC END OF AYAH
// 0x10006DE: ARABIC START OF RUB EL HIZB
// 0x10006DF: ARABIC SMALL HIGH ROUNDED ZERO
// 0x10006E0: ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
// 0x10006E1: ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
// 0x10006E2: ARABIC SMALL HIGH MEEM ISOLATED FORM
// 0x10006E3: ARABIC SMALL LOW SEEN
// 0x10006E4: ARABIC SMALL HIGH MADDA
// 0x10006E5: ARABIC SMALL WAW
// 0x10006E6: ARABIC SMALL YEH
// 0x10006E7: ARABIC SMALL HIGH YEH
// 0x10006E8: ARABIC SMALL HIGH NOON
// 0x10006E9: ARABIC PLACE OF SAJDAH
// 0x10006EA: ARABIC EMPTY CENTRE LOW STOP
// 0x10006EB: ARABIC EMPTY CENTRE HIGH STOP
// 0x10006EC: ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
// 0x10006ED: ARABIC SMALL LOW MEEM
// 0x10006F0: EXTENDED ARABIC-INDIC DIGIT ZERO
// 0x10006F1: EXTENDED ARABIC-INDIC DIGIT ONE
// 0x10006F2: EXTENDED ARABIC-INDIC DIGIT TWO
// 0x10006F3: EXTENDED ARABIC-INDIC DIGIT THREE
// 0x10006F4: EXTENDED ARABIC-INDIC DIGIT FOUR
// 0x10006F5: EXTENDED ARABIC-INDIC DIGIT FIVE
// 0x10006F6: EXTENDED ARABIC-INDIC DIGIT SIX
// 0x10006F7: EXTENDED ARABIC-INDIC DIGIT SEVEN
// 0x10006F8: EXTENDED ARABIC-INDIC DIGIT EIGHT
// 0x10006F9: EXTENDED ARABIC-INDIC DIGIT NINE
// 0x10006FA: ARABIC LETTER SHEEN WITH DOT BELOW
// 0x10006FB: ARABIC LETTER DAD WITH DOT BELOW
// 0x10006FC: ARABIC LETTER GHAIN WITH DOT BELOW
// 0x10006FD: ARABIC SIGN SINDHI AMPERSAND
// 0x10006FE: ARABIC SIGN SINDHI POSTPOSITION MEN
//
// There are more possible Unicode values for particular glyph forms (e.g. isolated, medial, etc.)
// but most of them are not very useful in a keyboard map.

// NOTES:
//
// there is also combined shadda diacritis in AltGr position of simple
// diacritics fatha, fathatan, damma, dammatan, kasra and kasratan
// should a third state be added to Group2 ?
//


    key <TLDE> { symbols[Group2] = [       0x1000630,	    0x1000651      ]	};
    key <AE01> { symbols[Group2] = [               1,          exclam      ]       };
    key <AE02> { symbols[Group2] = [               2,              at      ]       };
    key <AE03> { symbols[Group2] = [               3,      numbersign      ]       };
    key <AE04> { symbols[Group2] = [               4,          dollar      ]       };
    key <AE05> { symbols[Group2] = [               5,         percent      ]       };
    key <AE06> { symbols[Group2] = [               6,     asciicircum      ]       };
    key <AE07> { symbols[Group2] = [               7,       ampersand      ]       };
    key <AE08> { symbols[Group2] = [               8,        asterisk      ]       };
    key <AE09> { symbols[Group2] = [               9,       parenleft      ]       };
    key <AE10> { symbols[Group2] = [               0,      parenright      ]       };
    key <AE11> { symbols[Group2] = [           minus,      underscore      ]       };
    key <AE12> { symbols[Group2] = [           equal,            plus      ]       };
						
    key <AD01> { symbols[Group2] = [       0x1000636,       0x100064e      ]       };
    key <AD02> { symbols[Group2] = [       0x1000635,       0x100064b      ]       };
    key <AD03> { symbols[Group2] = [       0x100062b,       0x100064f      ]       };
    key <AD04> { symbols[Group2] = [       0x1000642,       0x100064c      ]       };
    key <AD05> { symbols[Group2] = [       0x1000641,       0x100fef9      ]       };
    key <AD06> { symbols[Group2] = [       0x100063a,       0x1000625      ]       };
    key <AD07> { symbols[Group2] = [       0x1000639,           grave      ]       };
    key <AD08> { symbols[Group2] = [       0x1000647,        division      ]       };
    key <AD09> { symbols[Group2] = [       0x100062e,        multiply      ]       };
    key <AD10> { symbols[Group2] = [       0x100062d,       0x100061b      ]       };
    key <AD11> { symbols[Group2] = [       0x100062c,       braceleft      ]       };
    key <AD12> { symbols[Group2] = [       0x100062f,      braceright      ]       };

    key <AC01> { symbols[Group2] = [       0x1000634,       backslash      ]       };
    key <AC02> { symbols[Group2] = [       0x1000633,               S      ]       };
    key <AC03> { symbols[Group2] = [       0x100064a,     bracketleft      ]       };
    key <AC04> { symbols[Group2] = [       0x1000628,    bracketright      ]       };
    key <AC05> { symbols[Group2] = [       0x1000644,       0x100fef7      ]       };
    key <AC06> { symbols[Group2] = [       0x1000627,       0x1000623      ]       };
    key <AC07> { symbols[Group2] = [       0x100062a,       0x1000640      ]       };
    key <AC08> { symbols[Group2] = [       0x1000646,       0x100060c      ]       };
    key <AC09> { symbols[Group2] = [       0x1000645,           slash      ]       };
    key <AC10> { symbols[Group2] = [       0x1000643,           colon      ]       };
    key <AC11> { symbols[Group2] = [       0x1000637,        quotedbl      ]       };
    key <BKSL> { symbols[Group2] = [            less,         greater      ]       };

    key <LSGT> { symbols[Group2] = [             bar,       brokenbar	   ]       };
    key <AB01> { symbols[Group2] = [	   0x1000626,      asciitilde      ]       };
    key <AB02> { symbols[Group2] = [       0x1000621,       0x1000652	   ]       };
    key <AB03> { symbols[Group2] = [       0x1000624,       0x1000650	   ]       };
    key <AB04> { symbols[Group2] = [       0x1000631,       0x100064d      ]       };
    key <AB05> { symbols[Group2] = [       0x100fefb,       0x100fef5      ]       };
    key <AB06> { symbols[Group2] = [	   0x1000649,       0x1000622      ]       };
    key <AB07> { symbols[Group2] = [	   0x1000629,      apostrophe      ]       };
    key <AB08> { symbols[Group2] = [	   0x1000648,           comma      ]       };
    key <AB09> { symbols[Group2] = [	   0x1000632,          period      ]       };
    key <AB10> { symbols[Group2] = [	   0x1000638,       0x100061f      ]       };

    // End alphanumeric section
    
    // Begin modifier mappings 

    modifier_map Shift  { Shift_L };
    modifier_map Lock   { Caps_Lock, ISO_Lock };
    modifier_map Control{ Control_L };
    modifier_map Mod3   { Mode_switch };
};

partial alphanumeric_keys
xkb_symbols "qwerty" {
    include "ar(basic)"
};

partial alphanumeric_keys
xkb_symbols "azerty" {
    include "ar(basic)"

	// the north african arabic keyboard differs from the middle east one
	// by the numeric row; it follows French keyboard style
    //
	// PROBLEM: some chars are inaccessible: ! @ # $ % ^ *
	// should they go elsewhere? replace " ' that are now in double ?
	// 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 <AE01> { symbols[Group2] = [       ampersand,               1      ]       };
    key <AE02> { symbols[Group2] = [          eacute,               2      ]       };
    key <AE03> { symbols[Group2] = [        quotedbl,               3      ]       };
    key <AE04> { symbols[Group2] = [      apostrophe,               4      ]       };
    key <AE05> { symbols[Group2] = [       parenleft,               5      ]       };
    key <AE06> { symbols[Group2] = [           minus,               6      ]       };
    key <AE07> { symbols[Group2] = [          egrave,               7      ]       };
    key <AE08> { symbols[Group2] = [      underscore,               8      ]       };
    key <AE09> { symbols[Group2] = [        ccedilla,               9      ]       };
    key <AE10> { symbols[Group2] = [          agrave,               0      ]       };
    key <AE11> { symbols[Group2] = [      parenright,          degree      ]       };
};

partial alphanumeric_keys
xkb_symbols "digits" {
    include "ar(basic)"

	// use arabic script digits

    key <AE01> { symbols[Group2] = [       0x1000661,          exclam      ]       };
    key <AE02> { symbols[Group2] = [       0x1000662,              at      ]       };
    key <AE03> { symbols[Group2] = [       0x1000663,      numbersign      ]       };
    key <AE04> { symbols[Group2] = [       0x1000664,          dollar      ]       };
    key <AE05> { symbols[Group2] = [       0x1000665,         percent      ]       };
    key <AE06> { symbols[Group2] = [       0x1000666,     asciicircum      ]       };
    key <AE07> { symbols[Group2] = [       0x1000667,       ampersand      ]       };
    key <AE08> { symbols[Group2] = [       0x1000668,        asterisk      ]       };
    key <AE09> { symbols[Group2] = [       0x1000669,       parenleft      ]       };
    key <AE10> { symbols[Group2] = [       0x1000660,      parenright      ]       };
};

partial alphanumeric_keys
xkb_symbols "qwerty_digits" {
    include "ar(digits)"
};

partial alphanumeric_keys
xkb_symbols "azerty_digits" {
    include "ar(azerty)"
	
    key <AE01> { symbols[Group2] = [       ampersand,       0x1000661      ]       };
    key <AE02> { symbols[Group2] = [          eacute,       0x1000662      ]       };
    key <AE03> { symbols[Group2] = [        quotedbl,       0x1000663      ]       };
    key <AE04> { symbols[Group2] = [      apostrophe,       0x1000664      ]       };
    key <AE05> { symbols[Group2] = [       parenleft,       0x1000665      ]       };
    key <AE06> { symbols[Group2] = [           minus,       0x1000666      ]       };
    key <AE07> { symbols[Group2] = [          egrave,       0x1000667      ]       };
    key <AE08> { symbols[Group2] = [      underscore,       0x1000668      ]       };
    key <AE09> { symbols[Group2] = [        ccedilla,       0x1000669      ]       };
    key <AE10> { symbols[Group2] = [          agrave,       0x1000660      ]       };
};

