1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
partial default xkb_types "default" {
// Definition for a key type used for the czech keymap, for instance.
// Defines style a with four level shift. It is similar to three_level
// type used for iso9995 but it lets the shift key behave "normally".
virtual_modifiers LevelThree;
type "FOUR_LEVEL" {
modifiers = Shift+LevelThree;
map[None] = Level1;
map[Shift] = Level2;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "Alt Base";
level_name[Level4] = "Shift Alt";
};
type "FOUR_LEVEL_ALPHABETIC" {
modifiers = Shift+Lock+LevelThree;
map[None] = Level1;
map[Shift] = Level2;
map[Lock] = Level2;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[Lock+LevelThree] = Level4;
map[Lock+Shift+LevelThree] = Level3;
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "Alt Base";
level_name[Level4] = "Shift Alt";
};
type "FOUR_LEVEL_SEMIALPHABETIC" {
modifiers = Shift+Lock+LevelThree;
map[None] = Level1;
map[Shift] = Level2;
map[Lock] = Level2;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[Lock+LevelThree] = Level3;
map[Lock+Shift+LevelThree] = Level4;
preserve[Lock+LevelThree] = Lock;
preserve[Lock+Shift+LevelThree] = Lock;
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "Alt Base";
level_name[Level4] = "Shift Alt";
};
// Another four level keypad variant
// First two levels are controled by NumLock (with active Shift-ing like
// in KEYPAD). LevelThree overrides this mode, with two additional
// Shift-ed levels
// NumLock state is intentionnaly ignored when LevelThree is active
type "FOUR_LEVEL_MIXED_KEYPAD" {
modifiers = Shift+NumLock+LevelThree;
map[None] = Level1;
map[Shift+NumLock] = Level1;
map[NumLock] = Level2;
map[Shift] = Level2;
map[LevelThree] = Level3;
map[NumLock+LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[Shift+NumLock+LevelThree] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Number";
level_name[Level3] = "Alt Base";
level_name[Level4] = "Shift Alt";
};
// Base level, two Shift-ed LevelThree levels, one Ctrl+Alt command level
type "FOUR_LEVEL_X" {
modifiers = Shift+LevelThree+Control+Alt;
map[None] = Level1;
map[LevelThree] = Level2;
map[Shift+LevelThree] = Level3;
map[Control+Alt] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Alt Base";
level_name[Level3] = "Shift Alt";
level_name[Level4] = "Ctrl+Alt";
};
// Special type for keys used in Serbian Latin Unicode map
// It makes it possible to use all three forms of latin letters
// present in Unicode that are made up of two separate letters
// (forms like LJ, Lj, and lj; NJ, Nj, and nj; etc)
type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
modifiers = Shift+Lock+LevelThree;
map[None] = Level1;
map[Shift] = Level2;
map[Lock] = Level4;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[Lock+LevelThree] = Level3;
map[Lock+Shift+LevelThree] = Level3;
preserve[Lock]= Lock;
preserve[Lock+LevelThree]= Lock;
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "AltGr Base";
level_name[Level4] = "Shift AltGr";
};
// type for e.g. german ssharp which is capitalized SS.
// CHARACTERISTICS:
// It is FOUR_LEVEL with the exception that the fifth level
// is mapped to the Lock modifier.
// If other modifiers are used, the Lock state is ignored.
// DETAILS ABOUT GERMAN:
// The capital form of ssharp (called sharp s) only exists for
// completely capitalized Text, not at the beginning of sentences
// or nouns (nouns have a captial letter at the beginning in german).
// The ssharp key, to the right of the zero key, takes this into
// account and has a questionmark mapped on shift-ssharp since
// normally no capital version is needed.
// When typing with active capsLock, this key type is needed to
// output two capital letters S because this is the only german key
// whose capital letter is not the same as the one typed with shift.
type "FOUR_LEVEL_PLUS_LOCK" {
modifiers = Shift+Lock+LevelThree;
map[None] = Level1;
map[Shift] = Level2;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[Lock] = Level5;
map[Lock+Shift] = Level2;
map[Lock+LevelThree] = Level3;
map[Lock+Shift+LevelThree] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Shift";
level_name[Level3] = "Alt Base";
level_name[Level4] = "Shift Alt";
level_name[Level5] = "Lock";
};
};
// This enables the four level shifting also for the keypad.
partial xkb_types "keypad" {
virtual_modifiers LevelThree;
type "FOUR_LEVEL_KEYPAD" {
modifiers = Shift+NumLock+LevelThree;
map[None] = Level1;
map[Shift] = Level2;
map[NumLock] = Level2;
map[Shift+NumLock] = Level1;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[NumLock+LevelThree] = Level4;
map[Shift+NumLock+LevelThree] = Level3;
level_name[Level1] = "Base";
level_name[Level2] = "Number";
level_name[Level3] = "Alt Base";
level_name[Level4] = "Alt Number";
};
};
|