partial modifier_keys 
xkb_symbols "breaks_caps" {
    key <LFSH> {
	type = "ALPHABETIC",
    	actions [Group1] = [
	    SetMods(modifiers=Shift),
	    SetMods(modifiers=Shift+Lock,clearLocks)
	]
    };
    key <RTSH> {
	type = "ALPHABETIC",
	actions [Group1] = [
	    SetMods(modifiers=Shift),
	    SetMods(modifiers=Shift+Lock,clearLocks)
	]
    };
};

// When pressed together with another Shift key, set/release Lock.
partial modifier_keys
xkb_symbols "lshift_both_capslock" {
  key <LFSH> {
    type[Group1]="TWO_LEVEL",
    symbols[Group1] = [ Shift_L,                       Caps_Lock                ]
  };
};
// When pressed together with another Shift key, set or unset Lock.
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)"
};

// Release Lock when pressed alone and set Lock when pressed with another Shift key.
partial modifier_keys
xkb_symbols "lshift_both_capslock_cancel" {
  key <LFSH> {
    type[Group1]="ALPHABETIC",
    symbols[Group1] = [ Shift_L,                       Caps_Lock                ]
  };
};
// Release Lock when pressed alone and set Lock when pressed with another Shift key.
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)"
};


// When pressed together with another Shift key, lock/unlock Shift.
partial modifier_keys
xkb_symbols "lshift_both_shiftlock" {
  key <LFSH> {
    type[Group1]="TWO_LEVEL",
    symbols[Group1] = [ Shift_L,                       Shift_Lock ]
  };
};
// When pressed together with another Shift key, lock/unlock Shift.
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)"
};
