Edit

kc3-lang/libxkbcommon/test/data/symbols/level5

Branch :

  • Show log

    Commit

  • Author : Pierre Le Marre
    Date : 2025-01-02 18:45:15
    Hash : 0dc39650
    Message : test: Declare virtual modifiers explicitly This is required in order to use the sections in isolation.

  • test/data/symbols/level5
  • // These partial variants assign ISO_Level5_Shift to various XKB keycodes
    // so that the fifth shift level can be reached.
    
    // The right Ctrl key (while pressed) chooses the fifth shift level.
    partial modifier_keys
    xkb_symbols "rctrl_switch" {
      key <RCTL> {
        type[Group1]="ONE_LEVEL",
        symbols[Group1] = [ ISO_Level5_Shift ]
      };
      include "level5(modifier_mapping)"
    };
    
    // The Less/Greater key (while pressed) chooses the fifth shift level.
    partial modifier_keys
    xkb_symbols "lsgt_switch" {
      key <LSGT> {
        type[Group1]="ONE_LEVEL",
        symbols[Group1] = [ ISO_Level5_Shift ]
      };
      include "level5(modifier_mapping)"
    };
    
    // The right Alt key (while pressed) chooses the fifth shift level.
    partial modifier_keys
    xkb_symbols "ralt_switch" {
      key <RALT> {
        type[Group1]="ONE_LEVEL",
        symbols[Group1] = [ ISO_Level5_Shift ]
      };
      include "level5(modifier_mapping)"
    };
    
    // The CapsLock key (while pressed) chooses the fifth shift level.
    partial modifier_keys
    xkb_symbols "caps_switch" {
      key <CAPS> {
        type[Group1]="ONE_LEVEL",
        symbols[Group1] = [ ISO_Level5_Shift ]
      };
      include "level5(modifier_mapping)"
    };
    
    // Ensure a mapping to a real modifier for LevelFive.
    partial modifier_keys
    xkb_symbols "modifier_mapping" {
      replace key <MDSW> {
        type[Group1] = "ONE_LEVEL",
        symbols[Group1] = [ ISO_Level5_Shift ]
      };
      modifier_map Mod3 { <MDSW> };
    };
    
    
    // This adds the definitions needed to create a level5-lock behaviour, using
    // the real modifier NumLock as a lock indicator.
    // See also: types/level5 : EIGHT_LEVEL_LEVEL_FIVE_LOCK
    // See also: compat/level5(level5_lock)
    partial modifier_keys
    xkb_symbols "lock" {
      virtual_modifiers NumLock;
      key.type[Group1] = "ONE_LEVEL";
      include "level5(modifier_mapping)"
      replace key <HYPR> {
        vmods = NumLock,
        symbols[Group1] = [ NoSymbol ],
        actions[Group1] = [ SetMods(modifiers=NumLock) ]
      };
      modifier_map Mod2 { <HYPR> };
    };
    
    // The following modifier keys are used to switch to the third shift level
    // and to set a corresponding lock, implemented as NumLock.
    
    partial modifier_keys
    xkb_symbols "lsgt_switch_lock" {
      include "level5(lock)"
      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_lock" {
      include "level5(lock)"
      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_lock" {
      include "level5(lock)"
      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_lock" {
      include "level5(lock)"
      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_lock_cancel" {
      include "level5(lock)"
      key <LSGT> {
        type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
        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_lock_cancel" {
      include "level5(lock)"
      key <LWIN> {
        type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
        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_lock_cancel" {
      include "level5(lock)"
      key <RALT> {
        type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
        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_lock_cancel" {
      include "level5(lock)"
      key <RWIN> {
        type[Group1] = "EIGHT_LEVEL_LEVEL_FIVE_LOCK",
        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 ]
      };
    };