layout.mobile-intl.h - svkbd - simple virtual keyboard | |
git clone git://git.suckless.org/svkbd | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
layout.mobile-intl.h (19259B) | |
--- | |
1 #define KEYS 57 | |
2 | |
3 static Key keys_en[KEYS] = { | |
4 { "Esc", "", XK_Escape, 1 }, | |
5 { "1", "!", XK_1, 1 }, | |
6 { "2", "@", XK_2, 1 }, | |
7 { "3", "#", XK_3, 1 }, | |
8 { "4", "$", XK_4, 1 }, | |
9 { "5", "%", XK_5, 1 }, | |
10 { "6", "^", XK_6, 1 }, | |
11 { "7", "&", XK_7, 1 }, | |
12 { "8", "*", XK_8, 1 }, | |
13 { "9", "(", XK_9, 1 }, | |
14 { "0", ")", XK_0, 1 }, | |
15 { "-", "_", XK_minus, 1 }, | |
16 | |
17 { 0 }, /* New row */ | |
18 | |
19 { "↹", 0, XK_Tab, 0.75 }, | |
20 { 0, "☺", XK_q, 1 }, | |
21 { 0, 0, XK_w, 1 }, | |
22 { 0, 0, XK_e, 1 }, | |
23 { 0, 0, XK_r, 1 }, | |
24 { 0, 0, XK_t, 1 }, | |
25 { 0, 0, XK_y, 1 }, | |
26 { 0, 0, XK_u, 1 }, | |
27 { 0, 0, XK_i, 1 }, | |
28 { 0, 0, XK_o, 1 }, | |
29 { 0, 0, XK_p, 1 }, | |
30 { "/", "?", XK_slash, .75 }, | |
31 | |
32 { 0 }, /* New row */ | |
33 | |
34 { "^", 0, XK_Control_L, 1 }, | |
35 { 0, 0, XK_a, 1 }, | |
36 { 0, 0, XK_s, 1 }, | |
37 { 0, 0, XK_d, 1 }, | |
38 { 0, 0, XK_f, 1 }, | |
39 { 0, 0, XK_g, 1 }, | |
40 { 0, 0, XK_h, 1 }, | |
41 { 0, 0, XK_j, 1 }, | |
42 { 0, 0, XK_k, 1 }, | |
43 { 0, 0, XK_l, 1 }, | |
44 { ";", ":", XK_colon, 1 }, | |
45 { "'", "\"", XK_apostrophe, 1 }, | |
46 | |
47 { 0 }, /* New row */ | |
48 | |
49 { "⇧", 0, XK_Shift_L, 1.5 }, | |
50 { 0, 0, XK_z, 1 }, | |
51 { 0, 0, XK_x, 1 }, | |
52 { 0, 0, XK_c, 1 }, | |
53 { 0, 0, XK_v, 1 }, | |
54 { 0, 0, XK_b, 1 }, | |
55 { 0, 0, XK_n, 1 }, | |
56 { 0, 0, XK_m, 1 }, | |
57 { ",", "<", XK_comma, 1 }, | |
58 { ".", ">", XK_period, 1 }, | |
59 { "⌫", 0, XK_BackSpace, 1 }, | |
60 | |
61 { 0 }, /* New row */ | |
62 { "↺", 0, XK_Cancel, 1}, | |
63 { "Alt", 0, XK_Alt_L, 1 }, | |
64 { "", 0, XK_space, 4 }, | |
65 { "↓", 0, XK_Down, 1 }, | |
66 { "↑", 0, XK_Up, 1 }, | |
67 { "↲ Enter", 0, XK_Return, 2 }, | |
68 }; | |
69 | |
70 static Key keys_dvorak[KEYS] = { | |
71 { "Esc", "", XK_Escape, 1 }, | |
72 { "1", "!", XK_1, 1 }, | |
73 { "2", "@", XK_2, 1 }, | |
74 { "3", "#", XK_3, 1 }, | |
75 { "4", "$", XK_4, 1 }, | |
76 { "5", "%", XK_5, 1 }, | |
77 { "6", "^", XK_6, 1 }, | |
78 { "7", "&", XK_7, 1 }, | |
79 { "8", "*", XK_8, 1 }, | |
80 { "9", "(", XK_9, 1 }, | |
81 { "0", ")", XK_0, 1 }, | |
82 | |
83 { 0 }, /* New row */ | |
84 | |
85 { "↹", 0, XK_Tab, 0.75 }, | |
86 { ";", ":", XK_colon, 1 }, | |
87 { ",", "<", XK_comma, 1 }, | |
88 { ".", ">", XK_period, 1 }, | |
89 { 0, 0, XK_p, 1 }, | |
90 { 0, 0, XK_y, 1 }, | |
91 { 0, 0, XK_f, 1 }, | |
92 { 0, 0, XK_g, 1 }, | |
93 { 0, 0, XK_c, 1 }, | |
94 { 0, 0, XK_r, 1 }, | |
95 { 0, 0, XK_l, 1 }, | |
96 { "/", "?", XK_slash, .75 }, | |
97 | |
98 { 0 }, /* New row */ | |
99 | |
100 { "^", 0, XK_Control_L, 1 }, | |
101 { 0, 0, XK_a, 1 }, | |
102 { 0, 0, XK_o, 1 }, | |
103 { 0, 0, XK_e, 1 }, | |
104 { 0, 0, XK_u, 1 }, | |
105 { 0, 0, XK_i, 1 }, | |
106 { 0, 0, XK_d, 1 }, | |
107 { 0, 0, XK_h, 1 }, | |
108 { 0, 0, XK_t, 1 }, | |
109 { 0, 0, XK_n, 1 }, | |
110 { 0, 0, XK_s, 1 }, | |
111 { "-", "_", XK_minus, 1 }, | |
112 | |
113 { 0 }, /* New row */ | |
114 | |
115 { "⇧", 0, XK_Shift_L, 1.5 }, | |
116 { "'", "\"", XK_apostrophe, 1 }, | |
117 { 0, 0, XK_q, 1 }, | |
118 { 0, 0, XK_j, 1 }, | |
119 { 0, 0, XK_k, 1 }, | |
120 { 0, 0, XK_x, 1 }, | |
121 { 0, 0, XK_b, 1 }, | |
122 { 0, 0, XK_m, 1 }, | |
123 { 0, 0, XK_w, 1 }, | |
124 { 0, 0, XK_v, 1 }, | |
125 { 0, 0, XK_z, 1 }, | |
126 { "⌫", 0, XK_BackSpace, 1 }, | |
127 | |
128 { 0 }, /* New row */ | |
129 { "↺", 0, XK_Cancel, 1}, | |
130 { "Alt", 0, XK_Alt_L, 1 }, | |
131 { "", 0, XK_space, 4 }, | |
132 { "↓", 0, XK_Down, 1 }, | |
133 { "↑", 0, XK_Up, 1 }, | |
134 { "↲ Enter", 0, XK_Return, 2 }, | |
135 }; | |
136 | |
137 static Key keys_minimal[KEYS] = { | |
138 { 0, "☺", XK_q, 1 }, | |
139 { 0, 0, XK_w, 1 }, | |
140 { 0, 0, XK_e, 1 }, | |
141 { 0, 0, XK_r, 1 }, | |
142 { 0, 0, XK_t, 1 }, | |
143 { 0, 0, XK_y, 1 }, | |
144 { 0, 0, XK_u, 1 }, | |
145 { 0, 0, XK_i, 1 }, | |
146 { 0, 0, XK_o, 1 }, | |
147 { 0, 0, XK_p, 1 }, | |
148 | |
149 { 0 }, /* New row */ | |
150 | |
151 { 0, 0, XK_a, 1 }, | |
152 { 0, 0, XK_s, 1 }, | |
153 { 0, 0, XK_d, 1 }, | |
154 { 0, 0, XK_f, 1 }, | |
155 { 0, 0, XK_g, 1 }, | |
156 { 0, 0, XK_h, 1 }, | |
157 { 0, 0, XK_j, 1 }, | |
158 { 0, 0, XK_k, 1 }, | |
159 { 0, 0, XK_l, 1 }, | |
160 | |
161 { 0 }, /* New row */ | |
162 | |
163 { "⇧", 0, XK_Shift_L, 1.5 }, | |
164 { 0, 0, XK_z, 1 }, | |
165 { 0, 0, XK_x, 1 }, | |
166 { 0, 0, XK_c, 1 }, | |
167 { 0, 0, XK_v, 1 }, | |
168 { 0, 0, XK_b, 1 }, | |
169 { 0, 0, XK_n, 1 }, | |
170 { 0, 0, XK_m, 1 }, | |
171 { "⌫", 0, XK_BackSpace, 1.5 }, | |
172 | |
173 { 0 }, /* New row */ | |
174 | |
175 { "↺", 0, XK_Cancel, 1}, | |
176 { "'", "\"", XK_apostrophe, 1 }, | |
177 { ",", "<", XK_comma, 1 }, | |
178 { "", 0, XK_space, 4 }, | |
179 { ".", ">", XK_period, 1 }, | |
180 { "↲ Enter", 0, XK_Return, 2 }, | |
181 }; | |
182 | |
183 #define OVERLAYS 226 | |
184 static Key overlay[OVERLAYS] = { | |
185 { 0, 0, XK_a }, //Overlay for a | |
186 { "à", 0, XK_agrave }, | |
187 { "á", 0, XK_aacute }, | |
188 { "â", 0, XK_acircumflex }, | |
189 { "ä", 0, XK_adiaeresis }, | |
190 { "ą", 0, XK_aogonek }, | |
191 { "ã", 0, XK_atilde }, | |
192 { "ā", 0, XK_amacron }, | |
193 { "ă", 0, XK_abreve }, | |
194 { "å", 0, XK_aring }, | |
195 { "æ", 0, XK_ae }, | |
196 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
197 { 0, 0, XK_e }, //Overlay for e (first item after boundary defin… | |
198 { "è", 0, XK_egrave }, | |
199 { "é", 0, XK_eacute }, | |
200 { "ê", 0, XK_ecircumflex }, | |
201 { "ë", 0, XK_ediaeresis }, | |
202 { "ę", 0, XK_eogonek }, | |
203 { "ē", 0, XK_emacron }, | |
204 { "ė", 0, XK_eabovedot }, | |
205 { "ě", 0, XK_ecaron }, | |
206 { 0, 0, XK_Cancel }, | |
207 { 0, 0, XK_y }, //New overlay | |
208 { "ỳ", 0, XK_ygrave }, | |
209 { "ý", 0, XK_yacute }, | |
210 { "ŷ", 0, XK_ycircumflex }, | |
211 { "ÿ", 0, XK_ydiaeresis }, | |
212 { 0, 0, XK_Cancel }, | |
213 { 0, 0, XK_u }, //New overlay | |
214 { "ù", 0, XK_ugrave }, | |
215 { "ú", 0, XK_uacute }, | |
216 { "û", 0, XK_ucircumflex }, | |
217 { "ü", 0, XK_udiaeresis }, | |
218 { "ų", 0, XK_uogonek }, | |
219 { "ū", 0, XK_umacron }, | |
220 { "ů", 0, XK_uring}, | |
221 { "ŭ", 0, XK_ubreve}, | |
222 { "ű", 0, XK_udoubleacute }, | |
223 { 0, 0, XK_Cancel }, | |
224 { 0, 0, XK_i }, //New overlay | |
225 { "ì", 0, XK_igrave }, | |
226 { "í", 0, XK_iacute }, | |
227 { "î", 0, XK_icircumflex }, | |
228 { "ï", 0, XK_idiaeresis }, | |
229 { "į", 0, XK_iogonek }, | |
230 { "ī", 0, XK_imacron }, | |
231 { "ı", 0, XK_idotless }, | |
232 { 0, 0, XK_Cancel }, | |
233 { 0, 0, XK_o }, //New overlay | |
234 { "ò", 0, XK_ograve }, | |
235 { "ó", 0, XK_oacute }, | |
236 { "ô", 0, XK_ocircumflex }, | |
237 { "ö", 0, XK_odiaeresis }, | |
238 { "ǫ", 0, XK_ogonek }, | |
239 { "õ", 0, XK_otilde }, | |
240 { "ō", 0, XK_omacron }, | |
241 { "ø", 0, XK_oslash }, | |
242 { "ő", 0, XK_odoubleacute }, | |
243 { "œ", 0, XK_oe }, | |
244 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
245 { 0, 0, XK_d }, //New overlay | |
246 { "ď", 0, XK_dcaron }, | |
247 { "ð", 0, XK_eth }, | |
248 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
249 { 0, 0, XK_c }, //New overlay | |
250 { "ç", 0, XK_ccedilla }, | |
251 { "ĉ", 0, XK_ccircumflex }, | |
252 { "č", 0, XK_ccaron }, | |
253 { "ć", 0, XK_cacute }, | |
254 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
255 { 0, 0, XK_s }, //New overlay | |
256 { "ş", 0, XK_scedilla }, | |
257 { "ŝ", 0, XK_scircumflex }, | |
258 { "š", 0, XK_scaron }, | |
259 { "ś", 0, XK_sacute }, | |
260 { "ß", 0, XK_ssharp }, | |
261 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
262 { 0, 0, XK_z }, //New overlay | |
263 { "ž", 0, XK_zcaron }, | |
264 { "ż", 0, XK_zabovedot }, | |
265 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
266 { 0, 0, XK_n }, //New overlay | |
267 { "ñ", 0, XK_ntilde }, | |
268 { "ń", 0, XK_nacute }, | |
269 { "ň", 0, XK_ncaron }, | |
270 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
271 { 0, 0, XK_t }, //New overlay | |
272 { "ț", 0, XK_tcedilla }, | |
273 { "ť", 0, XK_tcaron }, | |
274 { "þ", 0, XK_thorn }, | |
275 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
276 { 0, 0, XK_g }, //New overlay | |
277 { "ĝ", 0, XK_gcircumflex }, | |
278 { "ğ", 0, XK_gbreve }, | |
279 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
280 { 0, 0, XK_h }, //New overlay | |
281 { "ĥ", 0, XK_hcircumflex }, | |
282 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
283 { 0, 0, XK_j }, //New overlay | |
284 { "ĵ", 0, XK_jcircumflex }, | |
285 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
286 { 0, 0, XK_l }, //New overlay | |
287 { "ł", 0, XK_lstroke }, | |
288 { "ľ", 0, XK_lcaron }, | |
289 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
290 { 0, 0, XK_r }, //New overlay | |
291 { "ř", 0, XK_rcaron }, | |
292 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
293 { 0, 0, XK_Cyrillic_softsign }, //New overlay | |
294 { "ъ", 0, XK_Cyrillic_hardsign }, | |
295 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
296 { 0, 0, XK_Cyrillic_ie }, //New overlay | |
297 { "ё", 0, XK_Cyrillic_io }, | |
298 { "э", 0, XK_Cyrillic_e }, | |
299 { "Є", 0, XK_Ukrainian_ie }, | |
300 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
301 { 0, 0, XK_Cyrillic_i }, //New overlay | |
302 { "і", 0, XK_Ukrainian_i }, | |
303 { "ї", 0, XK_Ukrainian_yi }, | |
304 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
305 { 0, 0, XK_Cyrillic_u }, //New overlay | |
306 { "ў", 0, XK_Byelorussian_shortu }, | |
307 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
308 { 0, 0, XK_Cyrillic_shorti }, //New overlay | |
309 { "ј", 0, XK_Cyrillic_je }, | |
310 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
311 { 0, 0, XK_Cyrillic_el }, //New overlay | |
312 { "љ", 0, XK_Cyrillic_lje }, | |
313 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
314 { 0, 0, XK_Cyrillic_en }, //New overlay | |
315 { "њ", 0, XK_Cyrillic_nje }, | |
316 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
317 { 0, 0, XK_Cyrillic_tse }, //New overlay | |
318 { "џ", 0, XK_Cyrillic_dzhe }, | |
319 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
320 { 0, 0, XK_Cyrillic_che }, //New overlay | |
321 { "ћ", 0, XK_Serbian_tshe }, | |
322 { "ђ", 0, XK_Serbian_dje }, | |
323 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
324 { "🙂", 0, 0x101f642 }, //New overlay -> emoji overlay | |
325 { "😀", 0, 0x101f600 }, | |
326 { "😁", 0, 0x101f601 }, | |
327 { "😂", 0, 0x101f602 }, | |
328 { "😃", 0, 0x101f603 }, | |
329 { "😄", 0, 0x101f604 }, | |
330 { "😅", 0, 0x101f605 }, | |
331 { "😆", 0, 0x101f606 }, | |
332 { "😇", 0, 0x101f607 }, | |
333 { "😈", 0, 0x101f608 }, | |
334 { "😉", 0, 0x101f609 }, | |
335 { "😊", 0, 0x101f60a }, | |
336 { "😋", 0, 0x101f60b }, | |
337 { "😌", 0, 0x101f60c }, | |
338 { "😍", 0, 0x101f60d }, | |
339 { "😎", 0, 0x101f60e }, | |
340 { "😏", 0, 0x101f60f }, | |
341 { "😐", 0, 0x101f610 }, | |
342 { "😒", 0, 0x101f612 }, | |
343 { "😓", 0, 0x101f613 }, | |
344 { "😛", 0, 0x101f61b }, | |
345 { "😮", 0, 0x101f62e }, | |
346 { "😟", 0, 0x101f61f }, | |
347 { "😟", 0, 0x101f620 }, | |
348 { "😢", 0, 0x101f622 }, | |
349 { "😭", 0, 0x101f62d }, | |
350 { "😳", 0, 0x101f633 }, | |
351 { "😴", 0, 0x101f634 }, | |
352 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
353 { "q", 0, XK_q }, //New overlay -> emoji overlay on Q key (for m… | |
354 { "😀", 0, 0x101f600 }, | |
355 { "😁", 0, 0x101f601 }, | |
356 { "😂", 0, 0x101f602 }, | |
357 { "😃", 0, 0x101f603 }, | |
358 { "😄", 0, 0x101f604 }, | |
359 { "😅", 0, 0x101f605 }, | |
360 { "😆", 0, 0x101f606 }, | |
361 { "😇", 0, 0x101f607 }, | |
362 { "😈", 0, 0x101f608 }, | |
363 { "😉", 0, 0x101f609 }, | |
364 { "😊", 0, 0x101f60a }, | |
365 { "😋", 0, 0x101f60b }, | |
366 { "😌", 0, 0x101f60c }, | |
367 { "😍", 0, 0x101f60d }, | |
368 { "😎", 0, 0x101f60e }, | |
369 { "😏", 0, 0x101f60f }, | |
370 { "😐", 0, 0x101f610 }, | |
371 { "😒", 0, 0x101f612 }, | |
372 { "😓", 0, 0x101f613 }, | |
373 { "😛", 0, 0x101f61b }, | |
374 { "😮", 0, 0x101f62e }, | |
375 { "😟", 0, 0x101f61f }, | |
376 { "😟", 0, 0x101f620 }, | |
377 { "😢", 0, 0x101f622 }, | |
378 { "😭", 0, 0x101f62d }, | |
379 { "😳", 0, 0x101f633 }, | |
380 { "😴", 0, 0x101f634 }, | |
381 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
382 { "/?", 0, XK_slash }, //New overlay - punctuation overlay | |
383 { "1", "!", XK_1, 1 }, | |
384 { "2", "@", XK_2, 1 }, | |
385 { "3", "#", XK_3, 1 }, | |
386 { "4", "$", XK_4, 1 }, | |
387 { "5", "%", XK_5, 1 }, | |
388 { "6", "^", XK_6, 1 }, | |
389 { "7", "&", XK_7, 1 }, | |
390 { "8", "*", XK_8, 1 }, | |
391 { "9", "(", XK_9, 1 }, | |
392 { "0", ")", XK_0, 1 }, | |
393 { "'", "\"", XK_apostrophe, 1 }, | |
394 { "`", "~", XK_grave, 1 }, | |
395 { "-", "_", XK_minus, 1 }, | |
396 { "=", "+", XK_plus, 1 }, | |
397 { "[", "{", XK_bracketleft, 1 }, | |
398 { "]", "}", XK_bracketright, 1 }, | |
399 { ",", "<", XK_comma, 1 }, | |
400 { ".", ">", XK_period, 1 }, | |
401 { "/", "?", XK_slash, 1 }, | |
402 { "\\", "|", XK_backslash, 1 }, | |
403 { "¡", 0, XK_exclamdown, 1 }, | |
404 { "?", 0, XK_questiondown, 1 }, | |
405 { "°", 0, XK_degree, 1 }, | |
406 { "£", 0, XK_sterling, 1 }, | |
407 { "€", 0, XK_EuroSign, 1 }, | |
408 { "¥", 0, XK_yen, 1 }, | |
409 { ";", ":", XK_colon, 1 }, | |
410 { 0, 0, XK_Cancel }, /* XK_Cancel signifies overlay boundary */ | |
411 }; | |
412 | |
413 static Key keys_symbols[KEYS] = { | |
414 { "Esc", 0, XK_Escape, 1 }, | |
415 { "F1", 0, XK_F1, 1 }, | |
416 { "F2", 0, XK_F2, 1 }, | |
417 { "F3", 0, XK_F3, 1 }, | |
418 { "F4", 0, XK_F4, 1 }, | |
419 { "F5", 0, XK_F5, 1 }, | |
420 { "F6", 0, XK_F6, 1 }, | |
421 { "F7", 0, XK_F7, 1 }, | |
422 { "F8", 0, XK_F8, 1 }, | |
423 { "F9", 0, XK_F9, 1 }, | |
424 { "F10", 0, XK_F10, 1 }, | |
425 { 0 }, /* New row */ | |
426 | |
427 { "'\"", 0, XK_apostrophe, 1 }, | |
428 { "1", "!", XK_1, 1 }, | |
429 { "2", "@", XK_2, 1 }, | |
430 { "3", "#", XK_3, 1 }, | |
431 { "4", "$", XK_4, 1 }, | |
432 { "5", "%", XK_5, 1 }, | |
433 { "6", "^", XK_6, 1 }, | |
434 { "7", "&", XK_7, 1 }, | |
435 { "8", "*", XK_8, 1 }, | |
436 { "9", "(", XK_9, 1 }, | |
437 { "0", ")", XK_0, 1 }, | |
438 | |
439 { 0 }, /* New row */ | |
440 | |
441 { ".", ">", XK_period, 1 }, | |
442 { ",", "<", XK_comma, 1 }, | |
443 { "`", "~", XK_grave, 1 }, | |
444 { "-", "_", XK_minus, 1 }, | |
445 { "=", "+", XK_plus, 1 }, | |
446 { "\\", "|", XK_backslash, 1 }, | |
447 { ";", ":", XK_colon, 1 }, | |
448 { "/", "?", XK_slash, 1 }, | |
449 { "[", "{", XK_bracketleft, 1 }, | |
450 { "]", "}", XK_bracketright, 1 }, | |
451 { "Del", 0, XK_Delete, 1 }, | |
452 | |
453 { 0 }, /* New row */ | |
454 | |
455 { "abc", 0, XK_Mode_switch, 1 }, | |
456 { "☺", 0, 0x101f642, 1 }, | |
457 { "⇤", 0, XK_Home, 1 }, | |
458 { "←", 0, XK_Left, 1 }, | |
459 { "→", 0, XK_Right, 1 }, | |
460 { "⇥", 0, XK_End, 1 }, | |
461 { "⇊", 0, XK_Next, 1 }, | |
462 { "⇈", 0, XK_Prior, 1 }, | |
463 { "Tab", 0, XK_Tab, 1 }, | |
464 { "⌫Bksp", 0, XK_BackSpace, 2 }, | |
465 | |
466 { 0 }, /* New row */ | |
467 { "↺", 0, XK_Cancel, 1}, | |
468 { "Shift", 0, XK_Shift_L, 2 }, | |
469 { "Ctrl", 0, XK_Control_L, 1 }, | |
470 { "Alt", 0, XK_Alt_L, 1 }, | |
471 { "", 0, XK_space, 2 }, | |
472 { "↓", 0, XK_Down, 1 }, | |
473 { "↑", 0, XK_Up, 1 }, | |
474 { "↲ Enter", 0, XK_Return, 2 }, | |
475 }; | |
476 | |
477 static Key keys_functions[KEYS] = { | |
478 | |
479 { "Esc", 0, XK_Escape, 1 }, | |
480 { "▶", 0, XF86XK_AudioPlay, 1 }, | |
481 { "●", 0, XF86XK_AudioRecord, 1 }, | |
482 { "■", 0, XF86XK_AudioStop, 1 }, | |
483 { "◂◂", 0, XF86XK_AudioPrev, 1 }, | |
484 { "▸▸", 0, XF86XK_AudioNext, 1 }, | |
485 { "♫M", 0, XF86XK_AudioMute, 1 }, | |
486 { "♫-", 0, XF86XK_AudioLowerVolume, 1 }, | |
487 { "♫+", 0, XF86XK_AudioRaiseVolume, 1 }, | |
488 { "☀-", 0, XF86XK_MonBrightnessDown, 1 }, | |
489 { "☀+", 0, XF86XK_MonBrightnessUp, 1 }, | |
490 | |
491 { 0 }, /* New row */ | |
492 | |
493 { "≅", 0, XK_KP_Insert, 1 }, | |
494 { "Del", 0, XK_Delete, 1 }, | |
495 { "⇤", 0, XK_Home, 1 }, | |
496 { "←", 0, XK_Left, 1 }, | |
497 { "→", 0, XK_Right, 1 }, | |
498 { "⇥", 0, XK_End, 1 }, | |
499 { "⇊", 0, XK_Next, 1 }, | |
500 { "⇈", 0, XK_Prior, 1 }, | |
501 { "Tab", 0, XK_Tab, 1 }, | |
502 { "⌫Bksp", 0, XK_BackSpace, 2 }, | |
503 | |
504 { 0 }, /* New row */ | |
505 { "↺", 0, XK_Cancel, 1}, | |
506 { "Shift", 0, XK_Shift_L, 2 }, | |
507 { "Ctrl", 0, XK_Control_L, 1 }, | |
508 { "Alt", 0, XK_Alt_L, 1 }, | |
509 { "", 0, XK_space, 2 }, | |
510 { "↓", 0, XK_Down, 1 }, | |
511 { "↑", 0, XK_Up, 1 }, | |
512 { "↲ Enter", 0, XK_Return, 2 }, | |
513 | |
514 { 0 }, /* Last item (double 0) */ | |
515 { 0 }, /* Last item (double 0) */ | |
516 }; | |
517 | |
518 static Key keys_navigation[KEYS] = { | |
519 { "Esc", 0, XK_Escape, 1 }, | |
520 { "⇤", 0, XK_Home, 1 }, | |
521 { "↑", 0, XK_Up, 1 }, | |
522 { "⇥", 0, XK_End, 1 }, | |
523 { "⇈", 0, XK_Prior, 1 }, | |
524 { 0 }, /* New row */ | |
525 | |
526 { "Shift", 0, XK_Shift_L, 1 }, | |
527 { "←", 0, XK_Left, 1 }, | |
528 { "", 0, XK_space, 1 }, | |
529 { "→", 0, XK_Right, 1 }, | |
530 { "⇊", 0, XK_Next, 1 }, | |
531 | |
532 { 0 }, /* New row */ | |
533 | |
534 { "↺", 0, XK_Cancel, 1}, | |
535 { "⌫Bksp", 0, XK_BackSpace, 1 }, | |
536 { "↓", 0, XK_Down, 1 }, | |
537 { "Tab", 0, XK_Tab, 1 }, | |
538 { "↲ Enter", 0, XK_Return, 1}, | |
539 | |
540 { 0 }, /* Last item (double 0) */ | |
541 { 0 }, /* Last item (double 0) */ | |
542 }; | |
543 | |
544 static Key keys_am[KEYS] = { | |
545 { "՝","՜", XK_Armenian_exclam, 1 }, | |
546 { "ֆ","Ֆ", XK_Armenian_fe, 1 }, | |
547 { "ձ","Ձ", XK_Armenian_dza, 1 }, | |
548 { "֊","—", XK_Armenian_hyphen, 1 }, | |
549 { ",","՟", XK_comma, 1 }, | |
550 { "։","…", XK_Armenian_full_stop, 1 }, | |
551 { "՞","%", XK_Armenian_question, 1 }, | |
552 { "․","և", XK_Armenian_ligature_ew, 1 }, | |
553 { "՛","՚", XK_Armenian_accent, 1 }, | |
554 { ")","(", XK_parenright, 1 }, | |
555 { "օ","Օ", XK_Armenian_o, 1 }, | |
556 { "է","Է", XK_Armenian_e, 1 }, | |
557 { "ղ","Ղ", XK_Armenian_ghat, 1 }, | |
558 { 0 }, /* New row */ | |
559 | |
560 { "ճ", "Ճ", XK_Armenian_tche, 1 }, | |
561 { "փ", "Փ", XK_Armenian_pyur, 1 }, | |
562 { "բ", "Բ", XK_Armenian_ben, 1 }, | |
563 { "ս", "Ս", XK_Armenian_se, 1 }, | |
564 { "մ", "Մ", XK_Armenian_men, 1 }, | |
565 { "ո", "Ո", XK_Armenian_vo, 1 }, | |
566 { "ւ", "Ւ", XK_Armenian_vyun, 1 }, | |
567 { "կ","Կ", XK_Armenian_ken, 1 }, | |
568 { "ը", "Ը", XK_Armenian_at, 1 }, | |
569 { "թ", "Թ", XK_Armenian_to, 1 }, | |
570 { "ծ", "Ծ", XK_Armenian_tsa, 1 }, | |
571 { "ց", "Ց", XK_Armenian_tso, 1 }, | |
572 { 0 }, /* New row */ | |
573 | |
574 { "ջ", "Ջ", XK_Armenian_je, 1 }, | |
575 { "վ", "Վ", XK_Armenian_vev, 1 }, | |
576 { "գ", "Գ", XK_Armenian_gim, 1 }, | |
577 { "ե", "Ե", XK_Armenian_yech, 1 }, | |
578 { "ա", "Ա", XK_Armenian_ayb, 1 }, | |
579 { "ն", "Ն", XK_Armenian_nu, 1 }, | |
580 { "ի", "Ի", XK_Armenian_ini, 1 }, | |
581 { "տ", "Տ", XK_Armenian_tyun, 1 }, | |
582 { "հ", "Հ", XK_Armenian_ho, 1 }, | |
583 { "պ", "Պ", XK_Armenian_pe, 1 }, | |
584 { "ր", "Ր", XK_Armenian_re, 1 }, | |
585 { 0 }, /* New row */ | |
586 | |
587 { "123", 0, XK_Mode_switch, 1 }, | |
588 { "ժ", "Ժ", XK_Armenian_zhe, 1 }, | |
589 { "դ", "Դ", XK_Armenian_da, 1 }, | |
590 { "չ", "Չ", XK_Armenian_cha, 1 }, | |
591 { "յ", "Յ", XK_Armenian_hi, 1 }, | |
592 { "զ", "Զ", XK_Armenian_za, 1 }, | |
593 { "լ", "Լ", XK_Armenian_lyun, 1 }, | |
594 { "ք", "Ք", XK_Armenian_ke, 1 }, | |
595 { "խ", "Խ", XK_Armenian_khe, 1 }, | |
596 { "շ", "Շ", XK_Armenian_sha, 1 }, | |
597 { "ռ", "Ռ", XK_Armenian_ra, 1 }, | |
598 { "⌫Bksp", 0, XK_BackSpace, 2 }, | |
599 | |
600 { 0 }, /* New row */ | |
601 { "↺", 0, XK_Cancel, 1}, | |
602 { "Shift", 0, XK_Shift_L, 2 }, | |
603 { "", 0, XK_space, 2 }, | |
604 { "↲ Enter", 0, XK_Return, 2 }, | |
605 }; | |
606 | |
607 static Key keys_ru[KEYS] = { | |
608 { "Esc", 0, XK_Escape, 1 }, | |
609 { "1", "!", XK_1, 1 }, | |
610 { "2", "@", XK_2, 1 }, | |
611 { "3", "#", XK_3, 1 }, | |
612 { "4", "$", XK_4, 1 }, | |
613 { "5", "%", XK_5, 1 }, | |
614 { "6", "^", XK_6, 1 }, | |
615 { "7", "&", XK_7, 1 }, | |
616 { "8", "*", XK_8, 1 }, | |
617 { "9", "(", XK_9, 1 }, | |
618 { "0", ")", XK_0, 1 }, | |
619 { 0 }, /* New row */ | |
620 | |
621 { "й", 0, XK_Cyrillic_shorti, 1 }, | |
622 { "ц", 0, XK_Cyrillic_tse, 1 }, | |
623 { "у", 0, XK_Cyrillic_u, 1 }, | |
624 { "к", 0, XK_Cyrillic_ka, 1 }, | |
625 { "е", 0, XK_Cyrillic_ie, 1 }, | |
626 { "н", 0, XK_Cyrillic_en, 1 }, | |
627 { "г", 0, XK_Cyrillic_ghe, 1 }, | |
628 { "ш", 0, XK_Cyrillic_sha, 1 }, | |
629 { "щ", 0, XK_Cyrillic_shcha, 1 }, | |
630 { "з", 0, XK_Cyrillic_ze, 1 }, | |
631 { "х", 0, XK_Cyrillic_ha, 1 }, | |
632 | |
633 { 0 }, /* New row */ | |
634 | |
635 { "ф", 0, XK_Cyrillic_ef, 1 }, | |
636 { "ы", 0, XK_Cyrillic_yeru, 1 }, | |
637 { "в", 0, XK_Cyrillic_ve, 1 }, | |
638 { "а", 0, XK_Cyrillic_a, 1 }, | |
639 { "п", 0, XK_Cyrillic_pe, 1 }, | |
640 { "р", 0, XK_Cyrillic_er, 1 }, | |
641 { "о", 0, XK_Cyrillic_o, 1 }, | |
642 { "л", 0, XK_Cyrillic_el, 1 }, | |
643 { "д", 0, XK_Cyrillic_de, 1 }, | |
644 { "ж", 0, XK_Cyrillic_zhe, 1 }, | |
645 { "ю", 0, XK_Cyrillic_yu, 1 }, | |
646 | |
647 { 0 }, /* New row */ | |
648 | |
649 { "123", 0, XK_Mode_switch, 1 }, | |
650 { "я", 0, XK_Cyrillic_ya, 1 }, | |
651 { "ч", 0, XK_Cyrillic_che, 1 }, | |
652 { "с", 0, XK_Cyrillic_es, 1 }, | |
653 { "м", 0, XK_Cyrillic_em, 1 }, | |
654 { "и", 0, XK_Cyrillic_i, 1 }, | |
655 { "т", 0, XK_Cyrillic_te, 1 }, | |
656 { "ь", 0, XK_Cyrillic_softsign, 1 }, | |
657 { "б", 0, XK_Cyrillic_be, 1 }, | |
658 { "⌫Bksp", 0, XK_BackSpace, 2 }, | |
659 | |
660 { 0 }, /* New row */ | |
661 { "↺", 0, XK_Cancel, 1}, | |
662 { "Shift", 0, XK_Shift_L, 2 }, | |
663 { "Ctrl", 0, XK_Control_L, 1 }, | |
664 { "Alt", 0, XK_Alt_L, 1 }, | |
665 { "", 0, XK_space, 2 }, | |
666 { "↓", 0, XK_Down, 1 }, | |
667 { "↑", 0, XK_Up, 1 }, | |
668 { "↲ Enter", 0, XK_Return, 2 }, | |
669 }; | |
670 | |
671 static Key keys_dialer[KEYS] = { | |
672 { "Esc", 0, XK_Escape, 1 }, | |
673 { "1", "!" , XK_1, 1 }, | |
674 { "2", "@", XK_2, 1 }, | |
675 { "3", "#", XK_3, 1 }, | |
676 { "-", "_", XK_minus, 1 }, | |
677 { ",", "<", XK_comma, 1 }, | |
678 { 0 }, /* New row */ | |
679 | |
680 { "Shift", 0, XK_Shift_L, 1 }, | |
681 { "4", "$", XK_4, 1 }, | |
682 { "5", "%", XK_5, 1 }, | |
683 { "6", "^", XK_6, 1 }, | |
684 { "=", "+", XK_equal, 1 }, | |
685 { "/", "?", XK_slash, 1 }, | |
686 { 0 }, /* New row */ | |
687 | |
688 { "abc", 0, XK_Mode_switch, 1 }, | |
689 { "7", "&", XK_7, 1 }, | |
690 { "8", "*", XK_8, 1 }, | |
691 { "9", "(", XK_9, 1 }, | |
692 { "⌫Bksp", 0, XK_BackSpace, 2 }, | |
693 { 0 }, /* New row */ | |
694 | |
695 { "↺", 0, XK_Cancel, 1}, | |
696 { "", 0, XK_space, 1 }, | |
697 { "0", ")", XK_0, 1 }, | |
698 { ".", ">", XK_period, 1 }, | |
699 { "↲ Enter", 0, XK_Return, 2}, | |
700 { 0 }, /* New row */ | |
701 { 0 }, /* Last item (double 0) */ | |
702 }; | |
703 | |
704 #define LAYERS 8 | |
705 static char* layer_names[LAYERS] = { | |
706 "en", | |
707 "symbols", | |
708 "navigation", | |
709 "dialer", | |
710 "minimal", | |
711 "dvorak", | |
712 "am", | |
713 "ru" | |
714 }; | |
715 | |
716 static Key* available_layers[LAYERS] = { | |
717 keys_en, | |
718 keys_symbols, | |
719 keys_navigation, | |
720 keys_dialer, | |
721 keys_minimal, | |
722 keys_dvorak, | |
723 keys_am, | |
724 keys_ru, | |
725 }; | |
726 | |
727 Buttonmod buttonmods[] = { | |
728 { XK_Shift_L, Button2 }, | |
729 { XK_Alt_L, Button3 }, | |
730 }; |