summaryrefslogtreecommitdiff
path: root/test/data/types/extra
blob: e7529f40dc51813ac2624e35fc657553680d0206 (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
147
148
149
150
151
152
153
154
155
156
157
158
partial default xkb_types "default" {

    // Defines a type with a four-level shift, similar to the three-level
    // type used for iso9995, but it lets 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[Lock+Shift+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[Lock+Shift+LevelThree] = Level4;
	preserve[Lock+LevelThree] = Lock;
	preserve[Lock+Shift+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[Lock+Shift+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";
    };

// A key type for the German ssharp (for example), which is capitalized as SS.
// CHARACTERISTICS:
// It is FOUR_LEVEL with the exception that the fifth level is mapped to the
// Lock modifier.  If other modifiers are used, the Lock state is ignored.
// DETAILS ABOUT GERMAN:
// The capital form of ssharp (called sharp s) only exists for completely
// capitalized text, not for words at the beginning of sentences nor for
// nouns (nouns in German normally start with a captial letter).
// The ssharp key, to the right of the zero key, takes this into account
// and has a questionmark mapped to Shift-ssharp since normally no capital
// version is needed.
// When typing with active CapsLock, this key type is needed to
// output two capital letters S because this is the only German key
// whose capital letter is not the same as the one typed with Shift.

    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[Lock+Shift] = Level2;
        map[Lock+LevelThree] = Level3;
        map[Lock+Shift+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";
    };
};