public void TurnOn() { if (!flags.HasFlag(StickyKeys.Flags.SKF_STICKYKEYSON)) { flags |= StickyKeys.Flags.SKF_STICKYKEYSON; SetStickKeysFlags(flags); } }
private void Refresh() { this.flags = GetStickyKeysFromSPI().dwFlags; this.rightALT = new StickyKeyModifier(flags.HasFlag(Flags.SKF_RALTLATCHED), flags.HasFlag(Flags.SKF_RALTLOCKED)); this.leftALT = new StickyKeyModifier(flags.HasFlag(Flags.SKF_LALTLATCHED), flags.HasFlag(Flags.SKF_RALTLOCKED)); this.rightCTL = new StickyKeyModifier(flags.HasFlag(Flags.SKF_RCTLLATCHED), flags.HasFlag(Flags.SKF_RCTLLOCKED)); this.leftCTL = new StickyKeyModifier(flags.HasFlag(Flags.SKF_LCTLLATCHED), flags.HasFlag(Flags.SKF_RCTLLOCKED)); this.rightWIN = new StickyKeyModifier(flags.HasFlag(Flags.SKF_RWINLATCHED), flags.HasFlag(Flags.SKF_RWINLOCKED)); this.leftWIN = new StickyKeyModifier(flags.HasFlag(Flags.SKF_LWINLATCHED), flags.HasFlag(Flags.SKF_RWINLOCKED)); this.rightSHIFT = new StickyKeyModifier(flags.HasFlag(Flags.SKF_RSHIFTLATCHED), flags.HasFlag(Flags.SKF_RSHIFTLOCKED)); this.leftSHIFT = new StickyKeyModifier(flags.HasFlag(Flags.SKF_LSHIFTLATCHED), flags.HasFlag(Flags.SKF_RSHIFTLOCKED)); }
private void SetStickKeysFlags(StickyKeys.Flags flags) { uint stickyKeysSize = (uint)Marshal.SizeOf(typeof(Win32Struct)); Win32Struct stickyKeys = new Win32Struct { cbSize = stickyKeysSize, dwFlags = flags }; bool result = SystemParametersInfo(uiActions.SPI_SETSTICKYKEYS, stickyKeysSize, ref stickyKeys, 0); if (!result) { throw new System.ComponentModel.Win32Exception(); } }
public void TurnOff() { flags &= ~StickyKeys.Flags.SKF_STICKYKEYSON; // remove the ON bit if set SetStickKeysFlags(flags); }