Edit

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

Branch :

  • Show log

    Commit

  • Author : Pierre Le Marre
    Date : 2025-06-19 21:57:46
    Hash : d192b3b6
    Message : keymap: Add option `unlockOnPress` for SetMods() It enables e.g. to deactivate `CapsLock` *on press* rather than on release, as in other platforms such as Windows. It fixes a [18-year old issue] inherited from the X11 ecosystem, by extending the [XKB protocol key actions]. As it is incompatible with X11, this feature is available only using the keymap text format v2. [18-year old issue]: https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/issues/74 [XKB protocol key actions]: https://www.x.org/releases/current/doc/kbproto/xkbproto.html#Key_Actions

  • test/data/symbols/shift
  • // Cancel CapsLock when a Shift key is pressed.
    partial modifier_keys
    xkb_symbols "breaks_caps" {
        key <LFSH> {
    	type = "ALPHABETIC",
    	[Shift_L, Shift_L],
        	[
    	    SetMods(modifiers=Shift),
    	    SetMods(modifiers=Shift+Lock,clearLocks)
    	]
        };
        key <RTSH> {
    	type = "ALPHABETIC",
    	[Shift_R, Shift_R],
    	[
    	    SetMods(modifiers=Shift),
    	    SetMods(modifiers=Shift+Lock,clearLocks)
    	]
        };
    };
    
    
    // Toggle CapsLock when pressed together with the other Shift key.
    partial modifier_keys
    xkb_symbols "lshift_both_capslock" {
      key <LFSH> {
        type[Group1]="TWO_LEVEL",
        symbols[Group1] = [ Shift_L, Caps_Lock ]
      };
    };
    // Toggle CapsLock when pressed together with the other Shift key.
    partial modifier_keys
    xkb_symbols "rshift_both_capslock" {
      key <RTSH> {
        type[Group1]="TWO_LEVEL",
        symbols[Group1] = [ Shift_R, Caps_Lock ]
      };
    };
    partial modifier_keys
    xkb_symbols "both_capslock" {
      include "shift(lshift_both_capslock)"
      include "shift(rshift_both_capslock)"
    };
    
    
    // Set CapsLock when pressed with the other Shift key, release it when pressed alone.
    partial modifier_keys
    xkb_symbols "lshift_both_capslock_cancel" {
      key <LFSH> {
        type[Group1]="ALPHABETIC",
        symbols[Group1] = [ Shift_L, Caps_Lock ]
      };
    };
    // Set CapsLock when pressed with the other Shift key, release it when pressed alone.
    partial modifier_keys
    xkb_symbols "rshift_both_capslock_cancel" {
      key <RTSH> {
        type[Group1]="ALPHABETIC",
        symbols[Group1] = [ Shift_R, Caps_Lock ]
      };
    };
    partial modifier_keys
    xkb_symbols "both_capslock_cancel" {
      include "shift(lshift_both_capslock_cancel)"
      include "shift(rshift_both_capslock_cancel)"
    };
    
    
    // Toggle ShiftLock when pressed together with the other Shift key.
    partial modifier_keys
    xkb_symbols "lshift_both_shiftlock" {
      key <LFSH> {
        type[Group1]="TWO_LEVEL",
        symbols[Group1] = [ Shift_L, Shift_Lock ]
      };
    };
    // Toggle ShiftLock when pressed together with the other Shift key.
    partial modifier_keys
    xkb_symbols "rshift_both_shiftlock" {
      key <RTSH> {
        type[Group1]="TWO_LEVEL",
        symbols[Group1] = [ Shift_R, Shift_Lock ]
      };
    };
    partial modifier_keys
    xkb_symbols "both_shiftlock" {
      include "shift(lshift_both_shiftlock)"
      include "shift(rshift_both_shiftlock)"
    };