Exemple #1
0
        //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();
        }
Exemple #2
0
        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;
                }
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 public Hotkey(Win32A.KeyModifiers p_modifiers, Keys p_key)
 {
     Modifiers = p_modifiers;
     Key       = p_key;
 }
Exemple #6
0
        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));
            }
        }