示例#1
0
        private void GKH_KeyUp(object sender, KeyEventArgsEx e)
        {
            if (gkh.HookForAny)
            {
                mouse_panel.Focus();
                e.Handled = true;
            }
            else
            {
                if (Simulate)
                {
                    if (IsToSimulate(e))
                    {
                        SimulateKeyUp(e);
                        e.Handled = true;
                    }
                }

                if (e.Key == Exchange.Preference.Activation)
                {
                    KeyState.Activation = ButtonState.Up;
                    e.Handled           = true;
                }
            }
        }
示例#2
0
        private void GKH_KeyDown(object sender, KeyEventArgsEx e)
        {
            if (gkh.HookForAny)
            {
                AssignKey(e);
                e.Handled = true;
            }
            else
            {
                if (Simulate)
                {
                    if (IsToSimulate(e))
                    {
                        SimulateKeyDown(e);
                        e.Handled = true;
                    }
                }

                if (e.Key == Exchange.Preference.Activation && KeyState.Activation == ButtonState.Up)
                {
                    GKH_GlobalKeyPress(this, new EventArgs());
                    KeyState.Activation = ButtonState.Down;
                    e.Handled           = true;
                }
            }
        }
示例#3
0
        /// <summary>
        /// The callback for the keyboard hook
        /// </summary>
        /// <param name="code">The hook code, if it isn't >= 0, the function shouldn't do anyting</param>
        /// <param name="wParam">The event type</param>
        /// <param name="lParam">The keyhook event information</param>
        /// <returns></returns>
        public int hookProc(int code, int wParam, ref keyboardHookStruct lParam)
        {
            if (code >= 0)
            {
                bool extended = (lParam.flags & LLKHF_EXTENDED) == LLKHF_EXTENDED;

                Console.WriteLine(string.Format("Scan Code: {0} Virtual Key Code: {1} Is Extended: {2} Flag: {3} Extra Info: {4}", lParam.scanCode, lParam.vkCode, extended.ToString(), lParam.flags, lParam.dwExtraInfo));

                ExtendedKey key = new ExtendedKey((Keys)lParam.vkCode, extended, lParam.scanCode);

                if (HookedKeys.Contains(key) || HookForAny)
                {
                    KeyEventArgsEx kea = new KeyEventArgsEx(key);

                    if ((wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) && (KeyDown != null))
                    {
                        KeyDown(this, kea);
                    }
                    else if ((wParam == WM_KEYUP || wParam == WM_SYSKEYUP) && (KeyUp != null))
                    {
                        KeyUp(this, kea);
                    }
                    if (kea.Handled)
                    {
                        return(1);
                    }
                }
            }

            return(CallNextHookEx(hhook, code, wParam, ref lParam));
        }
示例#4
0
 private bool IsToSimulate(KeyEventArgsEx e)
 {
     foreach (KeyInput KI in KeyInputs)
     {
         if (e.Key == KI.Key)
         {
             return(true);
         }
     }
     return(false);
 }
示例#5
0
        private void SimulateKeyUp(KeyEventArgsEx e)
        {
            if (e.Key == up_left.Key)
            {
                KeyState.UpLeft = ButtonState.Up;
            }
            if (e.Key == up_right.Key)
            {
                KeyState.UpRight = ButtonState.Up;
            }
            if (e.Key == down_left.Key)
            {
                KeyState.DownLeft = ButtonState.Up;
            }
            if (e.Key == down_right.Key)
            {
                KeyState.DownRight = ButtonState.Up;
            }

            if (e.Key == left.Key)
            {
                KeyState.Left = ButtonState.Up;
            }

            if (e.Key == right.Key)
            {
                KeyState.Right = ButtonState.Up;
            }

            if (KeyState.Left == ButtonState.Up && KeyState.Right == ButtonState.Up && AllDiagonalUp())
            {
                KeyState.ih = 0;
            }

            if (e.Key == up.Key)
            {
                KeyState.Up = ButtonState.Up;
            }

            if (e.Key == down.Key)
            {
                KeyState.Down = ButtonState.Up;
            }

            if (KeyState.Up == ButtonState.Up && KeyState.Down == ButtonState.Up && AllDiagonalUp())
            {
                KeyState.iv = 0;
            }

            if (e.Key == wheel_up.Key)
            {
                KeyState.WheelUp = ButtonState.Up;
            }

            if (e.Key == wheel_down.Key)
            {
                KeyState.WheelDown = ButtonState.Up;
            }

            if (KeyState.WheelUp == ButtonState.Up && KeyState.Down == ButtonState.Up)
            {
                KeyState.iw = 0;
            }

            if (e.Key == lmb.Key && MouseState.LeftButton != ButtonState.Up)
            {
                msim.ButtonUp(Buttons.LMB);
                MouseState.LeftButton = ButtonState.Up;
            }

            if (e.Key == rmb.Key && MouseState.RightButton != ButtonState.Up)
            {
                msim.ButtonUp(Buttons.RMB);
                MouseState.RightButton = ButtonState.Up;
            }

            if (e.Key == mmb.Key && MouseState.MiddleButton != ButtonState.Up)
            {
                msim.ButtonUp(Buttons.MMB);
                MouseState.MiddleButton = ButtonState.Up;
            }

            if (e.Key == Exchange.Preference.DoubleClick)
            {
                KeyState.DoubleClick = ButtonState.Up;
            }

            if (e.Key == Exchange.Preference.Drag)
            {
                KeyState.Drag = ButtonState.Up;
            }
        }
示例#6
0
        private void SimulateKeyDown(KeyEventArgsEx e)
        {
            int max_ma = Exchange.Preference.MaxSpeed;
            int max_wa = Exchange.Preference.MaxWheelSpeed;

            if (e.Key == up_left.Key)
            {
                KeyState.UpLeft = ButtonState.Down;
            }
            if (e.Key == up_right.Key)
            {
                KeyState.UpRight = ButtonState.Down;
            }
            if (e.Key == down_left.Key)
            {
                KeyState.DownLeft = ButtonState.Down;
            }
            if (e.Key == down_right.Key)
            {
                KeyState.DownRight = ButtonState.Down;
            }

            if (e.Key == left.Key)
            {
                KeyState.Left = ButtonState.Down;
            }

            if (e.Key == right.Key)
            {
                KeyState.Right = ButtonState.Down;
            }

            if (KeyState.Left == ButtonState.Down || KeyState.Right == ButtonState.Down || AnyDiagonalDown())
            {
                KeyState.ih += Exchange.Preference.MovementAcceleration;
                if (KeyState.ih > max_ma)
                {
                    KeyState.ih = max_ma;
                }
            }

            if (e.Key == up.Key)
            {
                KeyState.Up = ButtonState.Down;
            }

            if (e.Key == down.Key)
            {
                KeyState.Down = ButtonState.Down;
            }

            if (KeyState.Up == ButtonState.Down || KeyState.Down == ButtonState.Down || AnyDiagonalDown())
            {
                KeyState.iv += Exchange.Preference.MovementAcceleration;
                if (KeyState.iv > max_ma)
                {
                    KeyState.iv = max_ma;
                }
            }

            if (e.Key == wheel_up.Key)
            {
                KeyState.WheelUp = ButtonState.Down;
            }

            if (e.Key == wheel_down.Key)
            {
                KeyState.WheelDown = ButtonState.Down;
            }

            if (KeyState.WheelUp == ButtonState.Down || KeyState.WheelDown == ButtonState.Down)
            {
                KeyState.iw += Exchange.Preference.WheelAcceleration;
                if (KeyState.iw > max_wa)
                {
                    KeyState.iw = max_wa;
                }
            }

            if (e.Key == lmb.Key && MouseState.LeftButton != ButtonState.Down)
            {
                msim.ButtonDown(Buttons.LMB);
                MouseState.LeftButton = ButtonState.Down;
            }

            if (e.Key == rmb.Key && MouseState.RightButton != ButtonState.Down)
            {
                msim.ButtonDown(Buttons.RMB);
                MouseState.RightButton = ButtonState.Down;
            }

            if (e.Key == mmb.Key && MouseState.MiddleButton != ButtonState.Down)
            {
                msim.ButtonDown(Buttons.MMB);
                MouseState.MiddleButton = ButtonState.Down;
            }

            if (e.Key == Exchange.Preference.Drag && KeyState.Drag == ButtonState.Up)
            {
                if (MouseState.LeftButton == ButtonState.Up)
                {
                    msim.ButtonDown(Buttons.LMB);
                    MouseState.LeftButton = ButtonState.Down;
                }
                else if (MouseState.LeftButton == ButtonState.Down)
                {
                    msim.ButtonUp(Buttons.LMB);
                    MouseState.LeftButton = ButtonState.Up;
                }

                KeyState.Drag = ButtonState.Down;
            }

            if (e.Key == Exchange.Preference.DoubleClick && KeyState.DoubleClick == ButtonState.Up)
            {
                KeyState.DoubleClick = ButtonState.Down;

                msim.ButtonDown(Buttons.LMB);
                System.Threading.Thread.Sleep(Exchange.Preference.ClickSpeed);
                msim.ButtonUp(Buttons.LMB);
                System.Threading.Thread.Sleep(Exchange.Preference.DoubleClickDelay);
                msim.ButtonDown(Buttons.LMB);
                System.Threading.Thread.Sleep(Exchange.Preference.ClickSpeed);
                msim.ButtonUp(Buttons.LMB);
            }
        }
示例#7
0
        private void AssignKey(KeyEventArgsEx e)
        {
            if (e.KeyCode != Keys.Escape)
            {
                if (current.Name != "activation")
                {
                    if (e.Key == Exchange.Preference.Activation)
                    {
                        MessageBox.Show("You may not assign currently assigned activation key for other use, please change the activation key first", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }

                current.Key = e.Key;
                gkh.HookedKeys[KeyInputs.IndexOf(current)] = current.Key;

                foreach (KeyInput ki in KeyInputs)
                {
                    if (ki != current && ki.Key == e.Key)
                    {
                        ki.Key = new ExtendedKey();
                    }
                }

                if (current.Name == "activation")
                {
                    if (Simulate)
                    {
                        start_button.Text = "Stop (" + current.Key.ToString() + ")";
                    }
                    else
                    {
                        start_button.Text = "Start (" + current.Key.ToString() + ")";
                    }
                }

                switch (current.Name)
                {
                case "lmb": Exchange.Preference.LMB = current.Key; break;

                case "rmb": Exchange.Preference.RMB = current.Key; break;

                case "mmb": Exchange.Preference.MMB = current.Key; break;

                case "wheel_up": Exchange.Preference.WheelUp = current.Key; break;

                case "wheel_down": Exchange.Preference.WheelDown = current.Key; break;

                case "left": Exchange.Preference.Left = current.Key; break;

                case "right": Exchange.Preference.Right = current.Key; break;

                case "up": Exchange.Preference.Up = current.Key; break;

                case "down": Exchange.Preference.Down = current.Key; break;

                case "activation": Exchange.Preference.Activation = current.Key; break;

                case "double_click": Exchange.Preference.DoubleClick = current.Key; break;

                case "drag": Exchange.Preference.Drag = current.Key; break;

                case "up_left": Exchange.Preference.UpLeft = current.Key; break;

                case "up_right": Exchange.Preference.UpRight = current.Key; break;

                case "down_left": Exchange.Preference.DownLeft = current.Key; break;

                case "down_right": Exchange.Preference.DownRight = current.Key; break;
                }

                Exchange.Preference.Save();
            }
        }