ara revision 1.1.1.15 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