1// New style XKB layout for some widely used Hungarian keyboard layouts
2//
3// Based on old style 'xkb/symbols/hu"
4//
5// (C) 2002-2004 Soós Péter <sp@osb.hu>
6// (C) 2010 Andras Timar <timar@fsf.hu>
7//
8// Permission is granted to anyone to use, distribute and modify
9// this file in any way, provided that the above copyright notice
10// is left intact and the author of the modification summarizes
11// the changes in this header.
12//
13// This file is distributed without any expressed or implied warranty.
14//
15// Changes:
16//  2004-04-17 - Moved to new style (only Unicode based layouts)
17//             - Added consistent dead key support
18//             - Fixed abovedot
19//             - Added adiaeresis
20//             - Added EuroSign and cent symbol
21//  2010-04-23 - Added doublelowquotemark
22//             - Added rightdoublequotemark
23//             - Added endash
24//  2010-05-13 - Added ellipsis
25
26
27// Default layout
28default  partial
29xkb_symbols "basic" {
30    include "hu(102_qwertz_comma_dead)"
31    name[Group1] = "Hungarian";
32};
33
34// Standard layout
35partial
36xkb_symbols "standard" {
37    include "hu(102_qwertz_comma_dead)"
38    name[Group1] = "Hungarian (standard)";
39};
40
41// Standard layout without dead key support
42partial
43xkb_symbols "nodeadkeys" {
44    include "hu(102_qwertz_comma_nodead)"
45    name[Group1] = "Hungarian (no dead keys)";
46};
47
48// Qwerty layout
49partial
50xkb_symbols "qwerty" {
51    include "hu(101_qwerty_comma_dead)"
52    name[Group1] = "Hungarian (QWERTY)";
53};
54
55// Main layouts
56
57// 101_qwertz_comma_dead
58// 101 key qwertz layout
59// with decimal comma on keypad
60// and with dead key support
61partial
62xkb_symbols "101_qwertz_comma_dead" {
63    name[Group1] = "Hungarian (101/QWERTZ/comma/dead keys)";
64    include "latin"
65    include "hu(def_101)"
66    include "hu(def_qwertz)"
67    include "kpdl(comma)"
68    include "hu(def_dead)"
69    include "hu(def_common)"
70    include "level3(ralt_switch)"
71};
72
73// 101_qwertz_comma_nodead
74// 101 key qwertz layout
75// with decimal comma on keypad
76// and without dead key support
77partial
78xkb_symbols "101_qwertz_comma_nodead" {
79    name[Group1] = "Hungarian (101/QWERTZ/comma/no dead keys)";
80    include "latin"
81    include "hu(def_101)"
82    include "hu(def_qwertz)"
83    include "kpdl(comma)"
84    include "hu(def_nodead)"
85    include "hu(def_common)"
86    include "level3(ralt_switch)"
87};
88
89// 101_qwertz_dot_dead
90// 101 key qwertz layout
91// with decimal dot on keypad
92// and with dead key support
93partial
94xkb_symbols "101_qwertz_dot_dead" {
95    name[Group1] = "Hungarian (101/QWERTZ/dot/dead keys)";
96    include "latin"
97    include "hu(def_101)"
98    include "hu(def_qwertz)"
99    include "hu(def_dot)"
100    include "hu(def_dead)"
101    include "hu(def_common)"
102    include "level3(ralt_switch)"
103};
104
105// 101_qwertz_dot_nodead
106// 101 key qwertz layout
107// with decimal dot on keypad
108// and without dead key support
109partial
110xkb_symbols "101_qwertz_dot_nodead" {
111    name[Group1] = "Hungarian (101/QWERTZ/dot/no dead keys)";
112    include "latin"
113    include "hu(def_101)"
114    include "hu(def_qwertz)"
115    include "hu(def_dot)"
116    include "hu(def_nodead)"
117    include "hu(def_common)"
118    include "level3(ralt_switch)"
119};
120
121// 101_qwerty_comma_dead
122// 101 key qwerty layout
123// with decimal comma on keypad
124// and with dead key support
125partial
126xkb_symbols "101_qwerty_comma_dead" {
127    name[Group1] = "Hungarian (101/QWERTY/comma/dead keys)";
128    include "latin"
129    include "hu(def_101)"
130    include "hu(def_qwerty)"
131    include "kpdl(comma)"
132    include "hu(def_dead)"
133    include "hu(def_common)"
134    include "level3(ralt_switch)"
135};
136
137// 101_qwerty_comma_nodead
138// 101 key qwerty layout
139// with decimal comma on keypad
140// and without dead key support
141partial
142xkb_symbols "101_qwerty_comma_nodead" {
143    name[Group1] = "Hungarian (101/QWERTY/comma/no dead keys)";
144    include "latin"
145    include "hu(def_101)"
146    include "hu(def_qwerty)"
147    include "kpdl(comma)"
148    include "hu(def_nodead)"
149    include "hu(def_common)"
150    include "level3(ralt_switch)"
151};
152
153// 101_qwerty_dot_dead
154// 101 key qwerty layout
155// with decimal dot on keypad
156// and with dead key support
157partial
158xkb_symbols "101_qwerty_dot_dead" {
159    name[Group1] = "Hungarian (101/QWERTY/dot/dead keys)";
160    include "latin"
161    include "hu(def_101)"
162    include "hu(def_qwerty)"
163    include "hu(def_dot)"
164    include "hu(def_dead)"
165    include "hu(def_common)"
166    include "level3(ralt_switch)"
167};
168
169// 101_qwerty_dot_nodead
170// 101 key qwerty layout
171// with decimal dot on keypad
172// and without dead key support
173partial
174xkb_symbols "101_qwerty_dot_nodead" {
175    name[Group1] = "Hungarian (101/QWERTY/dot/no dead keys)";
176    include "latin"
177    include "hu(def_101)"
178    include "hu(def_qwerty)"
179    include "hu(def_dot)"
180    include "hu(def_nodead)"
181    include "hu(def_common)"
182    include "level3(ralt_switch)"
183};
184
185// 102_qwertz_comma_dead
186// 102 key qwertz layout
187// with decimal comma on keypad
188// and with dead key support
189partial
190xkb_symbols "102_qwertz_comma_dead" {
191    name[Group1] = "Hungarian (102/QWERTZ/comma/dead keys)";
192    include "latin"
193    include "hu(def_102)"
194    include "hu(def_qwertz)"
195    include "kpdl(comma)"
196    include "hu(def_dead)"
197    include "hu(def_common)"
198    include "level3(ralt_switch)"
199};
200
201// 102_qwertz_comma_nodead
202// 102 key qwertz layout
203// with decimal comma on keypad
204// and without dead key support
205partial
206xkb_symbols "102_qwertz_comma_nodead" {
207    name[Group1] = "Hungarian (102/QWERTZ/comma/no dead keys)";
208    include "latin"
209    include "hu(def_102)"
210    include "hu(def_qwertz)"
211    include "kpdl(comma)"
212    include "hu(def_nodead)"
213    include "hu(def_common)"
214    include "level3(ralt_switch)"
215};
216
217// 102_qwertz_dot_dead
218// 102 key qwertz layout
219// with decimal dot on keypad
220// and with dead key support
221partial
222xkb_symbols "102_qwertz_dot_dead" {
223    name[Group1] = "Hungarian (102/QWERTZ/dot/dead keys)";
224    include "latin"
225    include "hu(def_102)"
226    include "hu(def_qwertz)"
227    include "hu(def_dot)"
228    include "hu(def_dead)"
229    include "hu(def_common)"
230    include "level3(ralt_switch)"
231};
232
233// 102_qwertz_dot_nodead
234// 102 key qwertz layout
235// with decimal dot on keypad
236// and without dead key support
237partial
238xkb_symbols "102_qwertz_dot_nodead" {
239    name[Group1] = "Hungarian (102/QWERTZ/dot/no dead keys)";
240    include "latin"
241    include "hu(def_102)"
242    include "hu(def_qwertz)"
243    include "hu(def_dot)"
244    include "hu(def_nodead)"
245    include "hu(def_common)"
246    include "level3(ralt_switch)"
247};
248
249// 102_qwerty_comma_dead
250// 102 key qwerty layout
251// with decimal comma on keypad
252// and with dead key support
253partial
254xkb_symbols "102_qwerty_comma_dead" {
255    name[Group1] = "Hungarian (102/QWERTY/comma/dead keys)";
256    include "latin"
257    include "hu(def_102)"
258    include "hu(def_qwerty)"
259    include "kpdl(comma)"
260    include "hu(def_dead)"
261    include "hu(def_common)"
262    include "level3(ralt_switch)"
263};
264
265// 102_qwerty_comma_nodead
266// 102 key qwerty layout
267// with decimal comma on keypad
268// and without dead key support
269partial
270xkb_symbols "102_qwerty_comma_nodead" {
271    name[Group1] = "Hungarian (102/QWERTY/comma/no dead keys)";
272    include "latin"
273    include "hu(def_102)"
274    include "hu(def_qwerty)"
275    include "kpdl(comma)"
276    include "hu(def_nodead)"
277    include "hu(def_common)"
278    include "level3(ralt_switch)"
279};
280
281// 102_qwerty_dot_dead
282// 102 key qwerty layout
283// with decimal dot on keypad
284// and with dead key support
285partial
286xkb_symbols "102_qwerty_dot_dead" {
287    name[Group1] = "Hungarian (102/QWERTY/dot/dead keys)";
288    include "latin"
289    include "hu(def_102)"
290    include "hu(def_qwerty)"
291    include "hu(def_dot)"
292    include "hu(def_dead)"
293    include "hu(def_common)"
294    include "level3(ralt_switch)"
295};
296
297// 102_qwerty_dot_nodead
298// 102 key qwerty layout
299// with decimal dot on keypad
300// and without dead key support
301partial
302xkb_symbols "102_qwerty_dot_nodead" {
303    name[Group1] = "Hungarian (102/QWERTY/dot/no dead keys)";
304    include "latin"
305    include "hu(def_102)"
306    include "hu(def_qwerty)"
307    include "hu(def_dot)"
308    include "hu(def_nodead)"
309    include "hu(def_common)"
310    include "level3(ralt_switch)"
311};
312
313// Partial layouts
314
315// def_102:
316// The standard Hungarian 102 key layout
317hidden partial alphanumeric_keys
318xkb_symbols "def_102" {
319    key <TLDE>  { [            0,      section,           notsign                  ] };
320    key <LSGT>  { [       iacute,       Iacute,              less,         greater ] };
321
322};
323
324// def_101:
325// An alternative layout for 101 key keyboards
326hidden partial alphanumeric_keys
327xkb_symbols "def_101" {
328    key <TLDE>  { [       iacute,       Iacute,                 0,         section ] };
329    key <LSGT>  { [         less,      greater                                     ] };
330};
331
332// def_qwertz:
333// The standard Hungaryan qwertz layout
334hidden partial alphanumeric_keys
335xkb_symbols "def_qwertz" {
336    key <AD06>  { [            z,            Z,           endash                   ] };
337    key <AB01>  { [            y,            Y,           greater                  ] };
338};
339
340
341// def_qwerty:
342// The qwerty layout for people who familiar with the standard US layout
343hidden partial alphanumeric_keys
344xkb_symbols "def_qwerty" {
345    key <AD06>  { [            y,            Y,           endash                   ] };
346    key <AB01>  { [            z,            Z,           greater                  ] };
347};
348
349// def_dot:
350// The Hungarian standard is the comma on the keypad not decimal dot,
351// but programmers hate it
352hidden partial keypad_keys
353xkb_symbols "def_dot" {
354    key <KPDL>  { [    KP_Delete,   KP_Decimal                                     ] };
355};
356
357
358// def_dead:
359// Dead keys support part
360hidden partial alphanumeric_keys
361xkb_symbols "def_dead" {
362    key <AE01>  { [            1,   apostrophe,        asciitilde,      dead_tilde ] };
363    key <AE02>  { [            2,     quotedbl,        dead_caron,           caron ] };
364    key <AE03>  { [            3,         plus,       asciicircum, dead_circumflex ] };
365    key <AE04>  { [            4,       exclam,        dead_breve,           breve ] };
366    key <AE05>  { [            5,      percent,    dead_abovering,          degree ] };
367    key <AE06>  { [            6,        slash,       dead_ogonek,          ogonek ] };
368    key <AE07>  { [            7,        equal,             grave,      dead_grave ] };
369    key <AE08>  { [            8,    parenleft,     dead_abovedot,        abovedot ] };
370    key <AE09>  { [            9,   parenright,        dead_acute,           acute ] };
371    key <AE10>  { [   odiaeresis,   Odiaeresis,  dead_doubleacute,     doubleacute ] };
372    key <AE11>  { [   udiaeresis,   Udiaeresis,    dead_diaeresis,       diaeresis ] };
373    key <AE12>  { [       oacute,       Oacute,      dead_cedilla,         cedilla ] };
374};
375
376// def_nodead:
377// Without dead keys support
378hidden partial alphanumeric_keys
379xkb_symbols "def_nodead" {
380    key <AE01>  { [            1,   apostrophe,        asciitilde                  ] };
381    key <AE02>  { [            2,     quotedbl,             caron                  ] };
382    key <AE03>  { [            3,         plus,       asciicircum                  ] };
383    key <AE04>  { [            4,       exclam,             breve                  ] };
384    key <AE05>  { [            5,      percent,            degree                  ] };
385    key <AE06>  { [            6,        slash,            ogonek                  ] };
386    key <AE07>  { [            7,        equal,             grave                  ] };
387    key <AE08>  { [            8,    parenleft,          abovedot                  ] };
388    key <AE09>  { [            9,   parenright,             acute                  ] };
389    key <AE10>  { [   odiaeresis,   Odiaeresis,       doubleacute                  ] };
390    key <AE11>  { [   udiaeresis,   Udiaeresis,         diaeresis                  ] };
391    key <AE12>  { [       oacute,       Oacute,           cedilla                  ] };
392};
393
394
395// def_common:
396// The common part of all Hungarian layout above
397hidden partial alphanumeric_keys
398xkb_symbols "def_common" {
399    key <AD01>  { [            q,            Q,         backslash                  ] };
400    key <AD02>  { [            w,            W,               bar                  ] };
401    key <AD03>  { [            e,            E,        Adiaeresis                  ] };
402    key <AD07>  { [            u,            U,          EuroSign                  ] };
403    key <AD08>  { [            i,            I,            Iacute,          iacute ] };
404    key <AD09>	{ [            o,            O,        doublelowquotemark          ] };
405    key <AD10>	{ [            p,            P,        rightdoublequotemark        ] };
406    key <AD11>  { [ odoubleacute, Odoubleacute,          division                  ] };
407    key <AD12>  { [       uacute,       Uacute,          multiply                  ] };
408
409    key <AC01>  { [            a,            A,        adiaeresis,      Adiaeresis ] };
410    key <AC02>  { [            s,            S,           dstroke                  ] };
411    key <AC03>  { [            d,            D,           Dstroke                  ] };
412    key <AC04>  { [            f,            F,       bracketleft                  ] };
413    key <AC05>  { [            g,            G,      bracketright                  ] };
414    key <AC07>  { [            j,            J,            iacute,          Iacute ] };
415    key <AC08>  { [            k,            K,           lstroke                  ] };
416    key <AC09>  { [            l,            L,           Lstroke                  ] };
417    key <AC10>  { [       eacute,       Eacute,            dollar,            cent ] };
418    key <AC11>  { [       aacute,       Aacute,            ssharp                  ] };
419
420    key <BKSL>  { [ udoubleacute, Udoubleacute,          currency                  ] };
421
422    key <AB02>  { [            x,            X,        numbersign                  ] };
423    key <AB03>  { [            c,            C,         ampersand                  ] };
424    key <AB04>  { [            v,            V,                at                  ] };
425    key <AB05>  { [            b,            B,         braceleft                  ] };
426    key <AB06>  { [            n,            N,        braceright                  ] };
427    key <AB07>  { [            m,            M,              less                  ] };
428    key <AB08>  { [        comma,     question,         semicolon                  ] };
429    key <AB09>  { [       period,        colon,           greater                  ] };
430    key <AB10>  { [        minus,   underscore,          asterisk                  ] };
431
432};
433
434// EXTRAS:
435
436// New style XKB layout used Old Hungarian keyboard layouts
437//
438//
439//
440// (C) 2013 Andras Tisza
441// (C) 2017 Viktor Kovacs <kovacs.viktor.dev@gmail.com>
442//
443// Permission is granted to anyone to use, distribute and modify
444// this file in any way, provided that the above copyright notice
445// is left intact and the author of the modification summarizes
446// the changes in this header.
447//
448// This file is distributed without any expressed or implied warranty.
449//
450// Changes:
451// 2013 - Planned Old Hungarian layout
452// 2017 - Added Old Hungarian layout
453
454partial alphanumeric_keys
455xkb_symbols "oldhun" {
456name[Group1]="Old Hungarian";
457include "level3(caps_switch_latch)"
458include "level3(ralt_switch)"
459key.type[Group1]="FOUR_LEVEL_SEMIALPHABETIC";
460// In the remarks you can read characters displayed only Unicode point
461    key <AE01> {[U10CFA,         apostrophe,	1,	asciitilde    ]};
462//Old Hungarian one
463
464    key <AE02> {[                 U10CFB,	quotedbl,	2,quotedbl]};
465//Old Hungarian five
466
467    key <AE03> {[                 U10CFC,	plus,	3,	plus]};
468//Old Hungarian ten
469
470    key <AE04> {[       U10CFD,	exclam,	4,	exclam]};
471//Old Hungarian fifty
472
473    key <AE05> {[       U10CFE,	percent,	5,	percent]};
474//Old Hungarian hundred
475
476    key <AE06> {[       U10CFF,	slash, 6,   slash]};
477//Old Hungarian thousand
478
479    key <AE07> {[U10CC6,	U10C86,	7,	equal]};
480//Old Hungarian cs, Cs
481
482    key <AE08> {[ U10CDA,	U10C9A,	8,	parenleft]};
483//Old Hungarian ny, Ny
484
485    key <AE09> {[U10CE8,	U10CA8,	9,	parenright]};
486//Old Hungarian ty, Ty
487
488    key <AE10> {[     U10CDE,     U10C9E,    U10CDD,       U10C9D          ]};
489//Old Hungarian Rudimenta oe, Oe, Nikolsburg oe, Oe
490
491    key <AE11> {[U10CED,         U10CAD		]};
492//Old Hungarian ue , Ue
493
494    key <AE12> {[U10CDC,         U10C9C		 ]};
495//Old Hungarian oo, OO
496
497    key <AD01> {[U10CCE,         U10C8E,	backslash	    ]};
498//Old-Hungarian gy, Gy
499
500    key <AD02> {[U10CF0,         U10CB0		     ]};
501//Old Hungarian zs, Zs
502
503    key <AD03> {[U10CC9,         U10C89,       U10CCA,         U10C8A ]};
504 //Old Hungarian e, E, close e, close E
505
506    key <AD04> {[U10CE2,         U10CA2,       U10CE3,         U10CA3 ]};
507//Old Hungarian r, R, short r, short R
508
509    key <AD05> {[     U10CE6,         U10CA6,       U10CF1,         U10CB1 ]};
510//Old Hungarian t, T, ent-sharped sign,Ent-sharped sign
511
512    key <AD06> {[U10CEF,         U10CAF		 ]};
513//Old Hungarian z, Z
514
515    key <AD07> {[U10CEA,         U10CAA,       U10CF2,         U10CB2 ]};
516//Old Hungarian u, U,  Old Hungarian us, Us
517
518    key <AD08> {[U10CD0,         U10C90		        ]};
519//Old Hungarian i, I
520
521    key <AD09> {[U10CDB,         U10C9B		                                 ]};
522//Old Hungarian o, O
523
524    key <AD10> {[U10CE0,         U10CA0		        ]};
525//Old Hungarian p, P
526
527    key <AD11> {[U10CDF,         U10C9F		]};
528//Old Hungarian oee, Oee
529
530    key <AD12> {[     U10CEB,         U10CAB,        U10CD5,         U10C95]};
531//Old Hungarian uu,Uu,unk,Unk
532
533    key <AC01> {[ U10CC0  ,       U10C80,       U10CC3,         U10C83 ]};
534//Old Hungarian a,A,amb,Amb
535
536    key <AC02> {[U10CE4,         U10CA4,       U10CE1,         U10CA1 ]};
537//Old Hungarian s,S,emp,Emp
538
539    key <AC03> {[     U10CC7,         U10C87,       U10CE7,         U10CA7 ]};
540//Old Hungarian d,D, ent/ant/int, Ent/Ant/Int
541
542	key <AC04> {[U10CCC,         U10C8C,	U10CE9,         U10CA9]};
543//Old Hungarian f,F ech, Ech
544
545    key <AC05> {[     U10CCD,         U10C8D,	bracketleft	 ]};
546//Old Hungarian g, G
547
548    key <AC06> {[     U10CCF,         U10C8F,       bracketright	        ]};
549//Old Hungarian h, H
550
551
552    key <AC07> {[      U10CD2,         U10C92,       backslash         ]};
553//Old Hungarian j, J
554
555    key <AC08> {[U10CD3,         U10C93,       U10CD4,         U10C94 ]};
556//Old Hungarian open k, open K, close k, close K
557
558    key <AC09> {[U10CD6,         U10C96		]};
559//Old Hungarian l, L
560
561    key <AC10> {[U10CCB,         U10C8B		]};
562//Old Hungarian ee, EE
563
564    key <AC11> {[U10CC1,         U10C81 ,	U10CC8,	U10C88]};
565//Old Hungarian aa, AA, and And
566
567
568    key <BKSL> {[U10CEC,         U10CAC		]};
569//Old Hungarian ue, Ue
570
571    key <AB01> {[ U10CD7,         U10C97,	greater 	 ]};
572//Old Hungarian ly, Ly
573
574    key <AB02> {[ U10CE5,         U10CA5,	numbersign 	]};
575//Old Hungarian sz, Sz
576
577    key <AB03> {[     U10CC4,         U10C84,       U10CC5,         U10C85 ]};
578//Old Hungarian c,C, enc, Enc
579
580    key <AB04> {[U10CEE,         U10CAE,	at	]};
581//Old Hungarian v,V
582
583    key <AB05> {[U10CC2,         U10C82,	braceleft	       ]};
584//Old Hungarian b, B
585
586    key <AB06> { [       U10CD9,         U10C99  ,	braceright	     ]};
587//Old Hungarian n, N
588
589    key <AB07> {[     U10CD8,         U10C98 ,	less	]};
590//Old Hungarian m, M
591
592    key <AB08> {[U2E41,     U2E2E,         U204F   	               ]};
593//reserved question mark,reserved semicolon, reserved comma
594
595    key <AB09> {[period,        colon, 	greater	                    ]};
596
597    key <AB10> {[minus,   underscore,          asterisk	   ]};
598
599	key <LSGT> {[U10CD1,         U10C91,	less	]};
600//Old Hungarian ii,II
601
602	key <TLDE> {[	section,	U200F,	0,	U200E]};
603//Right to left mark, left to right mark
604
605	    };
606