1 // $XFree86: xc/programs/xkbcomp/types/extra,v 1.3 2002/11/26 02:14:02 dawes Exp $
3 partial default xkb_types "default" {
4 // Definition for a key type used for the czech keymap, for instance.
5 // Defines style a with four level shift. It is similar to three_level
6 // type used for iso9995 but it lets the shift key behave "normally".
8 virtual_modifiers LevelThree;
11 modifiers = Shift+LevelThree;
14 map[LevelThree] = Level3;
15 map[Shift+LevelThree] = Level4;
16 level_name[Level1] = "Base";
17 level_name[Level2] = "Shift";
18 level_name[Level3] = "Alt Base";
19 level_name[Level4] = "Shift Alt";
22 type "FOUR_LEVEL_ALPHABETIC" {
23 modifiers = Shift+Lock+LevelThree;
27 map[LevelThree] = Level3;
28 map[Shift+LevelThree] = Level4;
29 map[Lock+LevelThree] = Level4;
30 map[Lock+Shift+LevelThree] = Level3;
31 level_name[Level1] = "Base";
32 level_name[Level2] = "Shift";
33 level_name[Level3] = "Alt Base";
34 level_name[Level4] = "Shift Alt";
37 type "FOUR_LEVEL_SEMIALPHABETIC" {
38 modifiers = Shift+Lock+LevelThree;
42 map[LevelThree] = Level3;
43 map[Shift+LevelThree] = Level4;
44 map[Lock+LevelThree] = Level3;
45 map[Lock+Shift+LevelThree] = Level4;
46 preserve[Lock+LevelThree] = Lock;
47 preserve[Lock+Shift+LevelThree] = Lock;
48 level_name[Level1] = "Base";
49 level_name[Level2] = "Shift";
50 level_name[Level3] = "Alt Base";
51 level_name[Level4] = "Shift Alt";
54 // Another four level keypad variant
55 // First two levels are controled by NumLock (with active Shift-ing like
56 // in KEYPAD). LevelThree overrides this mode, with two additional
58 // NumLock state is intentionnaly ignored when LevelThree is active
59 type "FOUR_LEVEL_MIXED_KEYPAD" {
60 modifiers = Shift+NumLock+LevelThree;
62 map[Shift+NumLock] = Level1;
63 map[NumLock] = Level2;
65 map[LevelThree] = Level3;
66 map[NumLock+LevelThree] = Level3;
67 map[Shift+LevelThree] = Level4;
68 map[Shift+NumLock+LevelThree] = Level4;
69 level_name[Level1] = "Base";
70 level_name[Level2] = "Number";
71 level_name[Level3] = "Alt Base";
72 level_name[Level4] = "Shift Alt";
75 // Base level, two Shift-ed LevelThree levels, one Ctrl+Alt command level
77 modifiers = Shift+LevelThree+Control+Alt;
79 map[LevelThree] = Level2;
80 map[Shift+LevelThree] = Level3;
81 map[Control+Alt] = Level4;
82 level_name[Level1] = "Base";
83 level_name[Level2] = "Alt Base";
84 level_name[Level3] = "Shift Alt";
85 level_name[Level4] = "Ctrl+Alt";
88 // Special type for keys used in Serbian Latin Unicode map
89 // It makes it possible to use all three forms of latin letters
90 // present in Unicode that are made up of two separate letters
91 // (forms like LJ, Lj, and lj; NJ, Nj, and nj; etc)
93 type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
94 modifiers = Shift+Lock+LevelThree;
98 map[LevelThree] = Level3;
99 map[Shift+LevelThree] = Level4;
100 map[Lock+LevelThree] = Level3;
101 map[Lock+Shift+LevelThree] = Level3;
102 preserve[Lock]= Lock;
103 preserve[Lock+LevelThree]= Lock;
104 level_name[Level1] = "Base";
105 level_name[Level2] = "Shift";
106 level_name[Level3] = "AltGr Base";
107 level_name[Level4] = "Shift AltGr";
111 // This enables the four level shifting also for the keypad.
112 partial xkb_types "keypad" {
113 virtual_modifiers LevelThree;
115 type "FOUR_LEVEL_KEYPAD" {
116 modifiers = Shift+NumLock+LevelThree;
119 map[NumLock] = Level2;
120 map[Shift+NumLock] = Level1;
121 map[LevelThree] = Level3;
122 map[Shift+LevelThree] = Level4;
123 map[NumLock+LevelThree] = Level4;
124 map[Shift+NumLock+LevelThree] = Level3;
125 level_name[Level1] = "Base";
126 level_name[Level2] = "Number";
127 level_name[Level3] = "Alt Base";
128 level_name[Level4] = "Alt Number";
132 // This enables the four level shifting also for the keypad,
133 // but levels 1 and 2, and 3 and 4 are swapped on Mac keypads.
134 partial xkb_types "mac_keypad" {
135 virtual_modifiers LevelThree;
137 type "FOUR_LEVEL_KEYPAD" {
138 modifiers = Shift+NumLock+LevelThree;
141 map[NumLock] = Level1;
142 map[Shift+NumLock] = Level2;
143 map[LevelThree] = Level4;
144 map[Shift+LevelThree] = Level3;
145 map[NumLock+LevelThree] = Level3;
146 map[Shift+NumLock+LevelThree] = Level4;
147 level_name[Level2] = "Base";
148 level_name[Level1] = "Number";
149 level_name[Level4] = "Alt Base";
150 level_name[Level3] = "Alt Number";