1// CapsLock uses internal capitalization rules, 2// Shift "pauses" CapsLock. 3partial xkb_types "internal" { 4 type "ALPHABETIC" { 5 modifiers = Shift+Lock; 6 map[Shift] = Level2; 7 preserve[Lock] = Lock; 8 level_name[Level1] = "Base"; 9 level_name[Level2] = "Caps"; 10 }; 11 12 type "FOUR_LEVEL_ALPHABETIC" { 13 modifiers = Shift+Lock+LevelThree; 14 map[None] = Level1; 15 map[Shift] = Level2; 16 preserve[Lock] = Lock; 17 map[LevelThree] = Level3; 18 map[Shift+LevelThree] = Level4; 19 map[Lock+LevelThree] = Level3; 20 map[Lock+Shift+LevelThree] = Level3; 21 preserve[Lock+LevelThree] = Lock; 22 level_name[Level1] = "Base"; 23 level_name[Level2] = "Shift"; 24 level_name[Level3] = "Alt Base"; 25 level_name[Level4] = "Shift Alt"; 26 }; 27 28 type "FOUR_LEVEL_SEMIALPHABETIC" { 29 modifiers = Shift+Lock+LevelThree; 30 map[None] = Level1; 31 map[Shift] = Level2; 32 preserve[Lock] = Lock; 33 map[LevelThree] = Level3; 34 map[Shift+LevelThree] = Level4; 35 map[Lock+LevelThree] = Level3; 36 map[Lock+Shift+LevelThree] = Level4; 37 preserve[Lock+LevelThree] = Lock; 38 preserve[Lock+Shift+LevelThree] = Lock; 39 level_name[Level1] = "Base"; 40 level_name[Level2] = "Shift"; 41 level_name[Level3] = "Alt Base"; 42 level_name[Level4] = "Shift Alt"; 43 }; 44}; 45 46// CapsLock uses internal capitalization rules, 47// Shift does not cancel CapsLock. 48partial xkb_types "internal_nocancel" { 49 type "ALPHABETIC" { 50 modifiers = Shift; 51 map[Shift] = Level2; 52 level_name[Level1] = "Base"; 53 level_name[Level2] = "Caps"; 54 }; 55 56 type "FOUR_LEVEL_ALPHABETIC" { 57 modifiers = Shift+LevelThree; 58 map[None] = Level1; 59 map[Shift] = Level2; 60 map[LevelThree] = Level3; 61 map[Shift+LevelThree] = Level4; 62 level_name[Level1] = "Base"; 63 level_name[Level2] = "Shift"; 64 level_name[Level3] = "Alt Base"; 65 level_name[Level4] = "Shift Alt"; 66 }; 67 68 type "FOUR_LEVEL_SEMIALPHABETIC" { 69 // the same as FOUR_LEVEL_ALPHABETIC 70 modifiers = Shift+LevelThree; 71 map[None] = Level1; 72 map[Shift] = Level2; 73 map[LevelThree] = Level3; 74 map[Shift+LevelThree] = Level4; 75 level_name[Level1] = "Base"; 76 level_name[Level2] = "Shift"; 77 level_name[Level3] = "Alt Base"; 78 level_name[Level4] = "Shift Alt"; 79 }; 80}; 81 82// CapsLock acts as Shift with locking, 83// Shift "pauses" CapsLock. 84partial xkb_types "shift" { 85 type "ALPHABETIC" { 86 modifiers = Shift+Lock; 87 map[Shift] = Level2; 88 map[Lock] = Level2; 89 level_name[Level1] = "Base"; 90 level_name[Level2] = "Caps"; 91 }; 92 93 type "FOUR_LEVEL_ALPHABETIC" { 94 modifiers = Shift+Lock+LevelThree; 95 map[None] = Level1; 96 map[Shift] = Level2; 97 map[Lock] = Level2; 98 map[LevelThree] = Level3; 99 map[Shift+LevelThree] = Level4; 100 map[Lock+LevelThree] = Level4; 101 map[Shift+Lock+LevelThree] = Level3; 102 level_name[Level1] = "Base"; 103 level_name[Level2] = "Shift"; 104 level_name[Level3] = "Alt Base"; 105 level_name[Level4] = "Shift Alt"; 106 }; 107 108 type "FOUR_LEVEL_SEMIALPHABETIC" { 109 modifiers = Shift+Lock+LevelThree; 110 map[None] = Level1; 111 map[Shift] = Level2; 112 map[Lock] = Level2; 113 map[LevelThree] = Level3; 114 map[Shift+LevelThree] = Level4; 115 map[Lock+LevelThree] = Level3; 116 map[Lock+Shift+LevelThree] = Level4; 117 preserve[Lock+LevelThree] = Lock; 118 preserve[Lock+Shift+LevelThree] = Lock; 119 level_name[Level1] = "Base"; 120 level_name[Level2] = "Shift"; 121 level_name[Level3] = "Alt Base"; 122 level_name[Level4] = "Shift Alt"; 123 }; 124}; 125 126// CapsLock acts as Shift with locking, 127// Shift does not cancel CapsLock. 128partial xkb_types "shift_nocancel" { 129 type "ALPHABETIC" { 130 modifiers = Shift+Lock; 131 map[Shift] = Level2; 132 map[Lock] = Level2; 133 map[Shift+Lock] = Level2; 134 level_name[Level1] = "Base"; 135 level_name[Level2] = "Caps"; 136 }; 137 138 type "FOUR_LEVEL_ALPHABETIC" { 139 modifiers = Shift+Lock+LevelThree; 140 map[None] = Level1; 141 map[Shift] = Level2; 142 map[Lock] = Level2; 143 map[Shift+Lock] = Level2; 144 map[LevelThree] = Level3; 145 map[Shift+LevelThree] = Level4; 146 map[Lock+LevelThree] = Level4; 147 map[Shift+Lock+LevelThree] = Level4; 148 level_name[Level1] = "Base"; 149 level_name[Level2] = "Shift"; 150 level_name[Level3] = "Alt Base"; 151 level_name[Level4] = "Shift Alt"; 152 }; 153 154 type "FOUR_LEVEL_SEMIALPHABETIC" { 155 modifiers = Shift+Lock+LevelThree; 156 map[None] = Level1; 157 map[Shift] = Level2; 158 map[Lock] = Level2; 159 map[Shift+Lock] = Level2; 160 map[LevelThree] = Level3; 161 map[Shift+LevelThree] = Level4; 162 map[Lock+LevelThree] = Level3; 163 map[Lock+Shift+LevelThree] = Level4; 164 preserve[Lock+LevelThree] = Lock; 165 preserve[Lock+Shift+LevelThree] = Lock; 166 level_name[Level1] = "Base"; 167 level_name[Level2] = "Shift"; 168 level_name[Level3] = "Alt Base"; 169 level_name[Level4] = "Shift Alt"; 170 }; 171}; 172