• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1partial default 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;
8    virtual_modifiers LevelThree;
9    virtual_modifiers LAlt;
10    virtual_modifiers RAlt;
11    virtual_modifiers RControl;
12    virtual_modifiers LControl;
13
14    type "PC_SUPER_LEVEL2" {
15       modifiers = Mod4;
16       map[None] = Level1;
17       map[Mod4] = Level2;
18       level_name[Level1] = "Base";
19       level_name[Level2] = "Super";
20    };
21
22    type "PC_CONTROL_LEVEL2" {
23	modifiers = Control;
24	map[None] = Level1;
25	map[Control] = Level2;
26	level_name[Level1] = "Base";
27	level_name[Level2] = "Control";
28    };
29
30    type "PC_LCONTROL_LEVEL2" {
31	modifiers = LControl;
32	map[None] = Level1;
33	map[LControl] = Level2;
34	level_name[Level1] = "Base";
35	level_name[Level2] = "LControl";
36    };
37
38    type "PC_RCONTROL_LEVEL2" {
39	modifiers = RControl;
40	map[None] = Level1;
41	map[RControl] = Level2;
42	level_name[Level1] = "Base";
43	level_name[Level2] = "RControl";
44    };
45
46    type "PC_ALT_LEVEL2" {
47	modifiers = Alt;
48	map[None] = Level1;
49	map[Alt] = Level2;
50	level_name[Level1] = "Base";
51	level_name[Level2] = "Alt";
52    };
53
54    type "PC_LALT_LEVEL2" {
55	modifiers = LAlt;
56	map[None] = Level1;
57	map[LAlt] = Level2;
58	level_name[Level1] = "Base";
59	level_name[Level2] = "LAlt";
60    };
61
62    type "PC_RALT_LEVEL2" {
63	modifiers = RAlt;
64	map[None] = Level1;
65	map[RAlt] = Level2;
66	level_name[Level1] = "Base";
67	level_name[Level2] = "RAlt";
68    };
69
70    type "CTRL+ALT" {
71        modifiers = Control+Alt+Shift+LevelThree;
72        map[None] = Level1;
73        map[Shift] = Level2;
74        map[LevelThree] = Level3;
75        map[Shift+LevelThree] = Level4;
76        map[Control+Alt] = Level5;
77        preserve[Shift] = Shift;
78        preserve[Shift+LevelThree] = Shift;
79        level_name[Level1] = "Base";
80        level_name[Level2] = "Shift";
81        level_name[Level3] = "Alt Base";
82        level_name[Level4] = "Shift Alt";
83        level_name[Level5] = "Ctrl+Alt";
84    };
85
86   // Local eight level.
87   // Needed when you want part of your layout eight-level but cannot use
88   // LevelFive as modifier, as this will take over the right Ctrl by default
89   // for the whole layout and is too invasive for the average four-level user.
90   // Needed to fix bug #9529.
91   // FIXME: Should really use RControl but it seems not to be enabled by
92   // default and touching this requires a lot of testing.
93   type "LOCAL_EIGHT_LEVEL" {
94	modifiers = Shift+Lock+LevelThree+Control;
95
96	map[None]       = Level1;
97	map[Lock+Shift] = Level1;
98	map[Shift] = Level2;
99	map[Lock]  = Level2;
100
101	map[LevelThree]            = Level3;
102	map[Lock+Shift+LevelThree] = Level3;
103	map[Shift+LevelThree] = Level4;
104	map[Lock+LevelThree]  = Level4;
105
106	map[Control]            = Level5;
107	map[Lock+Shift+Control] = Level5;
108	map[Shift+Control] = Level6;
109	map[Lock+Control]  = Level6;
110
111	map[LevelThree+Control]            = Level7;
112	map[Lock+Shift+LevelThree+Control] = Level7;
113	map[Shift+LevelThree+Control] = Level8;
114	map[Lock+LevelThree+Control]  = Level8;
115
116	level_name[Level1] = "Base";
117	level_name[Level2] = "Shift";
118	level_name[Level3] = "Level3";
119	level_name[Level4] = "Shift Level3";
120	level_name[Level5] = "Ctrl";
121	level_name[Level6] = "Shift Ctrl";
122	level_name[Level7] = "Level3 Ctrl";
123	level_name[Level8] = "Shift Level3 Ctrl";
124    };
125
126};
127