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 159 160 161 162 163
|
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 Alt, LevelThree, LevelFive, NumLock;
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] = "AltGr";
level_name[Level4] = "Shift AltGr";
};
type "FOUR_LEVEL_ALPHABETIC" {
modifiers = Shift + Lock + LevelThree;
map[None] = Level1;
map[Shift] = Level2;
map[Lock] = Level2;
map[Shift+Lock] = Level1;
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] = "AltGr";
level_name[Level4] = "Shift AltGr";
};
type "FOUR_LEVEL_SEMIALPHABETIC" {
modifiers = Shift + Lock + LevelThree;
map[None] = Level1;
map[Shift] = Level2;
map[Lock] = Level2;
map[Shift+Lock] = Level1;
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] = "AltGr";
level_name[Level4] = "Shift AltGr";
};
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] = "Shift/Numlock";
level_name[Level3] = "AltGr";
level_name[Level4] = "Shift/Numlock AltGr";
};
// 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] = Level2;
map[NumLock] = Level2;
map[Shift+NumLock] = Level1;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[NumLock+LevelThree] = Level3;
map[Shift+NumLock+LevelThree] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Number";
level_name[Level3] = "AltGr";
level_name[Level4] = "Shift AltGr";
};
// A variant of FOUR_LEVEL_MIXED_KEYPAD that uses the LevelFive
// modifier instead of NumLock, to avoid interaction with the keypad.
// Originally created to lock the digits on layouts with digits on
// the second level of the digits row (e.g. Azerty layouts).
type "FOUR_LEVEL_LOCKABLE_LEVEL2" {
modifiers = Shift + LevelThree + LevelFive;
map[None] = Level1;
map[Shift] = Level2;
map[LevelFive] = Level2;
map[Shift+LevelFive] = Level1;
map[LevelThree] = Level3;
map[Shift+LevelThree] = Level4;
map[LevelFive+LevelThree] = Level3;
map[Shift+LevelFive+LevelThree] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "Digit";
level_name[Level3] = "AltGr";
level_name[Level4] = "Shift AltGr";
};
// Base level, two shifted LevelThree levels, one Ctrl+Alt command level.
type "FOUR_LEVEL_X" {
modifiers = Shift + LevelThree + Control + Alt;
map[None] = Level1;
map[Shift] = Level1;
map[LevelThree] = Level2;
map[Shift+LevelThree] = Level3;
map[Control+Alt] = Level4;
level_name[Level1] = "Base";
level_name[Level2] = "AltGr";
level_name[Level3] = "Shift AltGr";
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";
level_name[Level4] = "Caps / 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] = "AltGr";
level_name[Level4] = "Shift AltGr";
level_name[Level5] = "Lock";
};
};
|