1default partial xkb_types "default" {
2
3    // Some types that are necessary
4    // for a full implementation of
5    // a PC-compatible keyboard.
6
7    virtual_modifiers  Alt, LevelThree;
8
9    type "PC_SUPER_LEVEL2" {
10	modifiers = Mod4;
11	map[None] = Level1;
12	map[Mod4] = Level2;
13	level_name[Level1] = "Base";
14	level_name[Level2] = "Super";
15    };
16
17    type "PC_CONTROL_LEVEL2" {
18	modifiers = Control;
19	map[None] = Level1;
20	map[Control] = Level2;
21	level_name[Level1] = "Base";
22	level_name[Level2] = "Control";
23    };
24
25    type "PC_ALT_LEVEL2" {
26	modifiers = Alt;
27	map[None] = Level1;
28	map[Alt] = Level2;
29	level_name[Level1] = "Base";
30	level_name[Level2] = "Alt";
31    };
32
33    type "CTRL+ALT" {
34	modifiers = Shift + LevelThree + Control + Alt;
35	map[None] = Level1;
36	map[Shift] = Level2;
37	map[LevelThree] = Level3;
38	map[Shift+LevelThree] = Level4;
39	map[Control+Alt] = Level5;
40	preserve[Shift] = Shift;
41	preserve[Shift+LevelThree] = Shift;
42	level_name[Level1] = "Base";
43	level_name[Level2] = "Shift";
44	level_name[Level3] = "Alt Base";
45	level_name[Level4] = "Shift Alt";
46	level_name[Level5] = "Ctrl+Alt";
47    };
48
49    // Local eight level.
50    // Needed when you want part of your layout eight-level but cannot use
51    // LevelFive as modifier, as this will take over the right Ctrl by default
52    // for the whole layout and is too invasive for the average four-level user.
53    // Needed to fix bug #9529.
54    // FIXME: Should really use RControl but it seems not to be enabled by
55    // default and touching this requires a lot of testing.
56    type "LOCAL_EIGHT_LEVEL" {
57	modifiers = Shift + Lock + LevelThree + Control;
58
59	map[None]       = Level1;
60	map[Lock+Shift] = Level1;
61	map[Shift] = Level2;
62	map[Lock]  = Level2;
63
64	map[LevelThree]            = Level3;
65	map[Lock+Shift+LevelThree] = Level3;
66	map[Shift+LevelThree] = Level4;
67	map[Lock+LevelThree]  = Level4;
68
69	map[Control]            = Level5;
70	map[Lock+Shift+Control] = Level5;
71	map[Shift+Control] = Level6;
72	map[Lock+Control]  = Level6;
73
74	map[LevelThree+Control]            = Level7;
75	map[Lock+Shift+LevelThree+Control] = Level7;
76	map[Shift+LevelThree+Control] = Level8;
77	map[Lock+LevelThree+Control]  = Level8;
78
79	level_name[Level1] = "Base";
80	level_name[Level2] = "Shift";
81	level_name[Level3] = "Level3";
82	level_name[Level4] = "Shift Level3";
83	level_name[Level5] = "Ctrl";
84	level_name[Level6] = "Shift Ctrl";
85	level_name[Level7] = "Level3 Ctrl";
86	level_name[Level8] = "Shift Level3 Ctrl";
87    };
88};
89