level3 revision 0412cded
1154daed1Smrg// these variants assign various XKB keycodes to ISO_Level3_Shift so that 2154daed1Smrg// the third shift level can be reached 3154daed1Smrg// 4154daed1Smrg 50412cdedSmrg// Ensure a mapping to a real modifier for LevelThree 60412cdedSmrgpartial modifier_keys 70412cdedSmrgxkb_symbols "modifier_mapping" { 80412cdedSmrg key.type[Group1] = "ONE_LEVEL"; 90412cdedSmrg 100412cdedSmrg replace key <LVL3> { 110412cdedSmrg symbols[Group1] = [ ISO_Level3_Shift ] 120412cdedSmrg }; 130412cdedSmrg modifier_map Mod5 { <LVL3> }; 140412cdedSmrg}; 150412cdedSmrg 16154daed1Smrg// the default behavior is for the right Alt key (AltGr) to generate the 17154daed1Smrg// third engraved symbol 18154daed1Smrgdefault partial modifier_keys 19154daed1Smrgxkb_symbols "ralt_switch" { 20154daed1Smrg key <RALT> { 21154daed1Smrg type[Group1]="ONE_LEVEL", 22154daed1Smrg symbols[Group1] = [ ISO_Level3_Shift ] 23154daed1Smrg }; 240412cdedSmrg include "level3(modifier_mapping)" 25154daed1Smrg}; 26154daed1Smrg 27154daed1Smrg// Right Alt key never chooses 3rd level. 28154daed1Smrg// This option attempts to undo the effect of a layout's 29154daed1Smrg// including ralt_switch. You may also want to select another 30154daed1Smrg// level3 option that maps the level3 shift to some other key. 31154daed1Smrgpartial modifier_keys 32154daed1Smrgxkb_symbols "ralt_alt" { 33154daed1Smrg key <RALT> { 34154daed1Smrg type[Group1]="TWO_LEVEL", 35154daed1Smrg type[Group2]="TWO_LEVEL", 36154daed1Smrg type[Group3]="TWO_LEVEL", 37154daed1Smrg type[Group4]="TWO_LEVEL", 38154daed1Smrg symbols[Group1] = [ Alt_R, Meta_R ], 39154daed1Smrg symbols[Group2] = [ Alt_R, Meta_R ], 40154daed1Smrg symbols[Group3] = [ Alt_R, Meta_R ], 41154daed1Smrg symbols[Group4] = [ Alt_R, Meta_R ] 42154daed1Smrg }; 43154daed1Smrg modifier_map Mod1 { <RALT> }; 44154daed1Smrg}; 45154daed1Smrg 46154daed1Smrgpartial modifier_keys 47154daed1Smrgxkb_symbols "ralt_switch_multikey" { 48154daed1Smrg key <RALT> { 49154daed1Smrg type[Group1]="TWO_LEVEL", 50154daed1Smrg symbols[Group1] = [ ISO_Level3_Shift, Multi_key ] 51154daed1Smrg }; 520412cdedSmrg include "level3(modifier_mapping)" 53154daed1Smrg}; 54154daed1Smrg 55154daed1Smrg// special case or right Alt switch - for use with grp:alts_toggle 56154daed1Smrg// 57154daed1Smrgpartial hidden modifier_keys 58154daed1Smrgxkb_symbols "ralt_switch_for_alts_toggle" { 59154daed1Smrg virtual_modifiers LAlt, AlGr; 60154daed1Smrg key <LALT> { 61154daed1Smrg type[Group1]="PC_RALT_LEVEL2", 62154daed1Smrg symbols[Group1] = [ Alt_L, ISO_Prev_Group, ISO_Prev_Group ], 63154daed1Smrg virtualMods= LAlt 64154daed1Smrg }; 65154daed1Smrg key <RALT> { 66154daed1Smrg type[Group1]="PC_ALT_LEVEL2", 67154daed1Smrg symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ], 68154daed1Smrg virtualMods= AltGr 69154daed1Smrg }; 700412cdedSmrg include "level3(modifier_mapping)" 71154daed1Smrg}; 72154daed1Smrg 73154daed1Smrg// using the level(alt_switch) map, either Alt key temporarily chooses 74154daed1Smrg// the third shift level. (Mostly be used to imitate Mac OS functionality.) 75154daed1Smrgpartial modifier_keys 76154daed1Smrgxkb_symbols "alt_switch" { 77154daed1Smrg include "level3(lalt_switch)" 78154daed1Smrg include "level3(ralt_switch)" 79154daed1Smrg}; 80154daed1Smrg 81154daed1Smrgpartial modifier_keys 82154daed1Smrgxkb_symbols "lalt_switch" { 83154daed1Smrg key <LALT> { 84154daed1Smrg type[Group1]="ONE_LEVEL", 85154daed1Smrg symbols[Group1] = [ ISO_Level3_Shift ] 86154daed1Smrg }; 870412cdedSmrg include "level3(modifier_mapping)" 88154daed1Smrg}; 89154daed1Smrg 90154daed1Smrg// using the level(switch) map, the right Control key temporarily 91154daed1Smrg// chooses the third shift level (until it is released). 92154daed1Smrgpartial modifier_keys 93154daed1Smrgxkb_symbols "switch" { 94154daed1Smrg key <RCTL> { 95154daed1Smrg type[Group1]="ONE_LEVEL", 96154daed1Smrg symbols[Group1] = [ ISO_Level3_Shift ] 97154daed1Smrg }; 980412cdedSmrg include "level3(modifier_mapping)" 99154daed1Smrg}; 100154daed1Smrg 101154daed1Smrg// using the level(menu_switch) map, the Menu key temporarily 102154daed1Smrg// chooses the third shift level (until it is released). 103154daed1Smrgpartial modifier_keys 104154daed1Smrgxkb_symbols "menu_switch" { 105154daed1Smrg key <MENU> { 106154daed1Smrg type[Group1]="ONE_LEVEL", 107154daed1Smrg symbols[Group1] = [ ISO_Level3_Shift ] 108154daed1Smrg }; 1090412cdedSmrg include "level3(modifier_mapping)" 110154daed1Smrg}; 111154daed1Smrg 112154daed1Smrg// using the level3(win_switch) map, the either Windows' logo key 113154daed1Smrg// temporarily chooses the third shift level. 114154daed1Smrgpartial modifier_keys 115154daed1Smrgxkb_symbols "win_switch" { 116154daed1Smrg include "level3(lwin_switch)" 117154daed1Smrg include "level3(rwin_switch)" 118154daed1Smrg}; 119154daed1Smrg 120154daed1Smrg// using the level3(lwin_switch) map, the left Windows' logo key 121154daed1Smrg// temporarily chooses the third shift level. 122154daed1Smrgpartial modifier_keys 123154daed1Smrgxkb_symbols "lwin_switch" { 124154daed1Smrg key <LWIN> { 125154daed1Smrg type[Group1]="ONE_LEVEL", 126154daed1Smrg symbols[Group1] = [ ISO_Level3_Shift ] 127154daed1Smrg }; 1280412cdedSmrg include "level3(modifier_mapping)" 129154daed1Smrg}; 130154daed1Smrg 131154daed1Smrg// using the level(rwin_switch) map, the right Windows' logo key 132154daed1Smrg// temporarily chooses the third shift level. If you use this map, 133154daed1Smrg// you should define your keyboard as pc101 or pc102 instead of pc104 134154daed1Smrg// or pc105. 135154daed1Smrgpartial modifier_keys 136154daed1Smrgxkb_symbols "rwin_switch" { 137154daed1Smrg key <RWIN> { 138154daed1Smrg type[Group1]="ONE_LEVEL", 139154daed1Smrg symbols[Group1] = [ ISO_Level3_Shift ] 140154daed1Smrg }; 1410412cdedSmrg include "level3(modifier_mapping)" 142154daed1Smrg}; 143154daed1Smrg 144154daed1Smrg// using the level3(enter_switch) map, the Enter key on the keypad 145154daed1Smrg// temporarily chooses the third shift level. This is especially 146154daed1Smrg// useful for Mac laptops which miss the right Alt key. 147c067fea9Sghenpartial modifier_keys 148154daed1Smrgxkb_symbols "enter_switch" { 149154daed1Smrg key <KPEN> { 150154daed1Smrg type[Group1]="ONE_LEVEL", 151154daed1Smrg symbols[Group1] = [ ISO_Level3_Shift ] 152154daed1Smrg }; 1530412cdedSmrg include "level3(modifier_mapping)" 154154daed1Smrg}; 155c067fea9Sghen 156c067fea9Sghenpartial modifier_keys 157c067fea9Sghenxkb_symbols "caps_switch" { 158c067fea9Sghen key <CAPS> { 159c067fea9Sghen type[Group1]="ONE_LEVEL", 160c067fea9Sghen symbols[Group1] = [ ISO_Level3_Shift ] 161c067fea9Sghen }; 1620412cdedSmrg include "level3(modifier_mapping)" 163c067fea9Sghen}; 164c067fea9Sghen 165c067fea9Sghenpartial modifier_keys 166c067fea9Sghenxkb_symbols "bksl_switch" { 167c067fea9Sghen key <BKSL> { 168c067fea9Sghen type[Group1]="ONE_LEVEL", 169c067fea9Sghen symbols[Group1] = [ ISO_Level3_Shift ] 170c067fea9Sghen }; 1710412cdedSmrg include "level3(modifier_mapping)" 172c067fea9Sghen}; 173c067fea9Sghen 174c067fea9Sghenpartial modifier_keys 175c067fea9Sghenxkb_symbols "lsgt_switch" { 176c067fea9Sghen key <LSGT> { 177c067fea9Sghen type[Group1]="ONE_LEVEL", 178c067fea9Sghen symbols[Group1] = [ ISO_Level3_Shift ] 179c067fea9Sghen }; 1800412cdedSmrg include "level3(modifier_mapping)" 181c067fea9Sghen}; 182c067fea9Sghen 183c067fea9Sghenpartial modifier_keys 184c067fea9Sghenxkb_symbols "caps_switch_latch" { 185c067fea9Sghen key <CAPS> { 186c067fea9Sghen type[Group1]="THREE_LEVEL", 187c067fea9Sghen symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ] 188c067fea9Sghen }; 1890412cdedSmrg include "level3(modifier_mapping)" 190c067fea9Sghen}; 191c067fea9Sghen 192c067fea9Sghenpartial modifier_keys 193c067fea9Sghenxkb_symbols "bksl_switch_latch" { 194c067fea9Sghen key <BKSL> { 195c067fea9Sghen type[Group1]="THREE_LEVEL", 196c067fea9Sghen symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ] 197c067fea9Sghen }; 1980412cdedSmrg include "level3(modifier_mapping)" 199c067fea9Sghen}; 200c067fea9Sghen 201c067fea9Sghenpartial modifier_keys 202c067fea9Sghenxkb_symbols "lsgt_switch_latch" { 203c067fea9Sghen key <LSGT> { 204c067fea9Sghen type[Group1]="THREE_LEVEL", 205c067fea9Sghen symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ] 206c067fea9Sghen }; 2070412cdedSmrg include "level3(modifier_mapping)" 208c067fea9Sghen}; 209