1// These partial variants assign ISO_Level5_Shift to various XKB keycodes 2// so that the fifth shift level can be reached. 3 4// The right Ctrl key (while pressed) chooses the fifth shift level. 5partial modifier_keys 6xkb_symbols "rctrl_switch" { 7 key <RCTL> { 8 type[Group1]="ONE_LEVEL", 9 symbols[Group1] = [ ISO_Level5_Shift ] 10 }; 11 include "level5(modifier_mapping)" 12}; 13 14// The Less/Greater key (while pressed) chooses the fifth shift level. 15partial modifier_keys 16xkb_symbols "lsgt_switch" { 17 key <LSGT> { 18 type[Group1]="ONE_LEVEL", 19 symbols[Group1] = [ ISO_Level5_Shift ] 20 }; 21 include "level5(modifier_mapping)" 22}; 23 24// The right Alt key (while pressed) chooses the fifth shift level. 25partial modifier_keys 26xkb_symbols "ralt_switch" { 27 key <RALT> { 28 type[Group1]="ONE_LEVEL", 29 symbols[Group1] = [ ISO_Level5_Shift ] 30 }; 31 include "level5(modifier_mapping)" 32}; 33 34// Ensure a mapping to a real modifier for LevelFive. 35partial modifier_keys 36xkb_symbols "modifier_mapping" { 37 replace key <MDSW> { 38 type[Group1] = "ONE_LEVEL", 39 symbols[Group1] = [ ISO_Level5_Shift ] 40 }; 41 modifier_map Mod3 { <MDSW> }; 42}; 43 44 45// This adds the definitions needed to create a level5-lock behaviour, using 46// the real modifier NumLock as a lock indicator. 47// See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK 48// See also: compat/level5(level5_lock) 49partial modifier_keys 50xkb_symbols "lock" { 51 key.type[Group1] = "ONE_LEVEL"; 52 include "level5(modifier_mapping)" 53 replace key <HYPR> { 54 vmods = NumLock, 55 symbols[Group1] = [ NoSymbol ], 56 actions[Group1] = [ SetMods(modifiers=NumLock) ] 57 }; 58 modifier_map Mod2 { <HYPR> }; 59}; 60 61// The following modifier keys are used to switch to the third shift level 62// and to set a corresponding lock, implemented as NumLock. 63 64partial modifier_keys 65xkb_symbols "lsgt_switch_lock" { 66 include "level5(lock)" 67 key <LSGT> { 68 type[Group1] = "EIGHT_LEVEL", 69 symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, 70 ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] 71 }; 72}; 73 74partial modifier_keys 75xkb_symbols "lwin_switch_lock" { 76 include "level5(lock)" 77 key <LWIN> { 78 type[Group1] = "EIGHT_LEVEL", 79 symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, 80 ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] 81 }; 82}; 83 84partial modifier_keys 85xkb_symbols "ralt_switch_lock" { 86 include "level5(lock)" 87 key <RALT> { 88 type[Group1] = "EIGHT_LEVEL", 89 symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, 90 ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] 91 }; 92}; 93 94partial modifier_keys 95xkb_symbols "rwin_switch_lock" { 96 include "level5(lock)" 97 key <RWIN> { 98 type[Group1] = "EIGHT_LEVEL", 99 symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, 100 ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] 101 }; 102}; 103 104partial modifier_keys 105xkb_symbols "lsgt_switch_lock_cancel" { 106 include "level5(lock)" 107 key <LSGT> { 108 type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK", 109 symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, 110 ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] 111 }; 112}; 113 114partial modifier_keys 115xkb_symbols "lwin_switch_lock_cancel" { 116 include "level5(lock)" 117 key <LWIN> { 118 type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK", 119 symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, 120 ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] 121 }; 122}; 123 124partial modifier_keys 125xkb_symbols "ralt_switch_lock_cancel" { 126 include "level5(lock)" 127 key <RALT> { 128 type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK", 129 symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, 130 ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] 131 }; 132}; 133 134partial modifier_keys 135xkb_symbols "rwin_switch_lock_cancel" { 136 include "level5(lock)" 137 key <RWIN> { 138 type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK", 139 symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, 140 ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ] 141 }; 142}; 143