level3 revision 1.1.1.5 1 1.1 mrg // these variants assign various XKB keycodes to ISO_Level3_Shift so that
2 1.1 mrg // the third shift level can be reached
3 1.1 mrg //
4 1.1 mrg
5 1.1.1.5 mrg // Ensure a mapping to a real modifier for LevelThree
6 1.1.1.5 mrg partial modifier_keys
7 1.1.1.5 mrg xkb_symbols "modifier_mapping" {
8 1.1.1.5 mrg key.type[Group1] = "ONE_LEVEL";
9 1.1.1.5 mrg
10 1.1.1.5 mrg replace key <LVL3> {
11 1.1.1.5 mrg symbols[Group1] = [ ISO_Level3_Shift ]
12 1.1.1.5 mrg };
13 1.1.1.5 mrg modifier_map Mod5 { <LVL3> };
14 1.1.1.5 mrg };
15 1.1.1.5 mrg
16 1.1 mrg // the default behavior is for the right Alt key (AltGr) to generate the
17 1.1 mrg // third engraved symbol
18 1.1 mrg default partial modifier_keys
19 1.1 mrg xkb_symbols "ralt_switch" {
20 1.1 mrg key <RALT> {
21 1.1 mrg type[Group1]="ONE_LEVEL",
22 1.1 mrg symbols[Group1] = [ ISO_Level3_Shift ]
23 1.1 mrg };
24 1.1.1.5 mrg include "level3(modifier_mapping)"
25 1.1 mrg };
26 1.1 mrg
27 1.1 mrg // Right Alt key never chooses 3rd level.
28 1.1 mrg // This option attempts to undo the effect of a layout's
29 1.1 mrg // including ralt_switch. You may also want to select another
30 1.1 mrg // level3 option that maps the level3 shift to some other key.
31 1.1 mrg partial modifier_keys
32 1.1 mrg xkb_symbols "ralt_alt" {
33 1.1 mrg key <RALT> {
34 1.1 mrg type[Group1]="TWO_LEVEL",
35 1.1 mrg type[Group2]="TWO_LEVEL",
36 1.1 mrg type[Group3]="TWO_LEVEL",
37 1.1 mrg type[Group4]="TWO_LEVEL",
38 1.1 mrg symbols[Group1] = [ Alt_R, Meta_R ],
39 1.1 mrg symbols[Group2] = [ Alt_R, Meta_R ],
40 1.1 mrg symbols[Group3] = [ Alt_R, Meta_R ],
41 1.1 mrg symbols[Group4] = [ Alt_R, Meta_R ]
42 1.1 mrg };
43 1.1 mrg modifier_map Mod1 { <RALT> };
44 1.1 mrg };
45 1.1 mrg
46 1.1 mrg partial modifier_keys
47 1.1 mrg xkb_symbols "ralt_switch_multikey" {
48 1.1 mrg key <RALT> {
49 1.1 mrg type[Group1]="TWO_LEVEL",
50 1.1 mrg symbols[Group1] = [ ISO_Level3_Shift, Multi_key ]
51 1.1 mrg };
52 1.1.1.5 mrg include "level3(modifier_mapping)"
53 1.1 mrg };
54 1.1 mrg
55 1.1 mrg // special case or right Alt switch - for use with grp:alts_toggle
56 1.1 mrg //
57 1.1 mrg partial hidden modifier_keys
58 1.1 mrg xkb_symbols "ralt_switch_for_alts_toggle" {
59 1.1 mrg virtual_modifiers LAlt, AlGr;
60 1.1 mrg key <LALT> {
61 1.1 mrg type[Group1]="PC_RALT_LEVEL2",
62 1.1 mrg symbols[Group1] = [ Alt_L, ISO_Prev_Group, ISO_Prev_Group ],
63 1.1 mrg virtualMods= LAlt
64 1.1 mrg };
65 1.1 mrg key <RALT> {
66 1.1 mrg type[Group1]="PC_ALT_LEVEL2",
67 1.1 mrg symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ],
68 1.1 mrg virtualMods= AltGr
69 1.1 mrg };
70 1.1.1.5 mrg include "level3(modifier_mapping)"
71 1.1 mrg };
72 1.1 mrg
73 1.1 mrg // using the level(alt_switch) map, either Alt key temporarily chooses
74 1.1 mrg // the third shift level. (Mostly be used to imitate Mac OS functionality.)
75 1.1 mrg partial modifier_keys
76 1.1 mrg xkb_symbols "alt_switch" {
77 1.1 mrg include "level3(lalt_switch)"
78 1.1 mrg include "level3(ralt_switch)"
79 1.1 mrg };
80 1.1 mrg
81 1.1 mrg partial modifier_keys
82 1.1 mrg xkb_symbols "lalt_switch" {
83 1.1 mrg key <LALT> {
84 1.1 mrg type[Group1]="ONE_LEVEL",
85 1.1 mrg symbols[Group1] = [ ISO_Level3_Shift ]
86 1.1 mrg };
87 1.1.1.5 mrg include "level3(modifier_mapping)"
88 1.1 mrg };
89 1.1 mrg
90 1.1 mrg // using the level(switch) map, the right Control key temporarily
91 1.1 mrg // chooses the third shift level (until it is released).
92 1.1 mrg partial modifier_keys
93 1.1 mrg xkb_symbols "switch" {
94 1.1 mrg key <RCTL> {
95 1.1 mrg type[Group1]="ONE_LEVEL",
96 1.1 mrg symbols[Group1] = [ ISO_Level3_Shift ]
97 1.1 mrg };
98 1.1.1.5 mrg include "level3(modifier_mapping)"
99 1.1 mrg };
100 1.1 mrg
101 1.1 mrg // using the level(menu_switch) map, the Menu key temporarily
102 1.1 mrg // chooses the third shift level (until it is released).
103 1.1 mrg partial modifier_keys
104 1.1 mrg xkb_symbols "menu_switch" {
105 1.1 mrg key <MENU> {
106 1.1 mrg type[Group1]="ONE_LEVEL",
107 1.1 mrg symbols[Group1] = [ ISO_Level3_Shift ]
108 1.1 mrg };
109 1.1.1.5 mrg include "level3(modifier_mapping)"
110 1.1 mrg };
111 1.1 mrg
112 1.1 mrg // using the level3(win_switch) map, the either Windows' logo key
113 1.1 mrg // temporarily chooses the third shift level.
114 1.1 mrg partial modifier_keys
115 1.1 mrg xkb_symbols "win_switch" {
116 1.1 mrg include "level3(lwin_switch)"
117 1.1 mrg include "level3(rwin_switch)"
118 1.1 mrg };
119 1.1 mrg
120 1.1 mrg // using the level3(lwin_switch) map, the left Windows' logo key
121 1.1 mrg // temporarily chooses the third shift level.
122 1.1 mrg partial modifier_keys
123 1.1 mrg xkb_symbols "lwin_switch" {
124 1.1 mrg key <LWIN> {
125 1.1 mrg type[Group1]="ONE_LEVEL",
126 1.1 mrg symbols[Group1] = [ ISO_Level3_Shift ]
127 1.1 mrg };
128 1.1.1.5 mrg include "level3(modifier_mapping)"
129 1.1 mrg };
130 1.1 mrg
131 1.1 mrg // using the level(rwin_switch) map, the right Windows' logo key
132 1.1 mrg // temporarily chooses the third shift level. If you use this map,
133 1.1 mrg // you should define your keyboard as pc101 or pc102 instead of pc104
134 1.1 mrg // or pc105.
135 1.1 mrg partial modifier_keys
136 1.1 mrg xkb_symbols "rwin_switch" {
137 1.1 mrg key <RWIN> {
138 1.1 mrg type[Group1]="ONE_LEVEL",
139 1.1 mrg symbols[Group1] = [ ISO_Level3_Shift ]
140 1.1 mrg };
141 1.1.1.5 mrg include "level3(modifier_mapping)"
142 1.1 mrg };
143 1.1 mrg
144 1.1 mrg // using the level3(enter_switch) map, the Enter key on the keypad
145 1.1 mrg // temporarily chooses the third shift level. This is especially
146 1.1 mrg // useful for Mac laptops which miss the right Alt key.
147 1.1.1.3 ghen partial modifier_keys
148 1.1 mrg xkb_symbols "enter_switch" {
149 1.1 mrg key <KPEN> {
150 1.1 mrg type[Group1]="ONE_LEVEL",
151 1.1 mrg symbols[Group1] = [ ISO_Level3_Shift ]
152 1.1 mrg };
153 1.1.1.5 mrg include "level3(modifier_mapping)"
154 1.1 mrg };
155 1.1.1.3 ghen
156 1.1.1.3 ghen partial modifier_keys
157 1.1.1.3 ghen xkb_symbols "caps_switch" {
158 1.1.1.3 ghen key <CAPS> {
159 1.1.1.3 ghen type[Group1]="ONE_LEVEL",
160 1.1.1.3 ghen symbols[Group1] = [ ISO_Level3_Shift ]
161 1.1.1.3 ghen };
162 1.1.1.5 mrg include "level3(modifier_mapping)"
163 1.1.1.3 ghen };
164 1.1.1.3 ghen
165 1.1.1.3 ghen partial modifier_keys
166 1.1.1.3 ghen xkb_symbols "bksl_switch" {
167 1.1.1.3 ghen key <BKSL> {
168 1.1.1.3 ghen type[Group1]="ONE_LEVEL",
169 1.1.1.3 ghen symbols[Group1] = [ ISO_Level3_Shift ]
170 1.1.1.3 ghen };
171 1.1.1.5 mrg include "level3(modifier_mapping)"
172 1.1.1.3 ghen };
173 1.1.1.3 ghen
174 1.1.1.3 ghen partial modifier_keys
175 1.1.1.3 ghen xkb_symbols "lsgt_switch" {
176 1.1.1.3 ghen key <LSGT> {
177 1.1.1.3 ghen type[Group1]="ONE_LEVEL",
178 1.1.1.3 ghen symbols[Group1] = [ ISO_Level3_Shift ]
179 1.1.1.3 ghen };
180 1.1.1.5 mrg include "level3(modifier_mapping)"
181 1.1.1.3 ghen };
182 1.1.1.3 ghen
183 1.1.1.3 ghen partial modifier_keys
184 1.1.1.3 ghen xkb_symbols "caps_switch_latch" {
185 1.1.1.3 ghen key <CAPS> {
186 1.1.1.3 ghen type[Group1]="THREE_LEVEL",
187 1.1.1.3 ghen symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
188 1.1.1.3 ghen };
189 1.1.1.5 mrg include "level3(modifier_mapping)"
190 1.1.1.3 ghen };
191 1.1.1.3 ghen
192 1.1.1.3 ghen partial modifier_keys
193 1.1.1.3 ghen xkb_symbols "bksl_switch_latch" {
194 1.1.1.3 ghen key <BKSL> {
195 1.1.1.3 ghen type[Group1]="THREE_LEVEL",
196 1.1.1.3 ghen symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
197 1.1.1.3 ghen };
198 1.1.1.5 mrg include "level3(modifier_mapping)"
199 1.1.1.3 ghen };
200 1.1.1.3 ghen
201 1.1.1.3 ghen partial modifier_keys
202 1.1.1.3 ghen xkb_symbols "lsgt_switch_latch" {
203 1.1.1.3 ghen key <LSGT> {
204 1.1.1.3 ghen type[Group1]="THREE_LEVEL",
205 1.1.1.3 ghen symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
206 1.1.1.3 ghen };
207 1.1.1.5 mrg include "level3(modifier_mapping)"
208 1.1.1.3 ghen };
209