1// The right Alt key (while pressed) chooses the second keyboard group. 2partial modifier_keys 3xkb_symbols "switch" { 4 key <RALT> { 5 symbols[Group1] = [ Mode_switch, Multi_key ], 6 virtualMods= AltGr 7 }; 8}; 9 10// The left Alt key (while pressed) chooses the second keyboard group. 11partial modifier_keys 12xkb_symbols "lswitch" { 13 key <LALT> { 14 symbols[Group1] = [ Mode_switch, Multi_key ], 15 virtualMods= AltGr 16 }; 17}; 18 19// Either Win key (while pressed) chooses the second keyboard group. 20partial modifier_keys 21xkb_symbols "win_switch" { 22 include "group(lwin_switch)" 23 include "group(rwin_switch)" 24}; 25 26// The left Win key (while pressed) chooses the second keyboard group. 27// (Using this map, you should declare your keyboard as pc101 or pc102 28// instead of pc104 or pc105.) 29partial modifier_keys 30xkb_symbols "lwin_switch" { 31 key <LWIN> { 32 symbols[Group1] = [ Mode_switch, Multi_key ], 33 virtualMods= AltGr 34 }; 35}; 36 37// The right Win key (while pressed) chooses the second keyboard group. 38// (Using this map, you should declare your keyboard as pc101 or pc102 39// instead of pc104 or pc105.) 40partial modifier_keys 41xkb_symbols "rwin_switch" { 42 key <RWIN> { 43 symbols[Group1] = [ Mode_switch, Multi_key ], 44 virtualMods= AltGr 45 }; 46}; 47 48// The right Ctrl key (while pressed) chooses the second keyboard group. 49// (Needed mainly for the Canadian keyboard.) 50partial modifier_keys 51xkb_symbols "rctrl_switch" { 52 key <RCTL> { 53 symbols[Group1] = [ Mode_switch ] 54 }; 55}; 56 57// Pressing the right Alt key switches to the next group. 58partial modifier_keys 59xkb_symbols "toggle" { 60 virtual_modifiers AltGr; 61 key <RALT> { 62 symbols[Group1] = [ ISO_Next_Group ], 63 virtualMods= AltGr 64 }; 65}; 66 67// Pressing both Shift keys switches to the next or previous group 68// (depending on which Shift is pressed first). 69partial modifier_keys 70xkb_symbols "shifts_toggle" { 71 key <LFSH> { [ Shift_L, ISO_Prev_Group ] }; 72 key <RTSH> { [ Shift_R, ISO_Next_Group ] }; 73}; 74 75// Pressing Shift+Caps_Lock switches to the next group. 76partial modifier_keys 77xkb_symbols "shift_caps_toggle" { 78 key <CAPS> { [ Caps_Lock, ISO_Next_Group ] }; 79}; 80 81// Pressing Caps_Lock selects the first group, 82// pressing Shift+Caps_Lock selects the last group. 83partial modifier_keys 84xkb_symbols "shift_caps_switch" { 85 key <CAPS> { [ ISO_First_Group, ISO_Last_Group ] }; 86}; 87 88// toggle using win + space as combo 89partial modifier_keys 90xkb_symbols "win_space_toggle" { 91 key <SPCE> { 92 type[Group1]="PC_SUPER_LEVEL2", 93 symbols[Group1]= [ space, ISO_Next_Group ] 94 }; 95}; 96 97// Pressing the left Win key selects the first group, 98// pressing the right Win or the Menu key selects the last group. 99partial modifier_keys 100xkb_symbols "win_menu_switch" { 101 virtual_modifiers AltGr; 102 key <LWIN> { 103 virtualMods= AltGr, 104 symbols[Group1] = [ ISO_First_Group ] 105 }; 106 key <MENU> { 107 virtualMods= AltGr, 108 symbols[Group1] = [ ISO_Last_Group ] 109 }; 110 key <RWIN> { 111 virtualMods= AltGr, 112 symbols[Group1] = [ ISO_Last_Group ] 113 }; 114}; 115 116// Pressing the left Ctrl key selects the first group, 117// pressing the right Ctrl key selects the last group. 118partial modifier_keys 119xkb_symbols "lctrl_rctrl_switch" { 120 virtual_modifiers AltGr; 121 key <LCTL> { 122 virtualMods= AltGr, 123 symbols[Group1] = [ ISO_First_Group ] 124 }; 125 key <RCTL> { 126 virtualMods= AltGr, 127 symbols[Group1] = [ ISO_Last_Group ] 128 }; 129}; 130 131 132// 133// CTRL-SHIFT toggle section 134// 135partial modifier_keys 136xkb_symbols "lctrl_lshift_toggle" { 137 key <LFSH> { 138 type[Group1]="PC_CONTROL_LEVEL2", 139 symbols[Group1] = [ Shift_L, ISO_Next_Group ] 140 }; 141 key <LCTL> { [ Control_L, ISO_Next_Group ] }; 142}; 143 144partial modifier_keys 145xkb_symbols "lctrl_lshift_toggle_rev" { 146 key <LFSH> { 147 type[Group1]="PC_CONTROL_LEVEL2", 148 symbols[Group1] = [ Shift_L, ISO_Prev_Group ] 149 }; 150 key <LCTL> { [ Control_L, ISO_Prev_Group ] }; 151}; 152 153partial modifier_keys 154xkb_symbols "rctrl_rshift_toggle" { 155 key <RTSH> { 156 type[Group1]="PC_CONTROL_LEVEL2", 157 symbols[Group1] = [ Shift_R, ISO_Next_Group ] 158 }; 159 key <RCTL> { [ Control_R, ISO_Next_Group ] }; 160}; 161 162partial modifier_keys 163xkb_symbols "ctrl_shift_toggle" { 164 include "group(lctrl_lshift_toggle)" 165 include "group(rctrl_rshift_toggle)" 166}; 167 168partial modifier_keys 169xkb_symbols "ctrl_shift_toggle_bidir" { 170 include "group(lctrl_lshift_toggle_rev)" 171 include "group(rctrl_rshift_toggle)" 172}; 173 174 175// 176// CTRL-ALT toggle section 177// 178partial modifier_keys 179xkb_symbols "lctrl_lalt_toggle" { 180 virtual_modifiers Alt; 181 key <LALT> { 182 type[Group1]="PC_CONTROL_LEVEL2", 183 symbols[Group1] = [ NoSymbol, ISO_Next_Group ], 184 virtualMods= Alt 185 }; 186 key <LCTL> { 187 type[Group1]="PC_ALT_LEVEL2", 188 symbols[Group1] = [ Control_L, ISO_Next_Group ] 189 }; 190}; 191 192partial modifier_keys 193xkb_symbols "lctrl_lalt_toggle_rev" { 194 virtual_modifiers Alt; 195 key <LALT> { 196 type[Group1]="PC_CONTROL_LEVEL2", 197 symbols[Group1] = [ NoSymbol, ISO_Prev_Group ], 198 virtualMods= Alt 199 }; 200 key <LCTL> { 201 type[Group1]="PC_ALT_LEVEL2", 202 symbols[Group1] = [ Control_L, ISO_Prev_Group ] 203 }; 204}; 205 206partial modifier_keys 207xkb_symbols "rctrl_ralt_toggle" { 208 virtual_modifiers Alt; 209 key <RALT> { 210 type[Group1]="PC_CONTROL_LEVEL2", 211 symbols[Group1] = [ NoSymbol, ISO_Next_Group ], 212 virtualMods= Alt 213 }; 214 key <RCTL> { 215 type[Group1]="PC_ALT_LEVEL2", 216 symbols[Group1] = [ Control_R, ISO_Next_Group ] 217 }; 218}; 219 220partial modifier_keys 221xkb_symbols "ctrl_alt_toggle" { 222 include "group(lctrl_lalt_toggle)" 223 include "group(rctrl_ralt_toggle)" 224}; 225 226partial modifier_keys 227xkb_symbols "ctrl_alt_toggle_bidir" { 228 include "group(lctrl_lalt_toggle_rev)" 229 include "group(rctrl_ralt_toggle)" 230}; 231 232 233// 234// ALT-SHIFT toggle section 235// 236partial modifier_keys 237xkb_symbols "lalt_lshift_toggle" { 238 virtual_modifiers Alt; 239 key <LALT> { 240 symbols[Group1] = [ NoSymbol, ISO_Next_Group ], 241 virtualMods= Alt 242 }; 243 key <LFSH> { 244 type[Group1]="PC_ALT_LEVEL2", 245 symbols[Group1] = [ Shift_L, ISO_Next_Group ] 246 }; 247}; 248 249partial modifier_keys 250xkb_symbols "lalt_lshift_toggle_rev" { 251 virtual_modifiers Alt; 252 key <LALT> { 253 symbols[Group1] = [ NoSymbol, ISO_Prev_Group ], 254 virtualMods= Alt 255 }; 256 key <LFSH> { 257 type[Group1]="PC_ALT_LEVEL2", 258 symbols[Group1] = [ Shift_L, ISO_Prev_Group ] 259 }; 260}; 261 262partial modifier_keys 263xkb_symbols "ralt_rshift_toggle" { 264 virtual_modifiers Alt; 265 key <RALT> { 266 symbols[Group1] = [ NoSymbol, ISO_Next_Group ], 267 virtualMods= Alt 268 }; 269 key <RTSH> { 270 type[Group1]="PC_ALT_LEVEL2", 271 symbols[Group1] = [ Shift_R, ISO_Next_Group ] 272 }; 273}; 274 275partial modifier_keys 276xkb_symbols "alt_shift_toggle" { 277 include "group(lalt_lshift_toggle)" 278 include "group(ralt_rshift_toggle)" 279}; 280 281partial modifier_keys 282xkb_symbols "alt_shift_toggle_bidir" { 283 include "group(lalt_lshift_toggle_rev)" 284 include "group(ralt_rshift_toggle)" 285}; 286 287 288// Pressing the Menu key switches to the next group, 289// while Shift+Menu acts as Menu. 290partial modifier_keys 291xkb_symbols "menu_toggle" { 292 key <MENU> { [ ISO_Next_Group, Menu ] }; 293}; 294 295// Pressing the left Win key switches to the next group. 296// (Using this map, you should declare your keyboard as 297// pc101 or pc102 instead of pc104 or pc105.) 298partial modifier_keys 299xkb_symbols "lwin_toggle" { 300 virtual_modifiers AltGr; 301 key <LWIN> { 302 virtualMods= AltGr, 303 symbols[Group1] = [ ISO_Next_Group ] 304 }; 305}; 306 307// Pressing the right Win key switches to the next group. 308// (Using this map, you should declare your keyboard as 309// pc101 or pc102 instead of pc104 or pc105.) 310partial modifier_keys 311xkb_symbols "rwin_toggle" { 312 virtual_modifiers AltGr; 313 key <RWIN> { 314 virtualMods= AltGr, 315 symbols[Group1] = [ ISO_Next_Group ] 316 }; 317}; 318 319// Pressing both Ctrl keys switches to the next or previous group 320// (depending on which Ctrl is pressed first). 321partial modifier_keys 322xkb_symbols "ctrls_toggle" { 323 virtual_modifiers LControl, RControl; 324 key <LCTL> { 325 type[Group1]="PC_RCONTROL_LEVEL2", 326 symbols[Group1] = [ NoSymbol, ISO_Prev_Group ], 327 virtualMods= LControl 328 }; 329 key <RCTL> { 330 type[Group1]="PC_LCONTROL_LEVEL2", 331 symbols[Group1] = [ NoSymbol, ISO_Next_Group ], 332 virtualMods= RControl 333 }; 334}; 335 336// Pressing both Alt keys switches to the next or previous group 337// (depending on which Alt is pressed first). 338partial modifier_keys 339xkb_symbols "alts_toggle" { 340 virtual_modifiers LAlt, RAlt; 341 key <LALT> { 342 type[Group1]="PC_RALT_LEVEL2", 343 symbols[Group1] = [ NoSymbol, ISO_Prev_Group ], 344 virtualMods= LAlt 345 }; 346 key <RALT> { 347 type[Group1]="PC_LALT_LEVEL2", 348 symbols[Group1] = [ NoSymbol, ISO_Next_Group ], 349 virtualMods= RAlt 350 }; 351}; 352 353// Pressing the left Shift key switches to the next group. 354partial modifier_keys 355xkb_symbols "lshift_toggle" { 356 virtual_modifiers AltGr; 357 key <LFSH> { 358 symbols[Group1] = [ ISO_Next_Group ], 359 virtualMods= AltGr 360 }; 361}; 362 363// Pressing the right Shift key switches to the next group. 364partial modifier_keys 365xkb_symbols "rshift_toggle" { 366 virtual_modifiers AltGr; 367 key <RTSH> { 368 symbols[Group1] = [ ISO_Next_Group ], 369 virtualMods= AltGr 370 }; 371}; 372 373// Pressing the left Alt key switches to the next group. 374partial modifier_keys 375xkb_symbols "lalt_toggle" { 376 virtual_modifiers AltGr; 377 key <LALT> { 378 symbols[Group1] = [ ISO_Next_Group ], 379 virtualMods= AltGr 380 }; 381}; 382 383// Pressing the left Ctrl key switches to the next group. 384partial modifier_keys 385xkb_symbols "lctrl_toggle" { 386 virtual_modifiers AltGr; 387 key <LCTL> { 388 symbols[Group1] = [ ISO_Next_Group ], 389 virtualMods= AltGr 390 }; 391}; 392 393// Pressing the right Ctrl key switches to the next group. 394partial modifier_keys 395xkb_symbols "rctrl_toggle" { 396 virtual_modifiers AltGr; 397 key <RCTL> { 398 symbols[Group1] = [ ISO_Next_Group ], 399 virtualMods= AltGr 400 }; 401}; 402 403// Pressing Alt+Caps_Lock switches to the next group, 404// pressing Caps_Lock toggles CapsLock. 405partial modifier_keys 406xkb_symbols "alt_caps_toggle" { 407 key <CAPS> { 408 type="PC_ALT_LEVEL2", 409 symbols[Group1] = [ Caps_Lock, ISO_Next_Group ] 410 }; 411}; 412 413hidden partial modifier_keys 414xkb_symbols "olpc" { 415 key <I219> { [ ISO_Next_Group, ISO_Prev_Group ] }; 416}; 417 418partial modifier_keys 419xkb_symbols "alt_space_toggle" { 420 key <SPCE> { 421 type[Group1]="PC_ALT_LEVEL2", 422 symbols[Group1] = [ space, ISO_Next_Group ] 423 }; 424}; 425 426// Pressing the Scroll Lock key switches to the next group, 427partial modifier_keys 428xkb_symbols "sclk_toggle" { 429 virtual_modifiers AltGr; 430 key <SCLK> { 431 virtualMods= AltGr, 432 symbols[Group1] = [ ISO_Next_Group ] 433 }; 434}; 435 436// Control_L+Win_L selects the first group (presumably Lat), 437// Control_R+Menu selects the second group (presumably Rus). 438partial modifier_keys 439xkb_symbols "lctrl_lwin_rctrl_menu" { 440 key <LWIN> { 441 type[Group1] = "PC_CONTROL_LEVEL2", 442 symbols[Group1] = [ Super_L, ISO_First_Group ] 443 }; 444 key <MENU> { 445 type[Group1] = "PC_CONTROL_LEVEL2", 446 symbols[Group1] = [ Menu, ISO_Last_Group ] 447 }; 448}; 449