level5 revision 9ea7388f
1428d7b3dSmrg// These partial variants assign ISO_Level5_Shift to various XKB keycodes
2428d7b3dSmrg// so that the fifth shift level can be reached.
3428d7b3dSmrg
4428d7b3dSmrg// The right Ctrl key (while pressed) chooses the fifth shift level.
5428d7b3dSmrgpartial modifier_keys
6428d7b3dSmrgxkb_symbols "rctrl_switch" {
7428d7b3dSmrg  key <RCTL> {
8428d7b3dSmrg    type[Group1]="ONE_LEVEL",
9428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift ]
10428d7b3dSmrg  };
11428d7b3dSmrg  include "level5(modifier_mapping)"
12428d7b3dSmrg};
13428d7b3dSmrg
14428d7b3dSmrg// The Less/Greater key (while pressed) chooses the fifth shift level.
15428d7b3dSmrgpartial modifier_keys
16428d7b3dSmrgxkb_symbols "lsgt_switch" {
17428d7b3dSmrg  key <LSGT> {
18428d7b3dSmrg    type[Group1]="ONE_LEVEL",
19428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift ]
20428d7b3dSmrg  };
21428d7b3dSmrg  include "level5(modifier_mapping)"
22428d7b3dSmrg};
23428d7b3dSmrg
24428d7b3dSmrg// The right Alt key (while pressed) chooses the fifth shift level.
25428d7b3dSmrgpartial modifier_keys
26428d7b3dSmrgxkb_symbols "ralt_switch" {
27428d7b3dSmrg  key <RALT> {
28428d7b3dSmrg    type[Group1]="ONE_LEVEL",
29428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift ]
30428d7b3dSmrg  };
31428d7b3dSmrg  include "level5(modifier_mapping)"
32428d7b3dSmrg};
33428d7b3dSmrg
34428d7b3dSmrg// The CapsLock key (while pressed) chooses the fifth shift level.
35428d7b3dSmrgpartial modifier_keys
36428d7b3dSmrgxkb_symbols "caps_switch" {
37428d7b3dSmrg  key <CAPS> {
38428d7b3dSmrg    type[Group1]="ONE_LEVEL",
39428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift ]
40428d7b3dSmrg  };
41428d7b3dSmrg  include "level5(modifier_mapping)"
42428d7b3dSmrg};
43428d7b3dSmrg
44428d7b3dSmrg// Ensure a mapping to a real modifier for LevelFive.
45428d7b3dSmrgpartial modifier_keys
46428d7b3dSmrgxkb_symbols "modifier_mapping" {
47428d7b3dSmrg  replace key <MDSW> {
48428d7b3dSmrg    type[Group1] = "ONE_LEVEL",
49428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift ]
50428d7b3dSmrg  };
51428d7b3dSmrg  modifier_map Mod3 { <MDSW> };
52428d7b3dSmrg};
53428d7b3dSmrg
54428d7b3dSmrg
55428d7b3dSmrg// This adds the definitions needed to create a level5-lock behaviour, using
56428d7b3dSmrg// the real modifier NumLock as a lock indicator.
57428d7b3dSmrg// See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
58428d7b3dSmrg// See also: compat/level5(level5_lock)
59428d7b3dSmrgpartial modifier_keys
60428d7b3dSmrgxkb_symbols "lock" {
61428d7b3dSmrg  key.type[Group1] = "ONE_LEVEL";
62428d7b3dSmrg  include "level5(modifier_mapping)"
63428d7b3dSmrg  replace key <HYPR> {
64428d7b3dSmrg    vmods = NumLock,
65428d7b3dSmrg    symbols[Group1] = [ NoSymbol ],
66428d7b3dSmrg    actions[Group1] = [ SetMods(modifiers=NumLock) ]
67428d7b3dSmrg  };
68428d7b3dSmrg  modifier_map Mod2 { <HYPR> };
69428d7b3dSmrg};
70428d7b3dSmrg
71428d7b3dSmrg// The following modifier keys are used to switch to the third shift level
72428d7b3dSmrg// and to set a corresponding lock, implemented as NumLock.
73428d7b3dSmrg
74428d7b3dSmrgpartial modifier_keys
75428d7b3dSmrgxkb_symbols "lsgt_switch_lock" {
76428d7b3dSmrg  include "level5(lock)"
77428d7b3dSmrg  key <LSGT> {
78428d7b3dSmrg    type[Group1] = "EIGHT_LEVEL",
79428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
80428d7b3dSmrg                        ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
81428d7b3dSmrg  };
82428d7b3dSmrg};
83428d7b3dSmrg
84428d7b3dSmrgpartial modifier_keys
85428d7b3dSmrgxkb_symbols "lwin_switch_lock" {
86428d7b3dSmrg  include "level5(lock)"
87428d7b3dSmrg  key <LWIN> {
88428d7b3dSmrg    type[Group1] = "EIGHT_LEVEL",
89428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
90428d7b3dSmrg                        ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
91428d7b3dSmrg  };
92428d7b3dSmrg};
93428d7b3dSmrg
94428d7b3dSmrgpartial modifier_keys
95428d7b3dSmrgxkb_symbols "ralt_switch_lock" {
96428d7b3dSmrg  include "level5(lock)"
97428d7b3dSmrg  key <RALT> {
98428d7b3dSmrg    type[Group1] = "EIGHT_LEVEL",
99428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
100428d7b3dSmrg                        ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
101428d7b3dSmrg  };
102428d7b3dSmrg};
103428d7b3dSmrg
104428d7b3dSmrgpartial modifier_keys
105428d7b3dSmrgxkb_symbols "rwin_switch_lock" {
106428d7b3dSmrg  include "level5(lock)"
107428d7b3dSmrg  key <RWIN> {
108428d7b3dSmrg    type[Group1] = "EIGHT_LEVEL",
109428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
110428d7b3dSmrg                        ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
111428d7b3dSmrg  };
112428d7b3dSmrg};
113428d7b3dSmrg
114428d7b3dSmrgpartial modifier_keys
115428d7b3dSmrgxkb_symbols "lsgt_switch_lock_cancel" {
116428d7b3dSmrg  include "level5(lock)"
117428d7b3dSmrg  key <LSGT> {
118428d7b3dSmrg    type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
119428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
120428d7b3dSmrg                        ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
121428d7b3dSmrg  };
122428d7b3dSmrg};
123428d7b3dSmrg
124428d7b3dSmrgpartial modifier_keys
125428d7b3dSmrgxkb_symbols "lwin_switch_lock_cancel" {
126428d7b3dSmrg  include "level5(lock)"
127428d7b3dSmrg  key <LWIN> {
128428d7b3dSmrg    type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
129428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
130428d7b3dSmrg                        ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
131428d7b3dSmrg  };
132428d7b3dSmrg};
133428d7b3dSmrg
134428d7b3dSmrgpartial modifier_keys
135428d7b3dSmrgxkb_symbols "ralt_switch_lock_cancel" {
136428d7b3dSmrg  include "level5(lock)"
137428d7b3dSmrg  key <RALT> {
138428d7b3dSmrg    type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
139428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
140428d7b3dSmrg                        ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
141428d7b3dSmrg  };
142428d7b3dSmrg};
143428d7b3dSmrg
144428d7b3dSmrgpartial modifier_keys
145428d7b3dSmrgxkb_symbols "rwin_switch_lock_cancel" {
146428d7b3dSmrg  include "level5(lock)"
147428d7b3dSmrg  key <RWIN> {
148428d7b3dSmrg    type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
149428d7b3dSmrg    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
150428d7b3dSmrg                        ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
151428d7b3dSmrg  };
152428d7b3dSmrg};
153428d7b3dSmrg