1default partial xkb_types "default" { 2 3 // Defines types with an eight-level shift, similar to the three-level 4 // type used for iso9995, but it lets the Shift key behave "normally". 5 6 virtual_modifiers LevelThree, LevelFive; 7 8 type "EIGHT_LEVEL" { 9 modifiers = Shift + LevelThree + LevelFive; 10 map[None] = Level1; 11 map[Shift] = Level2; 12 map[LevelThree] = Level3; 13 map[Shift+LevelThree] = Level4; 14 map[LevelFive] = Level5; 15 map[Shift+LevelFive] = Level6; 16 map[LevelThree+LevelFive] = Level7; 17 map[Shift+LevelThree+LevelFive] = Level8; 18 level_name[Level1] = "Base"; 19 level_name[Level2] = "Shift"; 20 level_name[Level3] = "Alt Base"; 21 level_name[Level4] = "Shift Alt"; 22 level_name[Level5] = "X"; 23 level_name[Level6] = "X Shift"; 24 level_name[Level7] = "X Alt Base"; 25 level_name[Level8] = "X Shift Alt"; 26 }; 27 28 type "EIGHT_LEVEL_ALPHABETIC" { 29 modifiers = Shift + Lock + LevelThree + LevelFive; 30 map[None] = Level1; 31 map[Shift] = Level2; 32 map[Lock] = Level2; 33 map[Shift+Lock] = Level1; 34 map[LevelThree] = Level3; 35 map[Shift+LevelThree] = Level4; 36 map[Lock+LevelThree] = Level4; 37 map[Shift+Lock+LevelThree] = Level3; 38 39 map[LevelFive] = Level5; 40 map[Shift+LevelFive] = Level6; 41 map[Lock+LevelFive] = Level6; 42 map[Shift+Lock+LevelFive] = Level5; 43 map[LevelThree+LevelFive] = Level7; 44 map[Shift+LevelThree+LevelFive] = Level8; 45 map[Lock+LevelThree+LevelFive] = Level8; 46 map[Shift+Lock+LevelThree+LevelFive] = Level7; 47 48 level_name[Level1] = "Base"; 49 level_name[Level2] = "Shift"; 50 level_name[Level3] = "Alt Base"; 51 level_name[Level4] = "Shift Alt"; 52 level_name[Level5] = "X"; 53 level_name[Level6] = "X Shift"; 54 level_name[Level7] = "X Alt Base"; 55 level_name[Level8] = "X Shift Alt"; 56 }; 57 58 type "EIGHT_LEVEL_SEMIALPHABETIC" { 59 modifiers = Shift + Lock + LevelThree + LevelFive; 60 map[None] = Level1; 61 map[Shift] = Level2; 62 map[Lock] = Level2; 63 map[Shift+Lock] = Level1; 64 map[LevelThree] = Level3; 65 map[Shift+LevelThree] = Level4; 66 map[Lock+LevelThree] = Level3; 67 map[Shift+Lock+LevelThree] = Level4; 68 69 map[LevelFive] = Level5; 70 map[Shift+LevelFive] = Level6; 71 map[Lock+LevelFive] = Level6; 72 map[Shift+Lock+LevelFive] = Level5; 73 map[LevelThree+LevelFive] = Level7; 74 map[Shift+LevelThree+LevelFive] = Level8; 75 map[Lock+LevelThree+LevelFive] = Level7; 76 map[Shift+Lock+LevelThree+LevelFive] = Level8; 77 78 preserve[Lock+LevelThree] = Lock; 79 preserve[Shift+Lock+LevelThree] = Lock; 80 preserve[Lock+LevelThree+LevelFive] = Lock; 81 preserve[Shift+Lock+LevelThree+LevelFive] = Lock; 82 83 level_name[Level1] = "Base"; 84 level_name[Level2] = "Shift"; 85 level_name[Level3] = "Alt Base"; 86 level_name[Level4] = "Shift Alt"; 87 level_name[Level5] = "X"; 88 level_name[Level6] = "X Shift"; 89 level_name[Level7] = "X Alt Base"; 90 level_name[Level8] = "X Shift Alt"; 91 }; 92 93 type "EIGHT_LEVEL_LEVEL_FIVE_LOCK" { 94 // Level5-Lock is implemented with virtual modifier NumLock. 95 96 modifiers = Shift + Lock + LevelThree + LevelFive + NumLock; 97 98 map[None] = Level1; 99 map[Shift] = Level2; 100 map[LevelThree] = Level3; 101 map[LevelThree+Shift] = Level4; 102 103 map[LevelFive] = Level5; 104 map[LevelFive+Shift] = Level6; 105 map[LevelFive+LevelThree] = Level7; 106 map[LevelFive+LevelThree+Shift] = Level8; 107 108 map[NumLock] = Level5; 109 map[NumLock+Shift] = Level6; 110 map[NumLock+LevelThree] = Level7; 111 map[NumLock+LevelThree+Shift] = Level8; 112 113 map[NumLock+LevelFive] = Level1; 114 map[NumLock+LevelFive+Shift] = Level2; 115 map[NumLock+LevelFive+LevelThree] = Level3; 116 map[NumLock+LevelFive+LevelThree+Shift] = Level4; 117 118 // Lock has no effect 119 map[Lock] = Level1; 120 map[Lock+Shift] = Level2; 121 map[Lock+LevelThree] = Level3; 122 map[Lock+LevelThree+Shift] = Level4; 123 124 map[Lock+LevelFive] = Level5; 125 map[Lock+LevelFive+Shift] = Level6; 126 map[Lock+LevelFive+LevelThree] = Level7; 127 map[Lock+LevelFive+LevelThree+Shift] = Level8; 128 129 map[Lock+NumLock] = Level5; 130 map[Lock+NumLock+Shift] = Level6; 131 map[Lock+NumLock+LevelThree] = Level7; 132 map[Lock+NumLock+LevelThree+Shift] = Level8; 133 134 map[Lock+NumLock+LevelFive] = Level1; 135 map[Lock+NumLock+LevelFive+Shift] = Level2; 136 map[Lock+NumLock+LevelFive+LevelThree] = Level3; 137 map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level4; 138 139 preserve[LevelFive+Shift] = Shift; 140 preserve[NumLock+Shift] = Shift; 141 preserve[Lock+LevelFive+Shift] = Shift; 142 preserve[Lock+NumLock+Shift] = Shift; 143 144 level_name[Level1] = "Base"; 145 level_name[Level2] = "Shift"; 146 level_name[Level3] = "Alt Base"; 147 level_name[Level4] = "Shift Alt"; 148 level_name[Level5] = "X"; 149 level_name[Level6] = "X Shift"; 150 level_name[Level7] = "X Alt Base"; 151 level_name[Level8] = "X Shift Alt"; 152 }; 153 154 type "EIGHT_LEVEL_ALPHABETIC_LEVEL_FIVE_LOCK" { 155 // Level5-Lock is implemented with virtual modifier NumLock. 156 157 modifiers = Shift + Lock + LevelThree + LevelFive + NumLock; 158 159 map[None] = Level1; 160 map[Shift] = Level2; 161 map[LevelThree] = Level3; 162 map[LevelThree+Shift] = Level4; 163 164 map[LevelFive] = Level5; 165 map[LevelFive+Shift] = Level6; 166 map[LevelFive+LevelThree] = Level7; 167 map[LevelFive+LevelThree+Shift] = Level8; 168 169 map[NumLock] = Level5; 170 map[NumLock+Shift] = Level6; 171 map[NumLock+LevelThree] = Level7; 172 map[NumLock+LevelThree+Shift] = Level8; 173 174 map[NumLock+LevelFive] = Level1; 175 map[NumLock+LevelFive+Shift] = Level2; 176 map[NumLock+LevelFive+LevelThree] = Level3; 177 map[NumLock+LevelFive+LevelThree+Shift] = Level4; 178 179 // Lock interchanges Level1 and Level2 180 map[Lock] = Level2; 181 map[Lock+Shift] = Level1; 182 map[Lock+LevelThree] = Level3; 183 map[Lock+LevelThree+Shift] = Level4; 184 185 map[Lock+LevelFive] = Level5; 186 map[Lock+LevelFive+Shift] = Level6; 187 map[Lock+LevelFive+LevelThree] = Level7; 188 map[Lock+LevelFive+LevelThree+Shift] = Level8; 189 190 map[Lock+NumLock] = Level5; 191 map[Lock+NumLock+Shift] = Level6; 192 map[Lock+NumLock+LevelThree] = Level7; 193 map[Lock+NumLock+LevelThree+Shift] = Level8; 194 195 map[Lock+NumLock+LevelFive] = Level2; 196 map[Lock+NumLock+LevelFive+Shift] = Level1; 197 map[Lock+NumLock+LevelFive+LevelThree] = Level4; 198 map[Lock+NumLock+LevelFive+LevelThree+Shift] = Level3; 199 200 preserve[LevelFive+Shift] = Shift; 201 preserve[NumLock+Shift] = Shift; 202 203 level_name[Level1] = "Base"; 204 level_name[Level2] = "Shift"; 205 level_name[Level3] = "Alt Base"; 206 level_name[Level4] = "Shift Alt"; 207 level_name[Level5] = "X"; 208 level_name[Level6] = "X Shift"; 209 level_name[Level7] = "X Alt Base"; 210 level_name[Level8] = "X Shift Alt"; 211 }; 212 213}; 214