/// <summary>Creates a ChordHotKey object. /// </summary> /// <param name="name">The unique identifier for this ChordHotKey.</param> /// <param name="basekey">The key to start the chord.</param> /// <param name="basemodifier">The modifier associated with the base key.</param> /// <param name="ChordHotKey">The LocalHotKey object to extract the chord key and modifier from.</param> /// <param name="enabled">Specifies that the hotkey is active,</param> public ChordHotKey(string name, Modifiers basemodifier, Keys basekey, LocalHotKey ChordHotKey, bool enabled) { Name = name; BaseKey = basekey; BaseModifier = basemodifier; ChordKey = ChordHotKey.Key; chordmodifier = ChordHotKey.Modifier; Enabled = enabled; }
/// <summary>Unregisters a LocalHotKey. /// </summary> /// <param name="hotKey">The hotKey to be removed</param> /// <returns>True if success, otherwise false</returns> public bool RemoveLocalHotKey(LocalHotKey hotKey) { if (Program.SysConfig.LocalHotKeyContainer.Remove(hotKey) == true) { --LocalHotKeyCount; return(true); } else { return(false); } }
/// <summary>Checks if this Hotkey is equal to another ChordHotkey or LocalHotkey. /// </summary> /// <param name="obj">The Hotkey to compare</param> /// <returns>True if equal, false otherwise.</returns> public override bool Equals(object obj) { LocalHotKey lhotKey = obj as LocalHotKey; if (lhotKey != null) { return(Equals(lhotKey)); } ChordHotKey hotkey = obj as ChordHotKey; if (hotkey != null) { return(Equals(hotkey)); } return(false); }
/// <summary>Registers a LocalHotKey. /// </summary> /// <param name="hotKey">The hotKey which will be added. Must not be null and can be registered only once.</param> /// <exception cref="HotKeyAlreadyRegisteredException">thrown if a LocalHotkey with the same name and or key and modifier has already been added.</exception> public bool AddLocalHotKey(LocalHotKey hotKey) { if (hotKey == null) { if (!this.SuppressException) { throw new ArgumentNullException("value"); } return(false); } if (hotKey.Key == 0) { if (!this.SuppressException) { throw new ArgumentNullException("value.Key"); } return(false); } //Check if a chord already has its BaseKey and BaseModifier. bool ChordExits = Program.SysConfig.ChordHotKeyContainer.Exists ( delegate(ChordHotKey f) { return(f.BaseKey == hotKey.Key && f.BaseModifier == hotKey.Modifier); } ); if (Program.SysConfig.LocalHotKeyContainer.Contains(hotKey) || ChordExits) { if (!this.SuppressException) { throw new HotKeyAlreadyRegisteredException("HotKey already registered!", hotKey); } return(false); } Program.SysConfig.LocalHotKeyContainer.Add(hotKey); ++LocalHotKeyCount; return(true); }
/// <summary>Checks if a HotKey has been registered. /// </summary> /// <param name="name">The name of the HotKey.</param> /// <returns>True if the HotKey has been registered, false otherwise.</returns> public bool HotKeyExists(string name) { LocalHotKey local = Program.SysConfig.LocalHotKeyContainer.Find ( delegate(LocalHotKey l) { return(l.Name == name); } ); if (local != null) { return(true); } ChordHotKey chord = Program.SysConfig.ChordHotKeyContainer.Find ( delegate(ChordHotKey c) { return(c.Name == name); } ); if (chord != null) { return(true); } GlobalHotKey global = Program.SysConfig.GlobalHotKeyContainer.Find ( delegate(GlobalHotKey g) { return(g.Name == name); } ); if (global != null) { return(true); } return(false); }
public PreChordHotKeyEventArgs(LocalHotKey hotkey) { HotKey = hotkey; }
public LocalHotKeyEventArgs(LocalHotKey hotKey) { HotKey = hotKey; }
public HotKeyAlreadyRegisteredException(string message, LocalHotKey hotKey, Exception inner) : base(message, inner) { LocalKey = hotKey; }
public bool PreFilterMessage(ref Message m) { if (!Enabled) { return(false); } //Check if the form that the HotKeyManager is registered to is inactive. if (DisableOnManagerFormInactive) { if (Form.ActiveForm != null && this.ManagerForm != Form.ActiveForm) { return(false); } } //For LocalHotKeys, determine if modifiers Alt, Shift and Control is pressed. Microsoft.VisualBasic.Devices.Keyboard UserKeyBoard = new Microsoft.VisualBasic.Devices.Keyboard(); bool AltPressed = UserKeyBoard.AltKeyDown; bool ControlPressed = UserKeyBoard.CtrlKeyDown; bool ShiftPressed = UserKeyBoard.ShiftKeyDown; Modifiers LocalModifier = Modifiers.None; if (AltPressed) { LocalModifier = Modifiers.Alt; } if (ControlPressed) { LocalModifier |= Modifiers.Control; } if (ShiftPressed) { LocalModifier |= Modifiers.Shift; } switch ((KeyboardMessages)m.Msg) { case (KeyboardMessages.WmSyskeydown): case (KeyboardMessages.WmKeydown): Keys keydownCode = (Keys)(int)m.WParam & Keys.KeyCode; if (KeyPressEvent != null) { KeyPressEvent(this, new HotKeyEventArgs(keydownCode, LocalModifier, RaiseLocalEvent.OnKeyDown)); } //Check if a chord has started. if (InChordMode) { //Check if the Key down is a modifier, we'll have to wait for a real key. switch (keydownCode) { case Keys.Control: case Keys.ControlKey: case Keys.LControlKey: case Keys.RControlKey: case Keys.Shift: case Keys.ShiftKey: case Keys.LShiftKey: case Keys.RShiftKey: case Keys.Alt: case Keys.Menu: case Keys.LMenu: case Keys.RMenu: case Keys.LWin: return(true); } ChordHotKey ChordMain = Program.SysConfig.ChordHotKeyContainer.Find ( delegate(ChordHotKey cm) { return((cm.BaseKey == PreChordKey) && (cm.BaseModifier == PreChordModifier) && (cm.ChordKey == keydownCode) && (cm.ChordModifier == LocalModifier)); } ); if (ChordMain != null) { ChordMain.RaiseOnHotKeyPressed(); if (ChordPressed != null && ChordMain.Enabled == true) { ChordPressed(this, new ChordHotKeyEventArgs(ChordMain)); } InChordMode = false; return(true); } InChordMode = false; new Microsoft.VisualBasic.Devices.Computer().Audio.PlaySystemSound(System.Media.SystemSounds.Exclamation); return(true); } //Check for a LocalHotKey. LocalHotKey KeyDownHotkey = Program.SysConfig.LocalHotKeyContainer.Find ( delegate(LocalHotKey d) { return((d.Key == keydownCode) && (d.Modifier == LocalModifier) && (d.WhenToRaise == RaiseLocalEvent.OnKeyDown)); } ); if (KeyDownHotkey != null) { KeyDownHotkey.RaiseOnHotKeyPressed(); if (LocalHotKeyPressed != null && KeyDownHotkey.Enabled == true) { LocalHotKeyPressed(this, new LocalHotKeyEventArgs(KeyDownHotkey)); } return(KeyDownHotkey.SuppressKeyPress); } //Check for ChordHotKeys. ChordHotKey ChordBase = Program.SysConfig.ChordHotKeyContainer.Find ( delegate(ChordHotKey c) { return((c.BaseKey == keydownCode) && (c.BaseModifier == LocalModifier)); } ); if (ChordBase != null) { PreChordKey = ChordBase.BaseKey; PreChordModifier = ChordBase.BaseModifier; var e = new PreChordHotKeyEventArgs(new LocalHotKey(ChordBase.Name, ChordBase.BaseModifier, ChordBase.BaseKey)); if (ChordStarted != null) { ChordStarted(this, e); } InChordMode = !e.HandleChord; return(true); } InChordMode = false; return(false); case (KeyboardMessages.WmSyskeyup): case (KeyboardMessages.WmKeyup): Keys keyupCode = (Keys)(int)m.WParam & Keys.KeyCode; if (KeyPressEvent != null) { KeyPressEvent(this, new HotKeyEventArgs(keyupCode, LocalModifier, RaiseLocalEvent.OnKeyDown)); } LocalHotKey KeyUpHotkey = Program.SysConfig.LocalHotKeyContainer.Find ( delegate(LocalHotKey u) { return((u.Key == keyupCode) && (u.Modifier == LocalModifier) && (u.WhenToRaise == RaiseLocalEvent.OnKeyUp)); } ); if (KeyUpHotkey != null) { KeyUpHotkey.RaiseOnHotKeyPressed(); if (LocalHotKeyPressed != null && KeyUpHotkey.Enabled == true) { LocalHotKeyPressed(this, new LocalHotKeyEventArgs(KeyUpHotkey)); } return(KeyUpHotkey.SuppressKeyPress); } return(false); case (KeyboardMessages.WmHotKey): //var lpInt = (int)m.LParam; //Keys Key = (Keys)((lpInt >> 16) & 0xFFFF); //Modifiers modifier = (Modifiers)(lpInt & 0xFFFF); int Id = (int)m.WParam; GlobalHotKey Pressed = Program.SysConfig.GlobalHotKeyContainer.Find ( delegate(GlobalHotKey g) { return((g.Id == (int)Id)); } ); Pressed.RaiseOnHotKeyPressed(); if (GlobalHotKeyPressed != null) { GlobalHotKeyPressed(this, new GlobalHotKeyEventArgs(Pressed)); } return(true); default: return(false); } }
/// <summary>Compares this HotKey to another LocalHotKey. /// </summary> /// <param name="other">The LocalHotKey to compare.</param> /// <returns>True if equal, false otherwise.</returns> public bool Equals(LocalHotKey other) { return(BaseKey == other.Key && BaseModifier == other.Modifier); }
/// <summary>Creates a ChordHotKey object. /// </summary> /// <param name="name">The unique identifier for this ChordHotKey.</param> /// <param name="basekey">The key to start the chord.</param> /// <param name="basemodifier">The modifier associated with the base key.</param> /// <param name="ChordHotKey">The LocalHotKey object to extract the chord key and modifier from.</param> public ChordHotKey(string name, Modifiers basemodifier, Keys basekey, LocalHotKey ChordHotKey) : this(name, basemodifier, basekey, ChordHotKey, true) { }