level3 revision 0412cded
1154daed1Smrg// these variants assign various XKB keycodes to ISO_Level3_Shift so that
2154daed1Smrg// the third shift level can be reached
3154daed1Smrg//
4154daed1Smrg
50412cdedSmrg// Ensure a mapping to a real modifier for LevelThree
60412cdedSmrgpartial modifier_keys
70412cdedSmrgxkb_symbols "modifier_mapping" {
80412cdedSmrg  key.type[Group1] = "ONE_LEVEL";
90412cdedSmrg
100412cdedSmrg  replace key <LVL3> {
110412cdedSmrg    symbols[Group1] = [ ISO_Level3_Shift ]
120412cdedSmrg  };
130412cdedSmrg  modifier_map Mod5 { <LVL3> };
140412cdedSmrg};
150412cdedSmrg
16154daed1Smrg// the default behavior is for the right Alt key (AltGr) to generate the
17154daed1Smrg// third engraved symbol
18154daed1Smrgdefault partial modifier_keys
19154daed1Smrgxkb_symbols "ralt_switch" {
20154daed1Smrg  key <RALT> {
21154daed1Smrg    type[Group1]="ONE_LEVEL",
22154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
23154daed1Smrg    };
240412cdedSmrg  include "level3(modifier_mapping)"
25154daed1Smrg};
26154daed1Smrg
27154daed1Smrg// Right Alt key never chooses 3rd level.
28154daed1Smrg// This option attempts to undo the effect of a layout's
29154daed1Smrg// including ralt_switch.  You may also want to select another
30154daed1Smrg// level3 option that maps the level3 shift to some other key.
31154daed1Smrgpartial modifier_keys
32154daed1Smrgxkb_symbols "ralt_alt" {
33154daed1Smrg  key <RALT> { 
34154daed1Smrg    type[Group1]="TWO_LEVEL",
35154daed1Smrg    type[Group2]="TWO_LEVEL",
36154daed1Smrg    type[Group3]="TWO_LEVEL",
37154daed1Smrg    type[Group4]="TWO_LEVEL",
38154daed1Smrg    symbols[Group1] = [ Alt_R, Meta_R ], 
39154daed1Smrg    symbols[Group2] = [ Alt_R, Meta_R ], 
40154daed1Smrg    symbols[Group3] = [ Alt_R, Meta_R ], 
41154daed1Smrg    symbols[Group4] = [ Alt_R, Meta_R ]
42154daed1Smrg    };
43154daed1Smrg  modifier_map Mod1    { <RALT> };
44154daed1Smrg};
45154daed1Smrg
46154daed1Smrgpartial modifier_keys
47154daed1Smrgxkb_symbols "ralt_switch_multikey" {
48154daed1Smrg  key <RALT> {
49154daed1Smrg    type[Group1]="TWO_LEVEL",
50154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift, Multi_key ]
51154daed1Smrg    };
520412cdedSmrg  include "level3(modifier_mapping)"
53154daed1Smrg};
54154daed1Smrg
55154daed1Smrg// special case or right Alt switch - for use with grp:alts_toggle
56154daed1Smrg//
57154daed1Smrgpartial hidden modifier_keys
58154daed1Smrgxkb_symbols "ralt_switch_for_alts_toggle" {
59154daed1Smrg virtual_modifiers LAlt, AlGr;
60154daed1Smrg  key <LALT> {
61154daed1Smrg    type[Group1]="PC_RALT_LEVEL2",
62154daed1Smrg    symbols[Group1] = [ Alt_L,  ISO_Prev_Group,  ISO_Prev_Group ],
63154daed1Smrg    virtualMods= LAlt
64154daed1Smrg  };
65154daed1Smrg  key <RALT> {
66154daed1Smrg    type[Group1]="PC_ALT_LEVEL2",
67154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ],
68154daed1Smrg    virtualMods= AltGr
69154daed1Smrg  };
700412cdedSmrg  include "level3(modifier_mapping)"
71154daed1Smrg};
72154daed1Smrg
73154daed1Smrg// using the level(alt_switch) map, either Alt key temporarily chooses
74154daed1Smrg// the third shift level.  (Mostly be used to imitate Mac OS functionality.)
75154daed1Smrgpartial modifier_keys
76154daed1Smrgxkb_symbols "alt_switch" {
77154daed1Smrg  include "level3(lalt_switch)"
78154daed1Smrg  include "level3(ralt_switch)"
79154daed1Smrg};
80154daed1Smrg
81154daed1Smrgpartial modifier_keys
82154daed1Smrgxkb_symbols "lalt_switch" {
83154daed1Smrg  key <LALT> {
84154daed1Smrg    type[Group1]="ONE_LEVEL",
85154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
86154daed1Smrg    };
870412cdedSmrg  include "level3(modifier_mapping)"
88154daed1Smrg};
89154daed1Smrg
90154daed1Smrg// using the level(switch) map, the right Control key temporarily
91154daed1Smrg// chooses the third shift level (until it is released).
92154daed1Smrgpartial modifier_keys
93154daed1Smrgxkb_symbols "switch" {
94154daed1Smrg  key <RCTL> {
95154daed1Smrg    type[Group1]="ONE_LEVEL",
96154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
97154daed1Smrg    };
980412cdedSmrg  include "level3(modifier_mapping)"
99154daed1Smrg};
100154daed1Smrg
101154daed1Smrg// using the level(menu_switch) map, the Menu key temporarily
102154daed1Smrg// chooses the third shift level (until it is released).
103154daed1Smrgpartial modifier_keys
104154daed1Smrgxkb_symbols "menu_switch" {
105154daed1Smrg  key <MENU> {
106154daed1Smrg    type[Group1]="ONE_LEVEL",
107154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
108154daed1Smrg    };
1090412cdedSmrg  include "level3(modifier_mapping)"
110154daed1Smrg};
111154daed1Smrg
112154daed1Smrg// using the level3(win_switch) map, the either Windows' logo key
113154daed1Smrg// temporarily chooses the third shift level.
114154daed1Smrgpartial modifier_keys
115154daed1Smrgxkb_symbols "win_switch" {
116154daed1Smrg  include "level3(lwin_switch)"
117154daed1Smrg  include "level3(rwin_switch)"
118154daed1Smrg};
119154daed1Smrg
120154daed1Smrg// using the level3(lwin_switch) map, the left Windows' logo key
121154daed1Smrg// temporarily chooses the third shift level.
122154daed1Smrgpartial modifier_keys
123154daed1Smrgxkb_symbols "lwin_switch" {
124154daed1Smrg  key <LWIN> {
125154daed1Smrg    type[Group1]="ONE_LEVEL",
126154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
127154daed1Smrg    };
1280412cdedSmrg  include "level3(modifier_mapping)"
129154daed1Smrg};
130154daed1Smrg
131154daed1Smrg// using the level(rwin_switch) map, the right Windows' logo key
132154daed1Smrg// temporarily chooses the third shift level.  If you use this map,
133154daed1Smrg// you should define your keyboard as pc101 or pc102 instead of pc104
134154daed1Smrg// or pc105.
135154daed1Smrgpartial modifier_keys
136154daed1Smrgxkb_symbols "rwin_switch" {
137154daed1Smrg  key <RWIN> {
138154daed1Smrg    type[Group1]="ONE_LEVEL",
139154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
140154daed1Smrg    };
1410412cdedSmrg  include "level3(modifier_mapping)"
142154daed1Smrg};
143154daed1Smrg
144154daed1Smrg// using the level3(enter_switch) map, the Enter key on the keypad
145154daed1Smrg// temporarily chooses the third shift level.  This is especially
146154daed1Smrg// useful for Mac laptops which miss the right Alt key.
147c067fea9Sghenpartial modifier_keys
148154daed1Smrgxkb_symbols "enter_switch" {
149154daed1Smrg  key <KPEN> {
150154daed1Smrg    type[Group1]="ONE_LEVEL",
151154daed1Smrg    symbols[Group1] = [ ISO_Level3_Shift ]
152154daed1Smrg    };
1530412cdedSmrg  include "level3(modifier_mapping)"
154154daed1Smrg};
155c067fea9Sghen
156c067fea9Sghenpartial modifier_keys
157c067fea9Sghenxkb_symbols "caps_switch" {
158c067fea9Sghen  key <CAPS> {
159c067fea9Sghen    type[Group1]="ONE_LEVEL",
160c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift ]
161c067fea9Sghen  };
1620412cdedSmrg  include "level3(modifier_mapping)"
163c067fea9Sghen};
164c067fea9Sghen
165c067fea9Sghenpartial modifier_keys
166c067fea9Sghenxkb_symbols "bksl_switch" {
167c067fea9Sghen  key <BKSL> {
168c067fea9Sghen    type[Group1]="ONE_LEVEL",
169c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift ]
170c067fea9Sghen  };
1710412cdedSmrg  include "level3(modifier_mapping)"
172c067fea9Sghen};
173c067fea9Sghen
174c067fea9Sghenpartial modifier_keys
175c067fea9Sghenxkb_symbols "lsgt_switch" {
176c067fea9Sghen  key <LSGT> {
177c067fea9Sghen    type[Group1]="ONE_LEVEL",
178c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift ]
179c067fea9Sghen  };
1800412cdedSmrg  include "level3(modifier_mapping)"
181c067fea9Sghen};
182c067fea9Sghen
183c067fea9Sghenpartial modifier_keys
184c067fea9Sghenxkb_symbols "caps_switch_latch" {
185c067fea9Sghen  key <CAPS> {
186c067fea9Sghen    type[Group1]="THREE_LEVEL",
187c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
188c067fea9Sghen  };
1890412cdedSmrg  include "level3(modifier_mapping)"
190c067fea9Sghen};
191c067fea9Sghen
192c067fea9Sghenpartial modifier_keys
193c067fea9Sghenxkb_symbols "bksl_switch_latch" {
194c067fea9Sghen  key <BKSL> {
195c067fea9Sghen    type[Group1]="THREE_LEVEL",
196c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
197c067fea9Sghen  };
1980412cdedSmrg  include "level3(modifier_mapping)"
199c067fea9Sghen};
200c067fea9Sghen
201c067fea9Sghenpartial modifier_keys
202c067fea9Sghenxkb_symbols "lsgt_switch_latch" {
203c067fea9Sghen  key <LSGT> {
204c067fea9Sghen    type[Group1]="THREE_LEVEL",
205c067fea9Sghen    symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
206c067fea9Sghen  };
2070412cdedSmrg  include "level3(modifier_mapping)"
208c067fea9Sghen};
209