1 default partial alphanumeric_keys 2 xkb_symbols "basic" { 3 4 name[Group1]= "Arabic"; 5 6 key.type[Group1]="FOUR_LEVEL"; 7 8 key <TLDE> { [ Arabic_thal, Arabic_shadda, Arabic_percent, U0609 ]}; // 9 key <AE01> { [ 1, exclam, Arabic_1, NoSymbol ]}; // 1 ! 10 key <AE02> { [ 2, at, Arabic_2, NoSymbol ]}; // 2 @ 11 key <AE03> { [ 3, numbersign, Arabic_3, NoSymbol ]}; // 3 # 12 key <AE04> { [ 4, dollar, Arabic_4, NoSymbol ]}; // 4 $ 13 key <AE05> { [ 5, percent, Arabic_5, U2030 ]}; // 5 % 14 key <AE06> { [ 6, asciicircum, Arabic_6, NoSymbol ]}; // 6 ^ 15 key <AE07> { [ 7, ampersand, Arabic_7, NoSymbol ]}; // 7 & 16 key <AE08> { [ 8, asterisk, Arabic_8, NoSymbol ]}; // 8 * 17 key <AE09> { [ 9, parenright, Arabic_9, NoSymbol ]}; // 9 ) 18 key <AE10> { [ 0, parenleft, Arabic_0, NoSymbol ]}; // 0 ( 19 key <AE11> { [ minus, underscore, endash, U2011 ]}; // - _ Non-Breaking-Hyphen 20 key <AE12> { [ equal, plus, notequal, U2248 ]}; // = + 21 22 key <AD01> { [ Arabic_dad, Arabic_fatha, NoSymbol, U2066 ]}; // LEFTTORIGHT ISOLATE 23 key <AD02> { [ Arabic_sad, Arabic_fathatan, NoSymbol, U2067 ]}; // RIGHTTOLEFT ISOLATE 24 key <AD03> { [ Arabic_theh, Arabic_damma, NoSymbol, U2068 ]}; // FIRST STRONG ISOLATE 25 key <AD04> { [ Arabic_qaf, Arabic_dammatan, NoSymbol, U2069 ]}; // POP DIRECTIONAL ISOLATE 26 key <AD05> { [ Arabic_feh, UFEF9, Arabic_veh, NoSymbol ]}; // 27 key <AD06> { [ Arabic_ghain,Arabic_hamzaunderalef, NoSymbol, U202A ]}; // LEFT-TO-RIGHT-EMBEDDING 28 key <AD07> { [ Arabic_ain, grave, NoSymbol, U202B ]}; // ` RIGHT-TO-LEFT EMBEDDING 29 key <AD08> { [ Arabic_ha, division, NoSymbol, U202C ]}; // POP DIRECTIONAL FORMATTING 30 key <AD09> { [ Arabic_khah, multiply, NoSymbol, NoSymbol ]}; // 31 key <AD10> { [ Arabic_hah, Arabic_semicolon, NoSymbol, U200E ]}; // LEFT-TO-RIGHT MARK 32 key <AD11> { [ Arabic_jeem, less, Arabic_tcheh, U200F ]}; // < RIGHT-TO-LEFT MARK 33 key <AD12> { [ Arabic_dal, greater, NoSymbol, U061C ]}; // > ARABIC LETTER MARK 34 35 key <AC01> { [ Arabic_sheen, Arabic_kasra, NoSymbol, NoSymbol ]}; // 36 key <AC02> { [ Arabic_seen, Arabic_kasratan, NoSymbol, NoSymbol ]}; // 37 key <AC03> { [ Arabic_yeh, bracketright, NoSymbol, NoSymbol ]}; // ] 38 key <AC04> { [ Arabic_beh, bracketleft, Arabic_peh, NoSymbol ]}; // [ 39 key <AC05> { [ Arabic_lam, U0FEF7, NoSymbol, NoSymbol ]}; // 40 key <AC06> { [ Arabic_alef, Arabic_hamzaonalef, U0671, NoSymbol ]}; // 41 key <AC07> { [ Arabic_teh, Arabic_tatweel, NoSymbol, NoSymbol ]}; // 42 key <AC08> { [ Arabic_noon, Arabic_comma, U066B, NoSymbol ]}; // 43 key <AC09> { [ Arabic_meem, slash, NoSymbol, NoSymbol ]}; // / 44 key <AC10> { [ Arabic_kaf, colon, Arabic_gaf, NoSymbol ]}; // : 45 key <AC11> { [ Arabic_tah, quotedbl, U27E9, U200D ]}; // " ZWJ 46 key <BKSL> { [ backslash, bar, U27E8, U202F ]}; // \ | NNBSP 47 48 key <LSGT> { [ bar, ellipsis, brokenbar, NoSymbol ]}; // | 49 key <AB01> { [Arabic_hamzaonyeh, asciitilde, guillemotright, U203A ]}; // ~ 50 key <AB02> { [ Arabic_hamza, Arabic_sukun, guillemotleft, U2039 ]}; // 51 key <AB03> { [Arabic_hamzaonwaw, braceright, NoSymbol, NoSymbol ]}; // } 52 key <AB04> { [ Arabic_ra, braceleft, NoSymbol, NoSymbol ]}; // { 53 key <AB05> { [ UFEFB, UFEF5, NoSymbol, NoSymbol ]}; // 54 key <AB06> {[Arabic_alefmaksura, Arabic_maddaonalef, Arabic_superscript_alef, NoSymbol ]}; // 55 key <AB07> { [Arabic_tehmarbuta, apostrophe, NoSymbol, NoSymbol ]}; // ' 56 key <AB08> { [ Arabic_waw, comma, U066C, NoSymbol ]}; // , 57 key <AB09> { [ Arabic_zain, period, Arabic_jeh, NoSymbol ]}; // . 58 key <AB10> { [ Arabic_zah, Arabic_question_mark, U066D, U200C ]}; // ZWNJ 59 60 include "level3(ralt_switch)" 61 }; 62 63 // Synonym for the default 64 partial alphanumeric_keys 65 xkb_symbols "qwerty" { 66 include "ara(basic)" 67 name[Group1]= "Arabic (QWERTY)"; 68 }; 69 70 71 // 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. 72 // 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. 73 partial hidden keypad_keys 74 xkb_symbols "digits_KP" { 75 76 key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD"; 77 78 key <KP7> { [ KP_Home, Arabic_7, 7, NoSymbol ] }; 79 key <KP8> { [ KP_Up, Arabic_8, 8, NoSymbol ] }; 80 key <KP9> { [ KP_Prior, Arabic_9, 9, NoSymbol ] }; 81 82 key <KP4> { [ KP_Left, Arabic_4, 4, NoSymbol ] }; 83 key <KP5> { [ KP_Begin, Arabic_5, 5, NoSymbol ] }; 84 key <KP6> { [ KP_Right, Arabic_6, 6, NoSymbol ] }; 85 86 key <KP1> { [ KP_End, Arabic_1, 1, NoSymbol ] }; 87 key <KP2> { [ KP_Down, Arabic_2, 2, NoSymbol ] }; 88 key <KP3> { [ KP_Next, Arabic_3, 3, NoSymbol ] }; 89 90 key <KP0> { [ KP_Insert, Arabic_0, 0, NoSymbol ] }; 91 92 include "kpdl(momayyezoss)" 93 }; 94 95 // 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. 96 partial alphanumeric_keys 97 xkb_symbols "digits" { 98 99 include "ara(basic)" 100 101 name[Group1]= "Arabic (Eastern Arabic numerals)"; 102 103 key <TLDE> { [Arabic_thal,Arabic_shadda, percent,U2030]}; 104 key <AE01> { [ Arabic_1, exclam, 1, NoSymbol ] }; 105 key <AE02> { [ Arabic_2, at, 2, NoSymbol ] }; 106 key <AE03> { [ Arabic_3, numbersign, 3, NoSymbol ] }; 107 key <AE04> { [ Arabic_4, dollar, 4, NoSymbol ] }; 108 key <AE05> { [ Arabic_5, Arabic_percent, 5, U0609 ] }; 109 key <AE06> { [ Arabic_6, asciicircum, 6, NoSymbol ] }; 110 key <AE07> { [ Arabic_7, ampersand, 7, NoSymbol ] }; 111 key <AE08> { [ Arabic_8, asterisk, 8, NoSymbol ] }; 112 key <AE09> { [ Arabic_9, parenright, 9, NoSymbol ] }; 113 key <AE10> { [ Arabic_0, parenleft, 0, NoSymbol ] }; 114 115 include "ara(digits_KP)" 116 }; 117 118 // Synonym for the layout with the Latin-script and Arabic-script digits switched 119 partial alphanumeric_keys 120 xkb_symbols "qwerty_digits" { 121 include "ara(digits)" 122 name[Group1]= "Arabic (QWERTY, Eastern Arabic numerals)"; 123 }; 124 125 126 partial alphanumeric_keys 127 xkb_symbols "azerty" { 128 include "ara(basic)" 129 name[Group1]= "Arabic (AZERTY)"; 130 131 // The North African Arabic keyboard differs from the Middle East one 132 // by the numeric row; it follows French keyboard style. 133 // 134 // PROBLEM: some characters are inaccessible: ! @ # $ % ^ * 135 // Should they go elsewhere? Replacing " ' that are now doubled? 136 // Also, dead_circumflex and dead_diaeresis from French keyboard 137 // as well as ugrave are missing, which questions the utility of the 138 // other accentuated Latin letters. Maybe this is useful only with 139 // a French keyboard in Group1? Then, shouldn't Group1 be filled? 140 141 key <AE01> { [ ampersand, 1 ] }; 142 key <AE02> { [ eacute, 2 ] }; 143 key <AE03> { [ quotedbl, 3 ] }; 144 key <AE04> { [ apostrophe, 4 ] }; 145 key <AE05> { [ parenleft, 5 ] }; 146 key <AE06> { [ minus, 6 ] }; 147 key <AE07> { [ egrave, 7 ] }; 148 key <AE08> { [ underscore, 8 ] }; 149 key <AE09> { [ ccedilla, 9 ] }; 150 key <AE10> { [ agrave, 0 ] }; 151 key <AE11> { [ parenright, degree ] }; 152 }; 153 154 partial alphanumeric_keys 155 xkb_symbols "azerty_digits" { 156 include "ara(azerty)" 157 name[Group1]= "Arabic (AZERTY, Eastern Arabic numerals)"; 158 159 key <AE01> { [ ampersand, Arabic_1, 1, NoSymbol ] }; 160 key <AE02> { [ eacute, Arabic_2, 2, NoSymbol ] }; 161 key <AE03> { [ quotedbl, Arabic_3, 3, NoSymbol ] }; 162 key <AE04> { [ apostrophe, Arabic_4, 4, NoSymbol ] }; 163 key <AE05> { [ parenleft, Arabic_5, 5, NoSymbol ] }; 164 key <AE06> { [ minus, Arabic_6, 6, NoSymbol ] }; 165 key <AE07> { [ egrave, Arabic_7, 7, NoSymbol ] }; 166 key <AE08> { [ underscore, Arabic_8, 8, NoSymbol ] }; 167 key <AE09> { [ ccedilla, Arabic_9, 9, NoSymbol ] }; 168 key <AE10> { [ agrave, Arabic_0, 0, NoSymbol ] }; 169 }; 170 171 172 // Arabic keyboard using Buckwalter transliteration 173 // http://www.qamus.org/transliteration.htm 174 // Martin Vidner 175 176 partial alphanumeric_keys 177 xkb_symbols "buckwalter" { 178 name[Group1]= "Arabic (Buckwalter)"; 179 180 // ARABIC LETTER SUPERSCRIPT ALEF 181 key <TLDE> { [ 0x1000670, Arabic_shadda ] }; 182 183 // Arabic_0 .. Arabic_9 do not work in Kate, 184 // Unicode never seems to work worse. 185 key <AE01> { [ 0x1000661, VoidSymbol ] }; 186 key <AE02> { [ 0x1000662, VoidSymbol ] }; 187 key <AE03> { [ 0x1000663, VoidSymbol ] }; 188 key <AE04> { [ 0x1000664, Arabic_sheen ] }; 189 key <AE05> { [ 0x1000665, Arabic_percent ] }; 190 key <AE06> { [ 0x1000666, VoidSymbol ] }; 191 key <AE07> { [ 0x1000667, Arabic_hamzaonwaw ] }; 192 key <AE08> { [ 0x1000668, Arabic_thal ] }; 193 // ORNATE LEFT PARENTHESIS 194 key <AE09> { [ 0x1000669, 0x100fd3e ] }; 195 // ORNATE RIGHT PARENTHESIS 196 key <AE10> { [ 0x1000660, 0x100fd3f ] }; 197 key <AE11> { [ minus, Arabic_tatweel ] }; 198 key <AE12> { [ equal, plus ] }; 199 200 key <AD01> { [ Arabic_qaf, VoidSymbol ] }; 201 key <AD02> { [ Arabic_waw, Arabic_hamzaonwaw ] }; 202 key <AD03> { [ VoidSymbol, Arabic_ain ] }; 203 key <AD04> { [ Arabic_ra, VoidSymbol ] }; 204 key <AD05> { [ Arabic_teh, Arabic_tah ] }; 205 key <AD06> { [ Arabic_yeh, Arabic_alefmaksura ] }; 206 key <AD07> { [ Arabic_damma, VoidSymbol ] }; 207 key <AD08> { [ Arabic_kasra, Arabic_hamzaunderalef ] }; 208 key <AD09> { [ Arabic_sukun, Arabic_hamzaonalef ] }; 209 key <AD10> { [ Arabic_tehmarbuta, VoidSymbol ] }; 210 // ARABIC LETTER ALEF WASLA 211 key <AD11> { [ VoidSymbol, 0x1000671 ] }; 212 key <AD12> { [ VoidSymbol, Arabic_hamzaonyeh ] }; 213 214 key <AC01> { [ Arabic_fatha, Arabic_alef ] }; 215 key <AC02> { [ Arabic_seen, Arabic_sad ] }; 216 key <AC03> { [ Arabic_dal, Arabic_dad ] }; 217 key <AC04> { [ Arabic_feh, Arabic_fathatan ] }; 218 key <AC05> { [ Arabic_ghain, VoidSymbol ] }; 219 key <AC06> { [ Arabic_ha, Arabic_hah ] }; 220 key <AC07> { [ Arabic_jeem, VoidSymbol ] }; 221 key <AC08> { [ Arabic_kaf, Arabic_kasratan ] }; 222 key <AC09> { [ Arabic_lam, VoidSymbol ] }; 223 key <AC10> { [ Arabic_semicolon, VoidSymbol ] }; 224 key <AC11> { [ Arabic_hamza, VoidSymbol ] }; 225 226 key <BKSL> { [ VoidSymbol, Arabic_maddaonalef ] }; 227 228 key <AB01> { [ Arabic_zain, Arabic_zah ] }; 229 key <AB02> { [ Arabic_khah, VoidSymbol ] }; 230 key <AB03> { [ VoidSymbol, VoidSymbol ] }; 231 key <AB04> { [ Arabic_theh, VoidSymbol ] }; 232 key <AB05> { [ Arabic_beh, VoidSymbol ] }; 233 key <AB06> { [ Arabic_noon, Arabic_dammatan ] }; 234 key <AB07> { [ Arabic_meem, VoidSymbol ] }; 235 key <AB08> { [ Arabic_comma, Arabic_hamzaunderalef ] }; 236 // ARABIC FULL STOP (Urdu) 237 key <AB09> { [ 0x10006d4, Arabic_hamzaonalef ] }; 238 key <AB10> { [ VoidSymbol, Arabic_question_mark ] }; 239 }; 240 241 partial alphanumeric_keys 242 xkb_symbols "olpc" { 243 244 include "ara(basic)" 245 246 name[Group1]= "Arabic (OLPC)"; 247 248 // This OLPC layout comprises the following changes in comparison to the default Arabic one: 249 // Arabic and European digits are swapped (which entails swapping of the percent and permille signs). 250 // Lm-alif is eliminated. People type as they pronounce, and lam-alef is just a visual formatting of the 251 // sequence and thus arguably not used on the keyboard. This frees four slots which are used for the following three changes. 252 // The <TLDE> characters move: 253 // Thal from <TLDE> to <AB05> 254 // Shadda from <TLDE> to <AD05> 255 // and obtain the <AE06> and <AE07> keys, the ^ and & signs previously occupying them take seat at <AB05> and <AC05>. 256 // The <TLDE> key gets grave ` and asciitilde ~ as on English keyboards. 257 // In sum the grave and asciitilde are present twice, as their erstwhile places are not removed. 258 // The braces }{ take the place of the less-than and greater-than >< signs, 259 // but these the place of kasra and kasratan which establish themselves in the braces former steads. 260 // The character on <BKSL> is replaced by |, because OLPC laptops have no <LSGT> key installed where the bar is else placed. 261 262 key <TLDE> { [ grave, asciitilde, percent, U2030 ] }; 263 264 key <AE01> { [ Arabic_1, exclam, 1 ] }; 265 key <AE02> { [ Arabic_2, at, 2 ] }; 266 key <AE03> { [ Arabic_3, numbersign, 3 ] }; 267 key <AE04> { [ Arabic_4, dollar, 4 ] }; 268 key <AE05> { [ Arabic_5, Arabic_percent, 5, U0609 ] }; 269 key <AE06> { [ Arabic_6, sterling, 6 ] }; 270 key <AE07> { [ Arabic_7, EuroSign, 7 ] }; 271 key <AE08> { [ Arabic_8, asterisk, 8 ] }; 272 key <AE09> { [ Arabic_9, parenright, 9 ] }; 273 key <AE10> { [ Arabic_0, parenleft, 0 ] }; 274 275 key <AD05> { [ Arabic_feh, Arabic_shadda ] }; 276 277 key <AD11> { [ Arabic_jeem, braceright ] }; 278 key <AD12> { [ Arabic_dal, braceleft ] }; 279 280 key <AC01> { [ Arabic_sheen, greater ] }; 281 key <AC02> { [ Arabic_seen, less ] }; 282 key <AC05> { [ Arabic_lam, ampersand ] }; 283 key <BKSL> { [ backslash, bar ] }; 284 285 key <AB03> { [ Arabic_hamzaonwaw, Arabic_kasra ] }; 286 key <AB04> { [ Arabic_ra, Arabic_kasratan ] }; 287 key <AB05> { [ Arabic_thal, asciicircum ] }; 288 289 include "group(olpc)" 290 }; 291 292 partial alphanumeric_keys 293 xkb_symbols "mac" { 294 295 //This is a layout that is compatible with macbooks 296 297 include "ara(digits)" 298 name[Group1]= "Arabic (Macintosh)"; 299 300 key <AE11> { [ minus, underscore ] }; 301 key <AE12> { [ equal, plus ] }; 302 303 key <TLDE> { [ Arabic_tatweel, VoidSymbol ] }; 304 key <AD03> { [ Arabic_theh, Arabic_kasra ] }; 305 key <AD04> { [ Arabic_qaf, Arabic_kasratan ] }; 306 key <AD05> { [ Arabic_feh, Arabic_damma ] }; 307 key <AD06> { [ Arabic_ghain, Arabic_dammatan ] }; 308 key <AD07> { [ Arabic_ain, Arabic_sukun ] }; 309 key <AD08> { [ Arabic_ha, Arabic_shadda ] }; 310 key <AD09> { [ Arabic_khah, bracketright ] }; 311 key <AD10> { [ Arabic_hah, bracketleft ] }; 312 key <AD11> { [ Arabic_jeem, braceright ] }; 313 key <AD12> { [Arabic_tehmarbuta, braceleft ] }; 314 315 key <AC01> { [ Arabic_sheen, guillemotright ] }; 316 key <AC02> { [ Arabic_seen, guillemotleft ] }; 317 key <AC03> { [ Arabic_yeh, Arabic_alefmaksura] }; 318 key <AC04> { [ Arabic_beh, 0x1000670 ] }; 319 key <AC05> { [ Arabic_lam, VoidSymbol ] }; 320 key <AC06> { [ Arabic_alef, Arabic_maddaonalef ] }; 321 key <AC07> { [ Arabic_teh, 0x1000671 ] }; 322 key <AC08> { [ Arabic_noon, VoidSymbol ] }; 323 key <AC09> { [ Arabic_meem, VoidSymbol ] }; 324 key <AC10> { [ Arabic_kaf, colon ] }; 325 key <AC11> { [ Arabic_semicolon, quotedbl ] }; 326 327 key <BKSL> { [ backslash, bar ] }; 328 329 key <LSGT> { [ Arabic_tatweel, VoidSymbol ] }; 330 key <AB01> { [ Arabic_zah, VoidSymbol ] }; 331 key <AB02> { [ Arabic_tah, VoidSymbol ] }; 332 key <AB03> { [ Arabic_thal, Arabic_hamzaonyeh ] }; 333 key <AB04> { [ Arabic_dal, Arabic_hamza ] }; 334 key <AB05> { [ Arabic_zain, Arabic_hamzaonalef ] }; 335 key <AB06> { [ Arabic_ra, Arabic_hamzaunderalef ] }; 336 key <AB07> { [ Arabic_waw, Arabic_hamzaonwaw ] }; 337 key <AB08> { [ Arabic_comma, greater ] }; 338 key <AB09> { [ period, less ] }; 339 key <AB10> { [ slash, Arabic_question_mark ] }; 340 }; 341 342 // EXTRAS: 343 344 partial alphanumeric_keys 345 xkb_symbols "sun_type6" { 346 include "sun_vndr/ara(sun_type6)" 347 }; 348 349 partial alphanumeric_keys 350 xkb_symbols "basic_ext" { 351 352 name[Group1]= "Arabic (Arabic numerals, extensions in the 4th level)"; 353 354 key.type[Group1]="FOUR_LEVEL"; 355 356 key <TLDE> { [ Arabic_thal, Arabic_shadda, Arabic_percent, Arabic_ddal ]}; // 357 key <AE01> { [ 1, exclam, Arabic_1, Farsi_1 ]}; // 1 ! 358 key <AE02> { [ 2, at, Arabic_2, Farsi_2 ]}; // 2 @ 359 key <AE03> { [ 3, numbersign, Arabic_3, Farsi_3 ]}; // 3 # 360 key <AE04> { [ 4, dollar, Arabic_4, Farsi_4 ]}; // 4 $ 361 key <AE05> { [ 5, percent, Arabic_5, Farsi_5 ]}; // 5 % 362 key <AE06> { [ 6, Farsi_yeh, Arabic_6, Farsi_6 ]}; // 6 363 key <AE07> { [ 7, ampersand, Arabic_7, Farsi_7 ]}; // 7 & 364 key <AE08> { [ 8, asterisk, Arabic_8, Farsi_8 ]}; // 8 * 365 key <AE09> { [ 9, parenright, Arabic_9, Farsi_9 ]}; // 9 ) 366 key <AE10> { [ 0, parenleft, Arabic_0, Farsi_0 ]}; // 0 ( 367 key <AE11> { [ minus, underscore, endash, U2011 ]}; // - _ Non-Breaking-Hyphen 368 key <AE12> { [ equal, plus, notequal, U2248 ]}; // = + 369 370 key <AD01> { [ Arabic_dad, Arabic_fatha, U0689, U2066 ]}; // LEFTTORIGHT ISOLATE 371 key <AD02> { [ Arabic_sad, Arabic_fathatan, U06D5, U2067 ]}; // RIGHTTOLEFT ISOLATE 372 key <AD03> { [ Arabic_theh, Arabic_damma, U067F, U2068 ]}; // FIRST STRONG ISOLATE 373 key <AD04> { [ Arabic_qaf, Arabic_dammatan, U06A6, U2069 ]}; // POP DIRECTIONAL ISOLATE 374 key <AD05> { [ Arabic_feh, UFEF9, Arabic_veh, U068D ]}; // 375 key <AD06> { [ Arabic_ghain,Arabic_hamzaunderalef, U0685, U202A ]}; // LEFT-TO-RIGHT-EMBEDDING 376 key <AD07> { [ Arabic_ain, Arabic_rreh, Arabic_heh_goal, U202B ]}; // RIGHT-TO-LEFT EMBEDDING 377 key <AD08> { [ Arabic_ha, division, Arabic_heh_doachashmee, U202C ]}; // POP DIRECTIONAL FORMATTING 378 key <AD09> { [ Arabic_khah, multiply, U0681, U0687 ]}; // 379 key <AD10> { [ Arabic_hah, Arabic_semicolon, U0683, U200E ]}; // LEFT-TO-RIGHT MARK 380 key <AD11> { [ Arabic_jeem, less, Arabic_tcheh, U200F ]}; // < RIGHT-TO-LEFT MARK 381 key <AD12> { [ Arabic_dal, greater, U0684, U061C ]}; // > ARABIC LETTER MARK 382 383 key <AC01> { [ Arabic_sheen, Arabic_kasra, U06C6, U06C9 ]}; // 384 key <AC02> { [ Arabic_seen, Arabic_kasratan, U067C, U0680 ]}; // 385 key <AC03> { [ Arabic_yeh, bracketright, U06D0, U06CD ]}; // ] 386 key <AC04> { [ Arabic_beh, bracketleft, Arabic_peh, U067B ]}; // [ 387 key <AC05> { [ Arabic_lam, U0FEF7, U076A, U0658 ]}; // 388 key <AC06> { [ Arabic_alef, Arabic_hamzaonalef, U0671, Arabic_noon_ghunna ]}; // 389 key <AC07> { [ Arabic_teh, Arabic_tatweel, U067D, U067A ]}; // 390 key <AC08> { [ Arabic_noon, Arabic_comma, U066B, U06BB ]}; // 391 key <AC09> { [ Arabic_meem, slash, U06B3, U06B1 ]}; // / 392 key <AC10> { [ Arabic_kaf, colon, Arabic_gaf, Arabic_keheh ]}; // : 393 key <AC11> { [ Arabic_tah, quotedbl, U27E9, U200D ]}; // " ZWJ 394 key <BKSL> { [ backslash, bar, U27E8, U202F ]}; // \ | NNBSP 395 396 key <LSGT> { [ bar, ellipsis, U06C0, U0620 ]}; // | 397 key <AB01> { [Arabic_hamzaonyeh, asciitilde, guillemotright, U203A ]}; // ~ 398 key <AB02> { [ Arabic_hamza, Arabic_sukun, guillemotleft, U2039 ]}; // 399 key <AB03> { [Arabic_hamzaonwaw, braceright, U06C7, U0677 ]}; // } 400 key <AB04> { [ Arabic_ra, braceleft, U0693, U0699 ]}; // { 401 key <AB05> { [ UFEFB, UFEF5, U06AB, U06AD ]}; // 402 key <AB06> {[Arabic_alefmaksura, Arabic_maddaonalef, Arabic_superscript_alef, Arabic_yeh_baree ]}; // 403 key <AB07> { [Arabic_tehmarbuta, apostrophe, Arabic_fullstop, U06AA ]}; // ' 404 key <AB08> { [ Arabic_waw, comma, U066C, U06CB ]}; // , 405 key <AB09> { [ Arabic_zain, period, Arabic_jeh, U0696 ]}; // . 406 key <AB10> { [ Arabic_zah, Arabic_question_mark, Arabic_tteh, U200C ]}; // ZWNJ 407 408 include "level3(ralt_switch)" 409 }; 410 411 // 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. 412 // 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. 413 partial hidden keypad_keys 414 xkb_symbols "basic_ext_digits_KP" { 415 416 key.type[Group1]="FOUR_LEVEL_MIXED_KEYPAD"; 417 418 key <KP7> { [ KP_Home, Arabic_7, 7, Farsi_7 ] }; 419 key <KP8> { [ KP_Up, Arabic_8, 8, Farsi_8 ] }; 420 key <KP9> { [ KP_Prior, Arabic_9, 9, Farsi_9 ] }; 421 422 key <KP4> { [ KP_Left, Arabic_4, 4, Farsi_4 ] }; 423 key <KP5> { [ KP_Begin, Arabic_5, 5, Farsi_5 ] }; 424 key <KP6> { [ KP_Right, Arabic_6, 6, Farsi_6 ] }; 425 426 key <KP1> { [ KP_End, Arabic_1, 1, Farsi_1 ] }; 427 key <KP2> { [ KP_Down, Arabic_2, 2, Farsi_2 ] }; 428 key <KP3> { [ KP_Next, Arabic_3, 3, Farsi_3 ] }; 429 430 key <KP0> { [ KP_Insert, Arabic_0, 0, Farsi_0 ] }; 431 432 include "kpdl(momayyezoss)" 433 }; 434 435 // 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. 436 // The alternative numeral glyphs used in some languages that employ the Arabic script are featured in the fourth layer. 437 partial alphanumeric_keys 438 xkb_symbols "basic_ext_digits" { 439 440 include "ara(basic_ext)" 441 442 name[Group1]= "Arabic (Eastern Arabic numerals, extensions in the 4th level)"; 443 444 key <TLDE> { [Arabic_thal,Arabic_shadda, percent, Arabic_ddal ]}; 445 key <AE01> { [ Arabic_1, exclam, 1, Farsi_1 ] }; 446 key <AE02> { [ Arabic_2, at, 2, Farsi_2 ] }; 447 key <AE03> { [ Arabic_3, numbersign, 3, Farsi_3 ] }; 448 key <AE04> { [ Arabic_4, dollar, 4, Farsi_4 ] }; 449 key <AE05> { [ Arabic_5, Arabic_percent, 5, Farsi_5 ] }; 450 key <AE06> { [ Arabic_6, Farsi_yeh, 6, Farsi_6 ] }; 451 key <AE07> { [ Arabic_7, ampersand, 7, Farsi_7 ] }; 452 key <AE08> { [ Arabic_8, asterisk, 8, Farsi_8 ] }; 453 key <AE09> { [ Arabic_9, parenright, 9, Farsi_9 ] }; 454 key <AE10> { [ Arabic_0, parenleft, 0, Farsi_0 ] }; 455 456 include "ara(basic_ext_digits_KP)" 457 }; 458 459 // In this layout the Ugaritic characters get the places of the Arabic characters with the matching sound values. 460 partial alphanumeric_keys 461 xkb_symbols "uga" { 462 463 name[Group1]= "Ugaritic instead of Arabic"; 464 465 key.type[Group1]="TWO_LEVEL"; 466 467 key <TLDE> { [ U1038F, NoSymbol ]}; // 468 key <AE01> { [ 1, exclam ]}; // 1 ! 469 key <AE02> { [ 2, at ]}; // 2 @ 470 key <AE03> { [ 3, numbersign ]}; // 3 # 471 key <AE04> { [ 4, dollar ]}; // 4 $ 472 key <AE05> { [ 5, percent ]}; // 5 % 473 key <AE06> { [ 6, asciicircum ]}; // 6 ^ 474 key <AE07> { [ 7, ampersand ]}; // 7 & 475 key <AE08> { [ 8, asterisk ]}; // 8 * 476 key <AE09> { [ 9, parenleft ]}; // 9 ( 477 key <AE10> { [ 0, parenright ]}; // 0 ) 478 key <AE11> { [ minus, underscore ]}; // - _ 479 key <AE12> { [ equal, plus ]}; // = + 480 481 key <AD01> { [ U1039D, NoSymbol ]}; // 482 key <AD02> { [ U10395, NoSymbol ]}; // 483 key <AD03> { [ U10398, NoSymbol ]}; // 484 key <AD04> { [ U10396, NoSymbol ]}; // 485 key <AD05> { [ U10394, NoSymbol ]}; // 486 key <AD06> { [ U10399, NoSymbol ]}; // 487 key <AD07> { [ U10393, grave ]}; // ` 488 key <AD08> { [ U10385, division ]}; // 489 key <AD09> { [ U10383, multiply ]}; // 490 key <AD10> { [ U10388, semicolon ]}; // ; 491 key <AD11> { [ U10382, greater ]}; // > 492 key <AD12> { [ U10384, less ]}; // < 493 494 key <AC01> { [ U1038C, U27E8 ]}; // 495 key <AC02> { [ U10392, U27E9 ]}; // 496 key <AC03> { [ U1038A, bracketleft ]}; // [ 497 key <AC04> { [ U10381, bracketright ]}; // ] 498 key <AC05> { [ U1038D, NoSymbol ]}; // 499 key <AC06> { [ U10380, NoSymbol ]}; // 500 key <AC07> { [ U1039A, NoSymbol ]}; // 501 key <AC08> { [ U10390, NoSymbol ]}; // 502 key <AC09> { [ U1038E, slash ]}; // / 503 key <AC10> { [ U1038B, colon ]}; // : 504 key <AC11> { [ U10389, quotedbl ]}; // " 505 key <BKSL> { [backslash, bar ]}; // \ | 506 507 key <LSGT> { [ bar, endash ]}; // | 508 key <AB01> { [ U1039B, guillemotleft ]}; // 509 key <AB02> { [ NoSymbol, guillemotright ]}; // 510 key <AB03> { [ U1039C, braceleft ]}; // { 511 key <AB04> { [ U10397, braceright ]}; // } 512 key <AB05> { [ U1039F, U2039 ]}; // 513 key <AB06> { [ question, U203A ]}; // ? 514 key <AB07> { [ U002BC, apostrophe ]}; // ' 515 key <AB08> { [ U10386, comma ]}; // , 516 key <AB09> { [ U10387, period ]}; // . 517 key <AB10> { [ U10391, periodcentered ]}; // 518 }; 519 520 // An Ergonomic implementation of the basic Arabic keyboard (PC). Brings all letters to the middle 30 keys. 521 xkb_symbols "ergoarabic" { 522 include "ara(basic)" 523 name[Group1]= "Arabic (ErgoArabic)"; 524 525 key <TLDE> { [ grave, asciitilde, NoSymbol, NoSymbol ]}; 526 527 key <AD01> { [ Arabic_dal, Arabic_thal, NoSymbol, U2066 ]}; 528 key <AD02> { [ Arabic_sad, Arabic_dad, NoSymbol, U2067 ]}; 529 key <AD05> { [ Arabic_feh, Arabic_shadda, Arabic_veh, NoSymbol ]}; 530 key <AD06> { [ Arabic_hamza, Arabic_hamzaunderalef, NoSymbol, U202A ]}; 531 key <AD07> { [ Arabic_ain, Arabic_ghain, NoSymbol, U202B ]}; 532 key <AD08> { [ Arabic_ha, division, NoSymbol, U202C ]}; 533 key <AD09> { [ Arabic_waw, Arabic_hamzaonwaw, NoSymbol, NoSymbol ]}; 534 key <AD10> { [ Arabic_tehmarbuta, Arabic_semicolon, NoSymbol, U200E ]}; 535 key <AD11> { [ bracketright, braceright, NoSymbol, U200F ]}; 536 key <AD12> { [ bracketleft, braceleft, NoSymbol, U061C ]}; 537 538 key <AC03> { [ Arabic_yeh, Arabic_fatha, NoSymbol, NoSymbol ]}; 539 key <AC04> { [ Arabic_beh, Arabic_fathatan, Arabic_peh, NoSymbol ]}; 540 key <AC05> { [ Arabic_lam, Arabic_maddaonalef,Arabic_superscript_alef, NoSymbol ]}; 541 key <AC07> { [ Arabic_teh, Arabic_tatweel, NoSymbol, NoSymbol ]}; 542 key <AC08> { [ Arabic_noon, multiply, U066B, NoSymbol ]}; 543 key <AC09> { [ Arabic_meem, comma, NoSymbol, NoSymbol ]}; 544 key <AC10> { [ Arabic_kaf, colon, Arabic_gaf, NoSymbol ]}; 545 key <AC11> { [ apostrophe, quotedbl, U27E9, U200D ]}; 546 key <BKSL> { [ backslash, bar, U27E8, U202F ]}; 547 548 key <AB01> { [ Arabic_hamzaonyeh, NoSymbol, U203A, NoSymbol ]}; 549 key <AB02> { [Arabic_alefmaksura, Arabic_sukun, U2039, NoSymbol ]}; 550 key <AB03> { [ Arabic_tah, Arabic_zah, NoSymbol, NoSymbol ]}; 551 key <AB04> { [ Arabic_ra, Arabic_zain, Arabic_jeh, NoSymbol ]}; 552 key <AB05> { [ Arabic_khah, ellipsis, NoSymbol, NoSymbol ]}; 553 key <AB06> { [ Arabic_hah, guillemotright, NoSymbol, NoSymbol ]}; 554 key <AB07> { [ Arabic_jeem, guillemotleft, Arabic_tcheh, NoSymbol ]}; 555 key <AB08> { [ Arabic_comma, greater, NoSymbol, NoSymbol ]}; 556 key <AB09> { [ period, less, NoSymbol, NoSymbol ]}; 557 key <AB10> { [ slash, Arabic_question_mark, U066D, U200C ]}; 558 }; 559