// $XKeyboardConfig$

// these variants assign various XKB keycodes to ISO_Level5_Shift so that
// the third shift level can be reached
//
// $XFree86: xc/programs/xkbcomp/symbols/level3,v 1.7 2003/09/08 14:25:32 eich Exp $
//

// using the level(switch) map, the right Control key temporarily
// chooses the fifth shift level (until it is released).
partial modifier_keys
xkb_symbols "rctrl_switch" {
  key <RCTL> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift ]
    };
  modifier_map Mod3   { ISO_Level5_Shift };
};

// The following modifier keys are used to switch to the third shift and to set a
// corresponding lock, implemented as NumLock.  They do not use *Level5* keysyms,
// as some applications get confused by it.

partial modifier_keys
xkb_symbols "neomod_map" {
  replace key <MDSW> {
    type[Group1] = "ONE_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift ]
  };
  modifier_map Mod3 { <MDSW> };

  replace key <HYPR> {
    type[Group1] = "ONE_LEVEL",
    vmods[Group1] = NumLock,
    symbols[Group1] = [ NoSymbol ],
    actions[Group1] = [ SetMods(modifiers=NumLock) ]
  };
  modifier_map Mod2 { <HYPR> };
};

partial modifier_keys
xkb_symbols "lsgt_switch_numlock" {

  include "level5(neomod_map)"

  key <LSGT> {
    type[Group1] = "EIGHT_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
  };
};

partial modifier_keys
xkb_symbols "lwin_switch_numlock" {

  include "level5(neomod_map)"

  key <LWIN> {
    type[Group1] = "EIGHT_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
  };
};

partial modifier_keys
xkb_symbols "ralt_switch_numlock" {

  include "level5(neomod_map)"

  key <RALT> {
    type[Group1] = "EIGHT_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
  };
};

partial modifier_keys
xkb_symbols "rwin_switch_numlock" {

  include "level5(neomod_map)"

  key <RWIN> {
    type[Group1] = "EIGHT_LEVEL",
    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
  };
};

partial modifier_keys
xkb_symbols "lsgt_switch_numlock_cancel" {

  include "level5(neomod_map)"

  key <LSGT> {
    type[Group1] = "EIGHT_LEVEL_NEO_LOCKS",
    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
  };
};

partial modifier_keys
xkb_symbols "lwin_switch_numlock_cancel" {

  include "level5(neomod_map)"

  key <LWIN> {
    type[Group1] = "EIGHT_LEVEL_NEO_LOCKS",
    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
  };
};

partial modifier_keys
xkb_symbols "ralt_switch_numlock_cancel" {

  include "level5(neomod_map)"

  key <RALT> {
    type[Group1] = "EIGHT_LEVEL_NEO_LOCKS",
    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
  };
};

partial modifier_keys
xkb_symbols "rwin_switch_numlock_cancel" {

  include "level5(neomod_map)"

  key <RWIN> {
    type[Group1] = "EIGHT_LEVEL_NEO_LOCKS",
    symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
  };
};