01a5634ad8aac257410d8661a362df104c609398
[xorg/xkeyboard-config] / types / pc
1 partial default xkb_types "default" {
2
3     // Some types that are necessary
4     // for a full implementation of
5     // a PC compatible keyboard.
6     virtual_modifiers Alt;
7     virtual_modifiers LevelThree;
8     virtual_modifiers LAlt;
9     virtual_modifiers RAlt;
10     virtual_modifiers RControl;
11     virtual_modifiers LControl;
12
13     type "PC_CONTROL_LEVEL2" {
14         modifiers = Control;
15         map[None] = Level1;
16         map[Control] = Level2;
17         level_name[Level1] = "Base";
18         level_name[Level2] = "Control";
19     };
20
21     type "PC_LCONTROL_LEVEL2" {
22         modifiers = LControl;
23         map[None] = Level1;
24         map[LControl] = Level2;
25         level_name[Level1] = "Base";
26         level_name[Level2] = "LControl";
27     };
28
29     type "PC_RCONTROL_LEVEL2" {
30         modifiers = RControl;
31         map[None] = Level1;
32         map[RControl] = Level2;
33         level_name[Level1] = "Base";
34         level_name[Level2] = "RControl";
35     };
36
37     type "PC_ALT_LEVEL2" {
38         modifiers = Alt;
39         map[None] = Level1;
40         map[Alt] = Level2;
41         level_name[Level1] = "Base";
42         level_name[Level2] = "Alt";
43     };
44
45     type "PC_LALT_LEVEL2" {
46         modifiers = LAlt;
47         map[None] = Level1;
48         map[LAlt] = Level2;
49         level_name[Level1] = "Base";
50         level_name[Level2] = "LAlt";
51     };
52
53     type "PC_RALT_LEVEL2" {
54         modifiers = RAlt;
55         map[None] = Level1;
56         map[RAlt] = Level2;
57         level_name[Level1] = "Base";
58         level_name[Level2] = "RAlt";
59     };
60
61     type "CTRL+ALT" {
62         modifiers = Control+Alt+Shift+LevelThree;
63         map[None] = Level1;
64         map[Shift] = Level2;
65         map[LevelThree] = Level3;
66         map[Shift+LevelThree] = Level4;
67         map[Control+Alt] = Level5;
68         level_name[Level1] = "Base";
69         level_name[Level2] = "Shift";
70         level_name[Level3] = "Alt Base";
71         level_name[Level4] = "Shift Alt";
72         level_name[Level5] = "Ctrl+Alt";
73     };
74
75    // Local eight level
76    // Needed when you want part of your layout eight-level but can not use
77    // LevelFive as modifier, as this will take over right ctrl by default
78    // for all the layout and is too invasive for your average four-level user
79    // Needed to fix bug #9529
80    // FIXME Should really use RControl but it's seems not to be enabled by
81    // default and touching this requires a lot of testing
82    type "LOCAL_EIGHT_LEVEL" {
83         modifiers = Shift+Lock+LevelThree+Control;
84
85         map[None]       = Level1;
86         map[Lock+Shift] = Level1;
87         map[Shift] = Level2;
88         map[Lock]  = Level2;
89
90         map[LevelThree]            = Level3;
91         map[Lock+Shift+LevelThree] = Level3;
92         map[Shift+LevelThree] = Level4;
93         map[Lock+LevelThree]  = Level4;
94
95         map[Control]            = Level5;
96         map[Lock+Shift+Control] = Level5;
97         map[Shift+Control] = Level6;
98         map[Lock+Control]  = Level6;
99
100         map[LevelThree+Control]            = Level7;
101         map[Lock+Shift+LevelThree+Control] = Level7;
102         map[Shift+LevelThree+Control] = Level8;
103         map[Lock+LevelThree+Control]  = Level8;
104
105         level_name[Level1] = "Base";
106         level_name[Level2] = "Shift";
107         level_name[Level3] = "Level3";
108         level_name[Level4] = "Shift Level3";
109         level_name[Level5] = "Ctrl";
110         level_name[Level6] = "Shift Ctrl";
111         level_name[Level7] = "Level3 Ctrl";
112         level_name[Level8] = "Shift Level3 Ctrl";
113     };
114
115 };