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