massive patch from OLPC
[xorg/xkeyboard-config] / symbols / level3
1 // $XKeyboardConfig$
2
3 // these variants assign various XKB keycodes to ISO_Level3_Shift so that
4 // the third shift level can be reached
5 //
6 // $XFree86: xc/programs/xkbcomp/symbols/level3,v 1.7 2003/09/08 14:25:32 eich Exp $
7 //
8
9 // the default behavior is for the right Alt key (AltGr) to generate the
10 // third engraved symbol
11 default partial modifier_keys
12 xkb_symbols "ralt_switch" {
13   key <RALT> {
14     type[Group1]="ONE_LEVEL",
15     symbols[Group1] = [ ISO_Level3_Shift ]
16     };
17   modifier_map Mod5   { ISO_Level3_Shift };
18 };
19
20 // Right Alt key never chooses 3rd level.
21 // This option attempts to undo the effect of a layout's
22 // including ralt_switch.  You may also want to select another
23 // level3 option that maps the level3 shift to some other key.
24 partial modifier_keys
25 xkb_symbols "ralt_alt" {
26   key <RALT> { 
27     type[Group1]="TWO_LEVEL",
28     type[Group2]="TWO_LEVEL",
29     type[Group3]="TWO_LEVEL",
30     type[Group4]="TWO_LEVEL",
31     symbols[Group1] = [ Alt_R, Meta_R ], 
32     symbols[Group2] = [ Alt_R, Meta_R ], 
33     symbols[Group3] = [ Alt_R, Meta_R ], 
34     symbols[Group4] = [ Alt_R, Meta_R ]
35     };
36   modifier_map Mod1    { <RALT> };
37 };
38
39 partial modifier_keys
40 xkb_symbols "ralt_switch_multikey" {
41   key <RALT> {
42     type[Group1]="TWO_LEVEL",
43     symbols[Group1] = [ ISO_Level3_Shift, Multi_key ]
44     };
45 };
46
47 // special case or right Alt switch - for use with grp:alts_toggle
48 //
49 partial hidden modifier_keys
50 xkb_symbols "ralt_switch_for_alts_toggle" {
51  virtual_modifiers LAlt, AlGr;
52   key <LALT> {
53     type[Group1]="PC_RALT_LEVEL2",
54     symbols[Group1] = [ Alt_L,  ISO_Prev_Group,  ISO_Prev_Group ],
55     virtualMods= LAlt
56   };
57   key <RALT> {
58     type[Group1]="PC_ALT_LEVEL2",
59     symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ],
60     virtualMods= AltGr
61   };
62   modifier_map Mod5   { ISO_Level3_Shift };
63 };
64
65 // using the level(alt_switch) map, either Alt key temporarily chooses
66 // the third shift level.  (Mostly be used to imitate Mac OS functionality.)
67 partial modifier_keys
68 xkb_symbols "alt_switch" {
69   include "level3(lalt_switch)"
70   include "level3(ralt_switch)"
71 };
72
73 partial modifier_keys
74 xkb_symbols "lalt_switch" {
75   key <LALT> {
76     type[Group1]="ONE_LEVEL",
77     symbols[Group1] = [ ISO_Level3_Shift ]
78     };
79   modifier_map Mod5   { <LALT> };
80 };
81
82 // using the level(switch) map, the right Control key temporarily
83 // chooses the third shift level (until it is released).
84 partial modifier_keys
85 xkb_symbols "switch" {
86   key <RCTL> {
87     type[Group1]="ONE_LEVEL",
88     symbols[Group1] = [ ISO_Level3_Shift ]
89     };
90   modifier_map Mod5   { ISO_Level3_Shift };
91 };
92
93 // using the level(menu_switch) map, the Menu key temporarily
94 // chooses the third shift level (until it is released).
95 partial modifier_keys
96 xkb_symbols "menu_switch" {
97   key <MENU> {
98     type[Group1]="ONE_LEVEL",
99     symbols[Group1] = [ ISO_Level3_Shift ]
100     };
101   modifier_map Mod5   { ISO_Level3_Shift };
102 };
103
104 // using the level3(win_switch) map, the either Windows' logo key
105 // temporarily chooses the third shift level.
106 partial modifier_keys
107 xkb_symbols "win_switch" {
108   include "level3(lwin_switch)"
109   include "level3(rwin_switch)"
110 };
111
112 // using the level3(lwin_switch) map, the left Windows' logo key
113 // temporarily chooses the third shift level.
114 partial modifier_keys
115 xkb_symbols "lwin_switch" {
116   key <LWIN> {
117     type[Group1]="ONE_LEVEL",
118     symbols[Group1] = [ ISO_Level3_Shift ]
119     };
120   modifier_map Mod5   { ISO_Level3_Shift };
121 };
122
123 // using the level(rwin_switch) map, the right Windows' logo key
124 // temporarily chooses the third shift level.  If you use this map,
125 // you should define your keyboard as pc101 or pc102 instead of pc104
126 // or pc105.
127 partial modifier_keys
128 xkb_symbols "rwin_switch" {
129   key <RWIN> {
130     type[Group1]="ONE_LEVEL",
131     symbols[Group1] = [ ISO_Level3_Shift ]
132     };
133   modifier_map Mod5   { ISO_Level3_Shift };
134 };
135
136 // using the level3(enter_switch) map, the Enter key on the keypad
137 // temporarily chooses the third shift level.  This is especially
138 // useful for Mac laptops which miss the right Alt key.
139 partial hidden modifier_keys
140 xkb_symbols "enter_switch" {
141   key <KPEN> {
142     type[Group1]="ONE_LEVEL",
143     symbols[Group1] = [ ISO_Level3_Shift ]
144     };
145   modifier_map Mod5   { ISO_Level3_Shift };
146 };