level5 revision 0412cded
1154daed1Smrg// these variants assign various XKB keycodes to ISO_Level5_Shift so that
2154daed1Smrg// the third shift level can be reached
3154daed1Smrg//
4154daed1Smrg
50412cdedSmrg// Ensure a mapping to a real modifier for LevelFive
60412cdedSmrgpartial modifier_keys
70412cdedSmrgxkb_symbols "modifier_mapping" {
80412cdedSmrg  key.type[Group1] = "ONE_LEVEL";
90412cdedSmrg
100412cdedSmrg  replace key <MDSW> {
110412cdedSmrg    symbols[Group1] = [ ISO_Level5_Shift ]
120412cdedSmrg  };
130412cdedSmrg  modifier_map Mod3 { <MDSW> };
140412cdedSmrg};
150412cdedSmrg
16154daed1Smrg// using the level(switch) map, the right Control key temporarily
17154daed1Smrg// chooses the fifth shift level (until it is released).
18154daed1Smrgpartial modifier_keys
19154daed1Smrgxkb_symbols "rctrl_switch" {
20154daed1Smrg  key <RCTL> {
21154daed1Smrg    type[Group1]="ONE_LEVEL",
225a35480eSmrg    symbols[Group1] = [ ISO_Level5_Shift ]
23154daed1Smrg    };
240412cdedSmrg  include "level5(modifier_mapping)"
25154daed1Smrg};
26c067fea9Sghen
27c067fea9Sghenpartial modifier_keys
28c067fea9Sghenxkb_symbols "lsgt_switch" {
29c067fea9Sghen  key <LSGT> {
30c067fea9Sghen    type[Group1]="ONE_LEVEL",
31c067fea9Sghen    symbols[Group1] = [ ISO_Level5_Shift ]
32c067fea9Sghen    };
330412cdedSmrg  include "level5(modifier_mapping)"
34c067fea9Sghen};
35c067fea9Sghen
36c067fea9Sghenpartial modifier_keys
37c067fea9Sghenxkb_symbols "ralt_switch" {
38c067fea9Sghen  key <RALT> {
39c067fea9Sghen    type[Group1]="ONE_LEVEL",
40c067fea9Sghen    symbols[Group1] = [ ISO_Level5_Shift ]
41c067fea9Sghen    };
420412cdedSmrg  include "level5(modifier_mapping)"
43c067fea9Sghen};
44c067fea9Sghen
45c067fea9Sghen
46c067fea9Sghen// The following modifier keys are used to switch to the third shift and to set a
47c067fea9Sghen// corresponding lock, implemented as NumLock.
48c067fea9Sghen
49c067fea9Sghenpartial modifier_keys
50c067fea9Sghenxkb_symbols "lock" {
51c067fea9Sghen  // This adds the definitions needed to create a level5-lock behaviour, using
52c067fea9Sghen  // the real modifier NumLock as a lock indicator.
53c067fea9Sghen  // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
54c067fea9Sghen  // See also: compat/level5(level5_lock)
55c067fea9Sghen  key.type[Group1] = "ONE_LEVEL";
56c067fea9Sghen
570412cdedSmrg  include "level5(modifier_mapping)"
58c067fea9Sghen
59c067fea9Sghen  replace key <HYPR> {
60c067fea9Sghen    vmods = NumLock,
61c067fea9Sghen    symbols[Group1] = [ NoSymbol ],
62c067fea9Sghen    actions[Group1] = [ SetMods(modifiers=NumLock) ]
63c067fea9Sghen  };
64c067fea9Sghen  modifier_map Mod2 { <HYPR> };
65c067fea9Sghen};
66c067fea9Sghen
67c067fea9Sghenpartial modifier_keys
68c067fea9Sghenxkb_symbols "lsgt_switch_lock" {
69c067fea9Sghen
70c067fea9Sghen  include "level5(lock)"
71c067fea9Sghen
72c067fea9Sghen  key <LSGT> {
73c067fea9Sghen    type[Group1] = "EIGHT_LEVEL",
74c067fea9Sghen    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
75c067fea9Sghen  };
76c067fea9Sghen};
77c067fea9Sghen
78c067fea9Sghenpartial modifier_keys
79c067fea9Sghenxkb_symbols "lwin_switch_lock" {
80c067fea9Sghen
81c067fea9Sghen  include "level5(lock)"
82c067fea9Sghen
83c067fea9Sghen  key <LWIN> {
84c067fea9Sghen    type[Group1] = "EIGHT_LEVEL",
85c067fea9Sghen    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
86c067fea9Sghen  };
87c067fea9Sghen};
88c067fea9Sghen
89c067fea9Sghenpartial modifier_keys
90c067fea9Sghenxkb_symbols "ralt_switch_lock" {
91c067fea9Sghen
92c067fea9Sghen  include "level5(lock)"
93c067fea9Sghen
94c067fea9Sghen  key <RALT> {
95c067fea9Sghen    type[Group1] = "EIGHT_LEVEL",
96c067fea9Sghen    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
97c067fea9Sghen  };
98c067fea9Sghen};
99c067fea9Sghen
100c067fea9Sghenpartial modifier_keys
101c067fea9Sghenxkb_symbols "rwin_switch_lock" {
102c067fea9Sghen
103c067fea9Sghen  include "level5(lock)"
104c067fea9Sghen
105c067fea9Sghen  key <RWIN> {
106c067fea9Sghen    type[Group1] = "EIGHT_LEVEL",
107c067fea9Sghen    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
108c067fea9Sghen  };
109c067fea9Sghen};
110c067fea9Sghen
111c067fea9Sghenpartial modifier_keys
112c067fea9Sghenxkb_symbols "lsgt_switch_lock_cancel" {
113c067fea9Sghen
114c067fea9Sghen  include "level5(lock)"
115c067fea9Sghen
116c067fea9Sghen  key <LSGT> {
117c067fea9Sghen    type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
118c067fea9Sghen    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
119c067fea9Sghen  };
120c067fea9Sghen};
121c067fea9Sghen
122c067fea9Sghenpartial modifier_keys
123c067fea9Sghenxkb_symbols "lwin_switch_lock_cancel" {
124c067fea9Sghen
125c067fea9Sghen  include "level5(lock)"
126c067fea9Sghen
127c067fea9Sghen  key <LWIN> {
128c067fea9Sghen    type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
129c067fea9Sghen    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
130c067fea9Sghen  };
131c067fea9Sghen};
132c067fea9Sghen
133c067fea9Sghenpartial modifier_keys
134c067fea9Sghenxkb_symbols "ralt_switch_lock_cancel" {
135c067fea9Sghen
136c067fea9Sghen  include "level5(lock)"
137c067fea9Sghen
138c067fea9Sghen  key <RALT> {
139c067fea9Sghen    type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
140c067fea9Sghen    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
141c067fea9Sghen  };
142c067fea9Sghen};
143c067fea9Sghen
144c067fea9Sghenpartial modifier_keys
145c067fea9Sghenxkb_symbols "rwin_switch_lock_cancel" {
146c067fea9Sghen
147c067fea9Sghen  include "level5(lock)"
148c067fea9Sghen
149c067fea9Sghen  key <RWIN> {
150c067fea9Sghen    type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
151c067fea9Sghen    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
152c067fea9Sghen  };
153c067fea9Sghen};
154