level3 revision 1c606da7
1797b363dSmrg// These partial variants assign ISO_Level3_Shift to various XKB keycodes
2797b363dSmrg// so that the third shift level can be reached.
3154daed1Smrg
4797b363dSmrg// The default behaviour:
5797b363dSmrg// the right Alt key (AltGr) chooses the third symbol engraved on a key.
6797b363dSmrgdefault  partial modifier_keys
7797b363dSmrgxkb_symbols "ralt_switch" {
8797b363dSmrg  key <RALT> {
9797b363dSmrg    type[Group1]="ONE_LEVEL",
10797b363dSmrg    symbols[Group1] = [ ISO_Level3_Shift ]
11797b363dSmrg  };
12797b363dSmrg  include "level3(modifier_mapping)"
13797b363dSmrg};
14797b363dSmrg
15797b363dSmrg// Ensure a mapping to a real modifier for LevelThree.
160412cdedSmrgpartial modifier_keys
170412cdedSmrgxkb_symbols "modifier_mapping" {
180412cdedSmrg  replace key <LVL3> {
19797b363dSmrg    type[Group1] = "ONE_LEVEL",
200412cdedSmrg    symbols[Group1] = [ ISO_Level3_Shift ]
210412cdedSmrg  };
220412cdedSmrg  modifier_map Mod5 { <LVL3> };
230412cdedSmrg};
240412cdedSmrg
25797b363dSmrg// The right Alt key never chooses the third level.
26797b363dSmrg// This option attempts to undo the effect of a layout's inclusion of
27797b363dSmrg// 'ralt_switch'.  You may want to also select another level3 option
28797b363dSmrg// to map the level3 shift to some other key.
29154daed1Smrgpartial modifier_keys
30154daed1Smrgxkb_symbols "ralt_alt" {
31797b363dSmrg  key <RALT> {
32154daed1Smrg    type[Group1]="TWO_LEVEL",
33154daed1Smrg    type[Group2]="TWO_LEVEL",
34154daed1Smrg    type[Group3]="TWO_LEVEL",
35154daed1Smrg    type[Group4]="TWO_LEVEL",
36797b363dSmrg    symbols[Group1] = [ Alt_R, Meta_R ],
37797b363dSmrg    symbols[Group2] = [ Alt_R, Meta_R ],
38797b363dSmrg    symbols[Group3] = [ Alt_R, Meta_R ],
39154daed1Smrg    symbols[Group4] = [ Alt_R, Meta_R ]
40797b363dSmrg  };
41797b363dSmrg  modifier_map Mod1 { <RALT> };
42154daed1Smrg};
43154daed1Smrg
44797b363dSmrg// The right Alt key (while pressed) chooses the third shift level,
45797b363dSmrg// and Compose is mapped to its second level.
46154daed1Smrgpartial modifier_keys
47154daed1Smrgxkb_symbols "ralt_switch_multikey" {
48154daed1Smrg  key <RALT> {
49154daed1Smrg    type[Group1]="TWO_LEVEL",
50154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift, Multi_key ]
51797b363dSmrg  };
520412cdedSmrg  include "level3(modifier_mapping)"
53154daed1Smrg};
54154daed1Smrg
55797b363dSmrg// A special case of the right-Alt switch -- for use with grp:alts_toggle.
5621fe479eSmrghidden partial modifier_keys
57154daed1Smrgxkb_symbols "ralt_switch_for_alts_toggle" {
58797b363dSmrg  virtual_modifiers LAlt, AltGr;
59154daed1Smrg  key <LALT> {
60154daed1Smrg    type[Group1]="PC_RALT_LEVEL2",
61797b363dSmrg    symbols[Group1] = [ Alt_L, ISO_Prev_Group, ISO_Prev_Group ],
62154daed1Smrg    virtualMods= LAlt
63154daed1Smrg  };
64154daed1Smrg  key <RALT> {
65154daed1Smrg    type[Group1]="PC_ALT_LEVEL2",
66154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ],
67154daed1Smrg    virtualMods= AltGr
68154daed1Smrg  };
690412cdedSmrg  include "level3(modifier_mapping)"
70154daed1Smrg};
71154daed1Smrg
72797b363dSmrg// Either Alt key (while pressed) chooses the third shift level.
73797b363dSmrg// (To be used mostly to imitate Mac OS functionality.)
74154daed1Smrgpartial modifier_keys
75154daed1Smrgxkb_symbols "alt_switch" {
76154daed1Smrg  include "level3(lalt_switch)"
77154daed1Smrg  include "level3(ralt_switch)"
78154daed1Smrg};
79154daed1Smrg
80797b363dSmrg// The left Alt key (while pressed) chooses the third shift level.
81154daed1Smrgpartial modifier_keys
82154daed1Smrgxkb_symbols "lalt_switch" {
83154daed1Smrg  key <LALT> {
84154daed1Smrg    type[Group1]="ONE_LEVEL",
85154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
86797b363dSmrg  };
870412cdedSmrg  include "level3(modifier_mapping)"
88154daed1Smrg};
89154daed1Smrg
90797b363dSmrg// The right Ctrl key (while pressed) chooses the third shift level.
91154daed1Smrgpartial modifier_keys
92154daed1Smrgxkb_symbols "switch" {
93154daed1Smrg  key <RCTL> {
94154daed1Smrg    type[Group1]="ONE_LEVEL",
95154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
96797b363dSmrg  };
970412cdedSmrg  include "level3(modifier_mapping)"
98154daed1Smrg};
99154daed1Smrg
100797b363dSmrg// The Menu key (while pressed) chooses the third shift level.
101154daed1Smrgpartial modifier_keys
102154daed1Smrgxkb_symbols "menu_switch" {
103154daed1Smrg  key <MENU> {
104154daed1Smrg    type[Group1]="ONE_LEVEL",
105154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
106797b363dSmrg  };
1070412cdedSmrg  include "level3(modifier_mapping)"
108154daed1Smrg};
109154daed1Smrg
110797b363dSmrg// Either Win key (while pressed) chooses the third shift level.
111154daed1Smrgpartial modifier_keys
112154daed1Smrgxkb_symbols "win_switch" {
113154daed1Smrg  include "level3(lwin_switch)"
114154daed1Smrg  include "level3(rwin_switch)"
115154daed1Smrg};
116154daed1Smrg
117797b363dSmrg// The left Win key (while pressed) chooses the third shift level.
118154daed1Smrgpartial modifier_keys
119154daed1Smrgxkb_symbols "lwin_switch" {
120154daed1Smrg  key <LWIN> {
121154daed1Smrg    type[Group1]="ONE_LEVEL",
122154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
123797b363dSmrg  };
1240412cdedSmrg  include "level3(modifier_mapping)"
125154daed1Smrg};
126154daed1Smrg
127797b363dSmrg// The right Win key (while pressed) chooses the third shift level.
128797b363dSmrg// (When using this map, you should set your keyboard as pc101 or pc102
129797b363dSmrg// instead of pc104 or pc105.)
130154daed1Smrgpartial modifier_keys
131154daed1Smrgxkb_symbols "rwin_switch" {
132154daed1Smrg  key <RWIN> {
133154daed1Smrg    type[Group1]="ONE_LEVEL",
134154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
135797b363dSmrg  };
1360412cdedSmrg  include "level3(modifier_mapping)"
137154daed1Smrg};
138154daed1Smrg
139797b363dSmrg// The Enter key on the kepypad (while pressed) chooses the third shift level.
140797b363dSmrg// (This is especially useful for Mac laptops which miss the right Alt key.)
141c067fea9Sghenpartial modifier_keys
142154daed1Smrgxkb_symbols "enter_switch" {
143154daed1Smrg  key <KPEN> {
144154daed1Smrg    type[Group1]="ONE_LEVEL",
145154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
146797b363dSmrg  };
1470412cdedSmrg  include "level3(modifier_mapping)"
148154daed1Smrg};
149c067fea9Sghen
150797b363dSmrg// The CapsLock key (while pressed) chooses the third shift level.
151c067fea9Sghenpartial modifier_keys
152c067fea9Sghenxkb_symbols "caps_switch" {
153c067fea9Sghen  key <CAPS> {
154c067fea9Sghen    type[Group1]="ONE_LEVEL",
155c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift ]
156c067fea9Sghen  };
1570412cdedSmrg  include "level3(modifier_mapping)"
158c067fea9Sghen};
159c067fea9Sghen
160797b363dSmrg// The Backslash key (while pressed) chooses the third shift level.
161c067fea9Sghenpartial modifier_keys
162c067fea9Sghenxkb_symbols "bksl_switch" {
163c067fea9Sghen  key <BKSL> {
164c067fea9Sghen    type[Group1]="ONE_LEVEL",
165c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift ]
166c067fea9Sghen  };
1670412cdedSmrg  include "level3(modifier_mapping)"
168c067fea9Sghen};
169c067fea9Sghen
170797b363dSmrg// The Less/Greater key (while pressed) chooses the third shift level.
171c067fea9Sghenpartial modifier_keys
172c067fea9Sghenxkb_symbols "lsgt_switch" {
173c067fea9Sghen  key <LSGT> {
174c067fea9Sghen    type[Group1]="ONE_LEVEL",
175c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift ]
176c067fea9Sghen  };
1770412cdedSmrg  include "level3(modifier_mapping)"
178c067fea9Sghen};
179c067fea9Sghen
180797b363dSmrg// The CapsLock key (while pressed) chooses the third shift level,
181797b363dSmrg// and latches when pressed together with another third-level chooser.
182c067fea9Sghenpartial modifier_keys
183c067fea9Sghenxkb_symbols "caps_switch_latch" {
184c067fea9Sghen  key <CAPS> {
185c067fea9Sghen    type[Group1]="THREE_LEVEL",
186c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
187c067fea9Sghen  };
1880412cdedSmrg  include "level3(modifier_mapping)"
189c067fea9Sghen};
190c067fea9Sghen
191797b363dSmrg// The Backslash key (while pressed) chooses the third shift level,
192797b363dSmrg// and latches when pressed together with another third-level chooser.
193c067fea9Sghenpartial modifier_keys
194c067fea9Sghenxkb_symbols "bksl_switch_latch" {
195c067fea9Sghen  key <BKSL> {
196c067fea9Sghen    type[Group1]="THREE_LEVEL",
197c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
198c067fea9Sghen  };
1990412cdedSmrg  include "level3(modifier_mapping)"
200c067fea9Sghen};
201c067fea9Sghen
202797b363dSmrg// The Less/Greater key (while pressed) chooses the third shift level,
203797b363dSmrg// and latches when pressed together with another third-level chooser.
204c067fea9Sghenpartial modifier_keys
205c067fea9Sghenxkb_symbols "lsgt_switch_latch" {
206c067fea9Sghen  key <LSGT> {
207c067fea9Sghen    type[Group1]="THREE_LEVEL",
208c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
209c067fea9Sghen  };
2100412cdedSmrg  include "level3(modifier_mapping)"
211c067fea9Sghen};
2121c606da7Smrg
2131c606da7Smrg// Number key 4 chooses third shift level when pressed in isolation.
2141c606da7Smrgpartial modifier_keys
2151c606da7Smrgxkb_symbols "4_switch_isolated" {
2161c606da7Smrg  override key <AE04> {
2171c606da7Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
2181c606da7Smrg  };
2191c606da7Smrg  include "level3(modifier_mapping)"
2201c606da7Smrg};
2211c606da7Smrg
2221c606da7Smrg// Number key 9 chooses third shift level when pressed in isolation.
2231c606da7Smrgpartial modifier_keys
2241c606da7Smrgxkb_symbols "9_switch_isolated" {
2251c606da7Smrg  override key <AE09> {
2261c606da7Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
2271c606da7Smrg  };
2281c606da7Smrg  include "level3(modifier_mapping)"
2291c606da7Smrg};
230