//private const int KF_EXTENDED 0x0100 //private const int KF_DLGMODE 0x0800 //private const int KF_MENUMODE 0x1000 //private const int KF_ALTDOWN 0x2000 //private const int KF_REPEAT 0x4000 //private const int KF_UP 0x8000 //------ // ReSharper restore CommentTypo // ReSharper restore InconsistentNaming private void AcceptNewHotkey(Message p_message) { var newHotkey = NewHotkey; if (m_firstPressing) { m_firstPressing = false; newHotkey.Key = Keys.None; newHotkey.Modifiers = Win32A.KeyModifiers.None; } Keys key; key = GetVkKey(p_message); Debug.Print(key.ToString()); if (key == Keys.ControlKey) { newHotkey.Modifiers |= Win32A.KeyModifiers.Ctrl; m_pressedKeyModifiers |= Win32A.KeyModifiers.Ctrl; } else if (key == Keys.ShiftKey) { newHotkey.Modifiers |= Win32A.KeyModifiers.Shift; m_pressedKeyModifiers |= Win32A.KeyModifiers.Shift; } else if ((key == Keys.LWin) || (key == Keys.RWin)) { newHotkey.Modifiers |= Win32A.KeyModifiers.Win; m_pressedKeyModifiers |= Win32A.KeyModifiers.Win; } else if (key == Keys.Menu) { newHotkey.Modifiers |= Win32A.KeyModifiers.Alt; m_pressedKeyModifiers |= Win32A.KeyModifiers.Alt; } else if ((key == Keys.Back) && (m_pressedKeyModifiers == Win32A.KeyModifiers.None)) { newHotkey.Key = Keys.None; newHotkey.Modifiers = Win32A.KeyModifiers.None; m_hotkeyAccepted = false; } else { newHotkey.Key = key; if (newHotkey.Modifiers != Win32A.KeyModifiers.None) { m_hotkeyAccepted = true; } } NewHotkey = newHotkey; OnHotkeyAccepted(); }
public static string GetDescription(this Win32A.KeyModifiers p_value) { if (p_value == Win32A.KeyModifiers.None) { return(p_value.ToString()); } var result = string.Empty; var firstMod = true; result += KeyModifierToString(p_value, Win32A.KeyModifiers.Ctrl, ref firstMod); result += KeyModifierToString(p_value, Win32A.KeyModifiers.Alt, ref firstMod); result += KeyModifierToString(p_value, Win32A.KeyModifiers.Shift, ref firstMod); result += KeyModifierToString(p_value, Win32A.KeyModifiers.Win, ref firstMod); return(result); }
protected override void WndProc(ref Message msg) { base.WndProc(ref msg); if (msg.Msg == (int)Win32A.WindowsMessages.WM_HOTKEY) { var lParam = msg.LParam.ToInt32(); Keys key = (Keys)((lParam >> 16) & 0xFFFF); Win32A.KeyModifiers modifier = (Win32A.KeyModifiers)(lParam & 0xFFFF); int hotkeyId = msg.WParam.ToInt32(); if (m_pipeReader.EnabledWritingFile && m_pipeReader.IsConnectionAccepted) { m_pipeReader.StopWritingFile(); } else { m_pipeReader.EnabledWritingFile = true; } } }
private static string KeyModifierToString(Win32A.KeyModifiers p_value, Win32A.KeyModifiers modifier, ref bool firstMod) { string result = string.Empty; if ((p_value & modifier) != 0) { if (firstMod) { result += modifier; } else { result += "+" + modifier; } firstMod = false; } return(result); }
public Hotkey(Win32A.KeyModifiers p_modifiers, Keys p_key) { Modifiers = p_modifiers; Key = p_key; }
protected override bool ProcessKeyPreview(ref Message p_message) { if (p_message.HWnd != txtHotkeyEditor.Handle) { return(base.ProcessKeyPreview(ref p_message)); } var msg = (Win32A.WindowsMessages)p_message.Msg; var newHotkey = NewHotkey; Keys key; switch (msg) { case Win32A.WindowsMessages.WM_KEYDOWN: case Win32A.WindowsMessages.WM_SYSKEYDOWN: if (ReadFlag(p_message.LParam, KF_REPEAT)) { return(true); } break; default: break; } Debug.Print(msg.ToString()); switch (msg) { case Win32A.WindowsMessages.WM_SYSKEYDOWN: Debug.Print(p_message.LParam.ToString("X16")); newHotkey.Modifiers |= Win32A.KeyModifiers.Alt; AcceptNewHotkey(p_message); ShowPressedKeys(); return(true); case Win32A.WindowsMessages.WM_KEYDOWN: Debug.Print(p_message.LParam.ToString("X16")); AcceptNewHotkey(p_message); ShowPressedKeys(); return(true); case Win32A.WindowsMessages.WM_SYSKEYUP: key = GetVkKey(p_message); if (m_hotkeyAccepted) { if (key == Keys.ControlKey) { m_pressedKeyModifiers &= ~Win32A.KeyModifiers.Ctrl; } else if (key == Keys.ShiftKey) { m_pressedKeyModifiers &= ~Win32A.KeyModifiers.Shift; } else if ((key == Keys.LWin) || (key == Keys.RWin)) { m_pressedKeyModifiers &= ~Win32A.KeyModifiers.Win; } m_pressedKeyModifiers &= ~Win32A.KeyModifiers.Alt; ShowPressedKeys(); } else { newHotkey.Modifiers &= ~Win32A.KeyModifiers.Alt; } NewHotkey = newHotkey; ShowPressedKeys(); return(true); case Win32A.WindowsMessages.WM_KEYUP: key = GetVkKey(p_message); Debug.Print(key + " -keyup"); if (false == m_hotkeyAccepted) { if (key == Keys.ControlKey) { newHotkey.Modifiers &= ~Win32A.KeyModifiers.Ctrl; } else if (key == Keys.ShiftKey) { newHotkey.Modifiers &= ~Win32A.KeyModifiers.Shift; } else if ((key == Keys.LWin) || (key == Keys.RWin)) { newHotkey.Modifiers &= ~Win32A.KeyModifiers.Win; } else if (key == Keys.Menu) { newHotkey.Modifiers &= ~Win32A.KeyModifiers.Alt; } else { if (newHotkey.Modifiers == Win32A.KeyModifiers.None) { newHotkey.Key &= ~key; } else if (newHotkey.Key != Keys.None) { m_hotkeyAccepted = true; } } } else { if (key == Keys.ControlKey) { m_pressedKeyModifiers &= ~Win32A.KeyModifiers.Ctrl; } else if (key == Keys.ShiftKey) { m_pressedKeyModifiers &= ~Win32A.KeyModifiers.Shift; } else if ((key == Keys.LWin) || (key == Keys.RWin)) { m_pressedKeyModifiers &= ~Win32A.KeyModifiers.Win; } else if (key == Keys.Menu) { m_pressedKeyModifiers &= ~Win32A.KeyModifiers.Alt; } } NewHotkey = newHotkey; ShowPressedKeys(); return(true); case Win32A.WindowsMessages.WM_CHAR: return(true); default: return(base.ProcessKeyPreview(ref p_message)); } }