summaryrefslogtreecommitdiff
path: root/types/extra
blob: ca38d2ee1585ecba5d4b59e921a97fe5138b342e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
default partial xkb_types "default" {

    // Defines types with a four-level shift, similar to the three-level
    // type from iso9995, but they let the Shift key behave "normally".

    virtual_modifiers  LevelThree;

    type "FOUR_LEVEL" {
	modifiers = Shift + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	level_name[Level1] = "Base";
	level_name[Level2] = "Shift";
	level_name[Level3] = "Alt Base";
	level_name[Level4] = "Shift Alt";
    };

    type "FOUR_LEVEL_ALPHABETIC" {
	modifiers = Shift + Lock + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[Lock] = Level2;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[Lock+LevelThree] = Level4;
	map[Shift+Lock+LevelThree] = Level3;
	level_name[Level1] = "Base";
	level_name[Level2] = "Shift";
	level_name[Level3] = "Alt Base";
	level_name[Level4] = "Shift Alt";
    };

    type "FOUR_LEVEL_SEMIALPHABETIC" {
	modifiers = Shift + Lock + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[Lock] = Level2;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[Lock+LevelThree] = Level3;
	map[Shift+Lock+LevelThree] = Level4;
	preserve[Lock+LevelThree] = Lock;
	preserve[Shift+Lock+LevelThree] = Lock;
	level_name[Level1] = "Base";
	level_name[Level2] = "Shift";
	level_name[Level3] = "Alt Base";
	level_name[Level4] = "Shift Alt";
    };

    // A four-level keypad variant. The first two levels are controlled by
    // NumLock (with active shifting like in KEYPAD).  LevelThree overrides
    // this mode, with two additional shifted levels.
    type "FOUR_LEVEL_MIXED_KEYPAD" {
	modifiers = Shift + NumLock + LevelThree;
	map[None] = Level1;
	map[Shift+NumLock] = Level1;
	map[NumLock] = Level2;
	map[Shift] = Level2;
	map[LevelThree] = Level3;
	map[NumLock+LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[Shift+NumLock+LevelThree] = Level4;
	level_name[Level1] = "Base";
	level_name[Level2] = "Number";
	level_name[Level3] = "Alt Base";
	level_name[Level4] = "Shift Alt";
    };

    // Base level, two shifted LevelThree levels, one Ctrl+Alt command level.
    type "FOUR_LEVEL_X" {
	modifiers = Shift + LevelThree + Control + Alt;
	map[None] = Level1;
	map[LevelThree] = Level2;
	map[Shift+LevelThree] = Level3;
	map[Control+Alt] = Level4;
	level_name[Level1] = "Base";
	level_name[Level2] = "Alt Base";
	level_name[Level3] = "Shift Alt";
	level_name[Level4] = "Ctrl+Alt";
    };

    // A special type for keys used in the Serbian Latin Unicode keymap.
    // It makes it possible to use all three forms of latin letters
    // present in Unicode that are made up of two separate letters
    // (forms like LJ, Lj, and lj; NJ, Nj, and nj; etcetera).
    type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
	modifiers = Shift + Lock + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[Lock] = Level4;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[Lock+LevelThree] = Level3;
	map[Shift+Lock+LevelThree] = Level3;
	preserve[Lock]= Lock;
	preserve[Lock+LevelThree]= Lock;
	level_name[Level1] = "Base";
	level_name[Level2] = "Shift";
	level_name[Level3] = "AltGr Base";
	level_name[Level4] = "Shift AltGr";
    };

    // Five levels: the normal four levels with Shift and LevelThree,
    // plus a fifth level when CapsLock (and only CapsLock) is active
    // -- CapsLock is ignored when Shift and/or LevelThree is held.
    type "FOUR_LEVEL_PLUS_LOCK" {
	modifiers = Shift + Lock + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[Lock] = Level5;
	map[Shift+Lock] = Level2;
	map[Lock+LevelThree] = Level3;
	map[Shift+Lock+LevelThree] = Level4;
	level_name[Level1] = "Base";
	level_name[Level2] = "Shift";
	level_name[Level3] = "Alt Base";
	level_name[Level4] = "Shift Alt";
	level_name[Level5] = "Lock";
    };
};

// This enables the four-level shifting also for the keypad.
partial xkb_types "keypad" {

    virtual_modifiers  LevelThree;

    type "FOUR_LEVEL_KEYPAD" {
	modifiers = Shift + NumLock + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[NumLock] = Level2;
	map[Shift+NumLock] = Level1;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[NumLock+LevelThree] = Level4;
	map[Shift+NumLock+LevelThree] = Level3;
	level_name[Level1] = "Base";
	level_name[Level2] = "Number";
	level_name[Level3] = "Alt Base";
	level_name[Level4] = "Alt Number";
    };
};