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";
110 // type for e.g. german ssharp which is capitalized SS.
112 // It is FOUR_LEVEL with the exception that the fifth level
113 // is mapped to the Lock modifier.
114 // If other modifiers are used, the Lock state is ignored.
115 // DETAILS ABOUT GERMAN:
116 // The capital form of ssharp (called sharp s) only exists for
117 // completely capitalized Text, not at the beginning of sentences
118 // or nouns (nouns have a captial letter at the beginning in german).
119 // The ssharp key, to the right of the zero key, takes this into
120 // account and has a questionmark mapped on shift-ssharp since
121 // normally no capital version is needed.
122 // When typing with active capsLock, this key type is needed to
123 // output two capital letters S because this is the only german key
124 // whose capital letter is not the same as the one typed with shift.
126 type "FOUR_LEVEL_PLUS_LOCK" {
127 modifiers = Shift+Lock+LevelThree;
130 map[LevelThree] = Level3;
131 map[Shift+LevelThree] = Level4;
133 map[Lock+Shift] = Level2;
134 map[Lock+LevelThree] = Level3;
135 map[Lock+Shift+LevelThree] = Level4;
136 level_name[Level1] = "Base";
137 level_name[Level2] = "Shift";
138 level_name[Level3] = "Alt Base";
139 level_name[Level4] = "Shift Alt";
140 level_name[Level5] = "Lock";
144 // This enables the four level shifting also for the keypad.
145 partial xkb_types "keypad" {
146 virtual_modifiers LevelThree;
148 type "FOUR_LEVEL_KEYPAD" {
149 modifiers = Shift+NumLock+LevelThree;
152 map[NumLock] = Level2;
153 map[Shift+NumLock] = Level1;
154 map[LevelThree] = Level3;
155 map[Shift+LevelThree] = Level4;
156 map[NumLock+LevelThree] = Level4;
157 map[Shift+NumLock+LevelThree] = Level3;
158 level_name[Level1] = "Base";
159 level_name[Level2] = "Number";
160 level_name[Level3] = "Alt Base";
161 level_name[Level4] = "Alt Number";
165 // This enables the four level shifting also for the keypad,
166 // but levels 1 and 2, and 3 and 4 are swapped on Mac keypads.
167 partial xkb_types "mac_keypad" {
168 virtual_modifiers LevelThree;
170 type "FOUR_LEVEL_KEYPAD" {
171 modifiers = Shift+NumLock+LevelThree;
174 map[NumLock] = Level1;
175 map[Shift+NumLock] = Level2;
176 map[LevelThree] = Level4;
177 map[Shift+LevelThree] = Level3;
178 map[NumLock+LevelThree] = Level3;
179 map[Shift+NumLock+LevelThree] = Level4;
180 level_name[Level2] = "Base";
181 level_name[Level1] = "Number";
182 level_name[Level4] = "Alt Base";
183 level_name[Level3] = "Alt Number";