xkeyboard-config
283 строки · 11.5 Кб
1// Keyboard layouts for Iran.
2
3// Standard Persian layout, based on ISIRI 9147 (1st Edition),
4// "Layout of Persian Letters and Symbols on Computer Keyboards"
5// by the Institute of Standards and Industrial Research of Iran.
6// (http://www.isiri.org/UserStd/DownloadStd.aspx?id=9147)
7// https://persian-computing.org/archives/ISIRI/ISIRI-9147.pdf
8//
9// The standard is extended with ASCII digits on the fourth level of the top row,
10// and the letter He with Ye above (U+06C0) on the third level of the AC05 key.
11//
12// Original author: Behnam Esfahbod <behnam@esfahbod.info>
13
14default partial alphanumeric_keys
15xkb_symbols "pes" {
16name[Group1]= "Persian";
17
18// Persian and ASCII digits
19key <AE01> { [ Farsi_1, exclam, grave, 1 ] };
20key <AE02> { [ Farsi_2, U066C, at, 2 ] };
21key <AE03> { [ Farsi_3, U066B, numbersign, 3 ] };
22key <AE04> { [ Farsi_4, UFDFC, dollar, 4 ] }; // Rial sign
23key <AE05> { [ Farsi_5, U066A, percent, 5 ] };
24key <AE06> { [ Farsi_6, multiply, asciicircum, 6 ] };
25key <AE07> { [ Farsi_7, Arabic_comma, ampersand, 7 ] };
26key <AE08> { [ Farsi_8, asterisk, enfilledcircbullet, 8 ] };
27key <AE09> { [ Farsi_9, parenright, U200E, 9 ] }; // LRM
28key <AE10> { [ Farsi_0, parenleft, U200F, 0 ] }; // RLM
29
30// Persian letters and symbols
31key <AD01> { [ Arabic_dad, Arabic_sukun, degree ] };
32key <AD02> { [ Arabic_sad, Arabic_dammatan, none ] };
33key <AD03> { [ Arabic_theh, Arabic_kasratan, EuroSign ] };
34key <AD04> { [ Arabic_qaf, Arabic_fathatan, none ] };
35key <AD05> { [ Arabic_feh, Arabic_damma, none ] };
36key <AD06> { [ Arabic_ghain, Arabic_kasra, none ] };
37key <AD07> { [ Arabic_ain, Arabic_fatha, none ] };
38key <AD08> { [ Arabic_heh, Arabic_shadda, U202D ] }; // LRO
39key <AD09> { [ Arabic_khah, bracketright, U202E ] }; // RLO
40key <AD10> { [ Arabic_hah, bracketleft, U202C ] }; // PDF
41key <AD11> { [ Arabic_jeem, braceright, U202A ] }; // LRE
42key <AD12> { [ Arabic_tcheh, braceleft, U202B ] }; // RLE
43
44key <AC01> { [ Arabic_sheen, Arabic_hamzaonwaw, none ] };
45key <AC02> { [ Arabic_seen, Arabic_hamzaonyeh, none ] };
46key <AC03> { [ Farsi_yeh, Arabic_yeh, Arabic_alefmaksura ] };
47key <AC04> { [ Arabic_beh, Arabic_hamzaunderalef, none ] };
48key <AC05> { [ Arabic_lam, Arabic_hamzaonalef, U06C0 ] };
49key <AC06> { [ Arabic_alef, Arabic_maddaonalef, U0671 ] };
50key <AC07> { [ Arabic_teh, Arabic_tehmarbuta, none ] };
51key <AC08> { [ Arabic_noon, guillemotright, UFD3E ] };
52key <AC09> { [ Arabic_meem, guillemotleft, UFD3F ] };
53key <AC10> { [ Arabic_keheh, colon, semicolon ] };
54key <AC11> { [ Arabic_gaf, Arabic_semicolon, quotedbl ] };
55
56key <AB01> { [ Arabic_zah, Arabic_kaf, none ] };
57key <AB02> { [ Arabic_tah, U0653, none ] };
58key <AB03> { [ Arabic_zain, Arabic_jeh, none ] };
59key <AB04> { [ Arabic_ra, Arabic_superscript_alef,U0656 ] };
60key <AB05> { [ Arabic_thal, U200C, U200D ] }; // ZWNJ, ZWJ
61key <AB06> { [ Arabic_dal, Arabic_hamza_above, Arabic_hamza_below ] };
62key <AB07> { [ Arabic_peh, Arabic_hamza, ellipsis ] };
63key <AB08> { [ Arabic_waw, greater, comma ] };
64key <AB09> { [ period, less, apostrophe ] };
65key <AB10> { [ slash, Arabic_question_mark, question ] };
66
67key <TLDE> { [ U200D, division, asciitilde ] }; // ZWJ
68key <AE11> { [ minus, Arabic_tatweel, underscore ] };
69key <AE12> { [ equal, plus, U2212 ] }; // figure dash
70key <BKSL> { [ backslash, bar, U2010 ] }; // hyphen
71
72include "nbsp(zwnj2nb3nnb4)"
73include "level3(ralt_switch)"
74};
75
76partial alphanumeric_keys
77xkb_symbols "pes_keypad" {
78
79include "ir(pes)"
80
81name[Group1]= "Persian (with Persian keypad)";
82
83// Persian digits and Mathematical operators
84key <KPDV> { [ division, XF86_Ungrab ] };
85key <KPMU> { [ multiply, XF86_ClearGrab ] };
86key <KPSU> { [ U2212, XF86_Prev_VMode ] }; // minus sign
87key <KPAD> { [ plus, XF86_Next_VMode ] };
88
89key <KPEN> { [ KP_Enter ] };
90key <KPEQ> { [ equal ] };
91
92key <KP7> { [ KP_Home, Farsi_7 ] };
93key <KP8> { [ KP_Up, Farsi_8 ] };
94key <KP9> { [ KP_Prior, Farsi_9 ] };
95
96key <KP4> { [ KP_Left, Farsi_4 ] };
97key <KP5> { [ KP_Begin, Farsi_5 ] };
98key <KP6> { [ KP_Right, Farsi_6 ] };
99
100key <KP1> { [ KP_End, Farsi_1 ] };
101key <KP2> { [ KP_Down, Farsi_2 ] };
102key <KP3> { [ KP_Next, Farsi_3 ] };
103
104key <KP0> { [ KP_Insert, Farsi_0 ] };
105key <KPDL> { [ KP_Delete, U066B ] }; // Arabic decimal separator
106};
107
108
109// The legacy Windows layout that Iranian users are accustomed to,
110// extended with Farsi digits on the third level of the top row.
111
112partial alphanumeric_keys
113xkb_symbols "winkeys" {
114
115name[Group1]= "Persian (Windows)";
116
117key <TLDE> { [ division, multiply ] };
118key <AE01> { [ 1, exclam, Farsi_1, U200D ] }; // ZWJ
119key <AE02> { [ 2, at, Farsi_2, U200C ] }; // ZWNJ
120key <AE03> { [ 3, numbersign, Farsi_3, U200E ] }; // LRM
121key <AE04> { [ 4, dollar, Farsi_4, U200F ] }; // RLM
122key <AE05> { [ 5, percent, Farsi_5 ] };
123key <AE06> { [ 6, asciicircum, Farsi_6 ] };
124key <AE07> { [ 7, ampersand, Farsi_7 ] };
125key <AE08> { [ 8, asterisk, Farsi_8 ] };
126key <AE09> { [ 9, parenright, Farsi_9 ] };
127key <AE10> { [ 0, parenleft, Farsi_0 ] };
128key <AE11> { [ minus, underscore ] };
129key <AE12> { [ equal, plus ] };
130
131key <AD01> { [ Arabic_dad, Arabic_fathatan ] };
132key <AD02> { [ Arabic_sad, Arabic_dammatan ] };
133key <AD03> { [ Arabic_theh, Arabic_kasratan ] };
134key <AD04> { [ Arabic_qaf, UFDFC ] }; // Rial sign
135key <AD05> { [ Arabic_feh, Arabic_comma ] };
136key <AD06> { [ Arabic_ghain, Arabic_semicolon ] };
137key <AD07> { [ Arabic_ain, comma ] };
138key <AD08> { [ Arabic_heh, bracketright ] };
139key <AD09> { [ Arabic_khah, bracketleft ] };
140key <AD10> { [ Arabic_hah, backslash ] };
141key <AD11> { [ Arabic_jeem, braceright ] };
142key <AD12> { [ Arabic_tcheh, braceleft ] };
143
144key <AC01> { [ Arabic_sheen, Arabic_fatha ] };
145key <AC02> { [ Arabic_seen, Arabic_damma ] };
146key <AC03> { [ Farsi_yeh, Arabic_kasra ] };
147key <AC04> { [ Arabic_beh, Arabic_shadda ] };
148key <AC05> { [ Arabic_lam, U06C0 ] };
149key <AC06> { [ Arabic_alef, Arabic_maddaonalef ] };
150key <AC07> { [ Arabic_teh, Arabic_tatweel ] };
151key <AC08> { [ Arabic_noon, guillemotleft ] };
152key <AC09> { [ Arabic_meem, guillemotright ] };
153key <AC10> { [ Arabic_keheh, colon ] };
154key <AC11> { [ Arabic_gaf, quotedbl ] };
155key <BKSL> { [ Arabic_peh, bar ] };
156
157key <LSGT> { [ Arabic_peh, bar ] };
158key <AB01> { [ Arabic_zah, Arabic_tehmarbuta ] };
159key <AB02> { [ Arabic_tah, Arabic_yeh ] };
160key <AB03> { [ Arabic_zain, Arabic_jeh ] };
161key <AB04> { [ Arabic_ra, Arabic_hamzaonwaw ] };
162key <AB05> { [ Arabic_thal, Arabic_hamzaonalef ] };
163key <AB06> { [ Arabic_dal, Arabic_hamzaunderalef ] };
164key <AB07> { [ Arabic_hamzaonyeh, Arabic_hamza ] };
165key <AB08> { [ Arabic_waw, less ] };
166key <AB09> { [ period, greater ] };
167key <AB10> { [ slash, Arabic_question_mark ] };
168
169include "level3(ralt_switch)"
170};
171
172
173// Symbols definition for South Azerbaijani keyboard layout.
174// 2022 - Alborz Jafari <alborz.jf@gmail.com>
175
176partial alphanumeric_keys
177xkb_symbols "azb"
178{
179include "ir(pes)"
180name[Group1]= "Azerbaijani (Iran)";
181
182// Letters and symbols for South Azerbaijani
183key <AD01> { [ Arabic_dad, U06C7, degree ] }; // ۇ
184key <AD02> { [ Arabic_sad, U06C6, Arabic_dammatan ] }; // ۆ
185key <AC03> { [ Farsi_yeh, U063D, Arabic_alefmaksura ] }; // ؽ
186key <AB01> { [ Arabic_zah, Arabic_sukun, none ] };
187key <AB05> { [ Arabic_thal, Arabic_dammatan, none ] };
188};
189
190
191// Kurdish layouts
192
193partial alphanumeric_keys
194xkb_symbols "ku" {
195include "tr(ku)"
196name[Group1]= "Kurdish (Iran, Latin Q)";
197};
198
199partial alphanumeric_keys
200xkb_symbols "ku_f" {
201include "tr(ku_f)"
202name[Group1]= "Kurdish (Iran, F)";
203};
204
205partial alphanumeric_keys
206xkb_symbols "ku_alt" {
207include "tr(ku_alt)"
208name[Group1]= "Kurdish (Iran, Latin Alt-Q)";
209};
210
211// Kurdish Soranî Bahdînî (Arabic) keyboard layout,
212// based on the Kurdî Soranî Bahdînî keyboard from KurdITGroup
213// which is based on National Iranian Keyboard Standard (ISIRI 2901:1994),
214// with additions.
215//
216// Copyright (C) 2006 Erdal Ronahî, published under the GPL v2
217//
218// Special copyright note: author explicitly permitted to license this
219// layout under MIT/X11 license, for details see
220// https://bugs.freedesktop.org/show_bug.cgi?id=9541
221//
222// Author: Erdal Ronahî <erdal.ronahi@gmail.com>
223//
224// Kurdish Arabic-Latin Layout for Soranî
225
226partial alphanumeric_keys
227xkb_symbols "ku_ara" {
228name[Group1]= "Kurdish (Iran, Arabic-Latin)";
229
230key <TLDE> { [ U200D, division, asciitilde ] }; // ZWJ
231key <AE01> { [ Arabic_1, exclam, 1, grave ] };
232key <AE02> { [ Arabic_2, at, 2, at ] };
233key <AE03> { [ Arabic_3, numbersign, 3, U066B ] };
234key <AE04> { [ Arabic_4, dollar, 4, UFDFC ] }; // Rial sign
235key <AE05> { [ Arabic_5, percent, 5, U066A ] };
236key <AE06> { [ Arabic_6, asciicircum, 6, multiply ] };
237key <AE07> { [ Arabic_7, ampersand, 7, Arabic_comma ] };
238key <AE08> { [ Arabic_8, asterisk, 8, enfilledcircbullet ] };
239key <AE09> { [ Arabic_9, parenright, 9, U200E ] }; // LRM
240key <AE10> { [ Arabic_0, parenleft, 0, U200F ] }; // RLM
241key <AE11> { [ minus, Arabic_tatweel, underscore ] };
242key <AE12> { [ equal, plus, U2212 ] }; // minus sign
243
244key <AD01> { [ Arabic_qaf, X, q, Q ] };
245key <AD02> { [ Arabic_waw, X, w, W ] };
246key <AD03> { [ U06D5, Arabic_heh, e, E ] };
247key <AD04> { [ Arabic_ra, U0695, r, R ] };
248key <AD05> { [ Arabic_teh, Arabic_tah, t, T ] };
249key <AD06> { [ U06CC, U06CE, y, Y ] };
250key <AD07> { [ Arabic_hamzaonyeh, Arabic_hamza, u, U ] };
251key <AD08> { [ Arabic_hah, Arabic_ain, i, I ] };
252key <AD09> { [ U06C6, Arabic_hamzaonwaw, o, O ] };
253key <AD10> { [ U067E, Arabic_theh, p, P ] };
254key <AD11> { [ bracketright,braceright, ucircumflex, Ucircumflex ] };
255key <AD12> { [ bracketleft, braceleft, scedilla, Scedilla ] };
256
257key <AC01> { [ Arabic_alef, Arabic_maddaonalef, a, A ] };
258key <AC02> { [ Arabic_seen, Arabic_sheen, s, S ] };
259key <AC03> { [ Arabic_dal, Arabic_thal, d, D ] };
260key <AC04> { [ Arabic_feh, Arabic_hamzaunderalef, f, F ] };
261key <AC05> { [ U06AF, Arabic_ghain, g, G ] };
262key <AC06> { [ Arabic_heh, U200C, h, H ] }; // ZWNJ
263key <AC07> { [ U0698, Arabic_hamzaonalef, j, J ] };
264key <AC08> { [ U06A9, Arabic_kaf, k, K ] };
265key <AC09> { [ Arabic_lam, U06B5, l, L ] };
266key <AC10> { [ Arabic_semicolon, colon, ecircumflex, Ecircumflex ] };
267key <AC11> { [ apostrophe, quotedbl, icircumflex, Icircumflex ] };
268key <BKSL> { [ backslash, bar, ccedilla, Ccedilla ] };
269
270key <AB01> { [ Arabic_zain, Arabic_dad, z, Z ] };
271key <AB02> { [ Arabic_khah, Arabic_sad, x, X ] };
272key <AB03> { [ Arabic_jeem, U0686, c, C ] };
273key <AB04> { [ U06A4, Arabic_zah, v, V ] };
274key <AB05> { [ Arabic_beh, U0649, b, B ] };
275key <AB06> { [ Arabic_noon, Arabic_tehmarbuta, n, N ] };
276key <AB07> { [ Arabic_meem, Arabic_tatweel, m, M ] };
277key <AB08> { [ Arabic_comma,greater, comma ] };
278key <AB09> { [ period, less, apostrophe ] };
279key <AB10> { [ slash, Arabic_question_mark, question ] };
280
281include "nbsp(zwnj2nb3)"
282include "level3(ralt_switch)"
283};
284