public void Update()
        {
            this.Old_keyboardState = this.keyboardState;
            this.keyboardState = Keyboard.GetState();
            this.Old_pressedKeys = pressedKeys_Constant;
            this.pressedKeys_Constant = keyboardState.GetPressedKeys();
            List<Keys> tempkeys = new List<Keys>();
            List<string> stringtempkeys = new List<string>();
            List<string> stringtempkeys2 = new List<string>();
            for (int i = 0; i < pressedKeys_Constant.Length; i++)
            {
                var stringkey = this.GetEnumName(this.pressedKeys_Constant[i]);
                var key = pressedKeys_Constant[i];

                stringtempkeys2.Add(stringkey);
                if (!this.Old_pressedKeys.Contains(key))
                {
                    stringtempkeys.Add(stringkey);
                    tempkeys.Add(key);
                }
            }
            this.PressedKeys = tempkeys.ToArray();
            this.StringKeys = stringtempkeys.ToArray();
            this.StringKeys_Constant = stringtempkeys2.ToArray();

            if (this.pressedKeys_Constant.Contains<Keys>(Keys.CapsLock))
            {
                if (this.CapsLock)
                {
                    this.CapsLock = false;
                }
                else
                {
                    this.CapsLock = true;
                }
            }

            FireDelegate(StringKeys_Constant.Length > 0, this.KeyboardKeys_Contant);
            FireDelegate(StringKeys.Length > 0, this.KeyboardKeys_Once);

            this.Old_MouseState = this.MouseState;
            this.MouseState = Mouse.GetState();

            this.Old_MouseScroll_Value = this.New_MouseScroll_Value;
            this.New_MouseScroll_Value = this.MouseState.ScrollWheelValue;
            this.MouseNormal = new Vector2((float)this.MouseState.X, (float)this.MouseState.Y);

            this.MouseScrollValueUP = Old_MouseScroll_Value < New_MouseScroll_Value;
            this.MouseScrollValueDown = Old_MouseScroll_Value > New_MouseScroll_Value;
            this.MouseScrollValueConstant = Old_MouseScroll_Value == New_MouseScroll_Value;
            FireDelegate(MouseScrollValueConstant == false, MouseWheel);

            this.X = (int)MouseNormal.X;
            this.Y = (int)MouseNormal.Y;

            this.mouseLeftClicked_Single = (this.MouseState.LeftButton == ButtonState.Pressed) && (this.Old_MouseState.LeftButton != this.MouseState.LeftButton);
            this.mouseMiddleClicked_Single = (this.MouseState.MiddleButton == ButtonState.Pressed) && (this.Old_MouseState.MiddleButton != this.MouseState.MiddleButton);
            this.mouseRightClicked_Single = (this.MouseState.RightButton == ButtonState.Pressed) && (this.Old_MouseState.RightButton != this.MouseState.RightButton);
            this.mouseButton1Clicked_Single = (this.MouseState.XButton1 == ButtonState.Pressed) && (this.Old_MouseState.XButton1 != this.MouseState.XButton1);
            this.mouseButton2Click_Single = (this.MouseState.XButton2 == ButtonState.Pressed) && (this.Old_MouseState.XButton2 != this.MouseState.XButton2);

            this.mouseLeftClicked_Continuous = (this.MouseState.LeftButton == ButtonState.Pressed);
            this.mouseMiddleClicked_Continuous = (this.MouseState.MiddleButton == ButtonState.Pressed);
            this.mouseRightClicked_Continuous = (this.MouseState.RightButton == ButtonState.Pressed);
            this.mouseButton1Clicked_Continuous = (this.MouseState.XButton1 == ButtonState.Pressed);
            this.mouseButton2Click_Continuous = (this.MouseState.XButton2 == ButtonState.Pressed);

            #region mousebuttomsDown

            this.Old_MouseButtonsDown_Constant = this.MouseButtonsDown_Constant;
            this.MouseButtonsDown_Constant = Mouse_Buttoms.None;
            this.MouseButtonsDown = Mouse_Buttoms.None;
            CheckButtom(this.MouseState.RightButton, ButtonState.Pressed, Mouse_Buttoms.Right, this.MouseButtonsDown_Constant, this.Old_MouseButtonsDown_Constant, this.MouseButtonsDown, out MouseButtonsDown_Constant, out MouseButtonsDown);
            CheckButtom(this.MouseState.LeftButton, ButtonState.Pressed, Mouse_Buttoms.Left, this.MouseButtonsDown_Constant, this.Old_MouseButtonsDown_Constant, this.MouseButtonsDown, out MouseButtonsDown_Constant, out MouseButtonsDown);
            CheckButtom(this.MouseState.MiddleButton, ButtonState.Pressed, Mouse_Buttoms.Middle, this.MouseButtonsDown_Constant, this.Old_MouseButtonsDown_Constant, this.MouseButtonsDown, out MouseButtonsDown_Constant, out MouseButtonsDown);
            CheckButtom(this.MouseState.XButton1, ButtonState.Pressed, Mouse_Buttoms.XButton1, this.MouseButtonsDown_Constant, this.Old_MouseButtonsDown_Constant, this.MouseButtonsDown, out MouseButtonsDown_Constant, out MouseButtonsDown);
            CheckButtom(this.MouseState.XButton2, ButtonState.Pressed, Mouse_Buttoms.XButton2, this.MouseButtonsDown_Constant, this.Old_MouseButtonsDown_Constant, this.MouseButtonsDown, out MouseButtonsDown_Constant, out MouseButtonsDown);
            FireDelegate(MouseButtonsDown_Constant != Mouse_Buttoms.None, this.MouseDown_Constant);
            FireDelegate(MouseButtonsDown != Mouse_Buttoms.None, this.MouseDown);

            #endregion

            #region mousebuttomsUp

            this.Old_MouseButtonsUp_Constant = this.MouseButtonsUp_Constant;
            this.MouseButtonsUp_Constant = Mouse_Buttoms.None;
            this.MouseButtonsUp = Mouse_Buttoms.None;
            CheckButtom(this.MouseState.RightButton, ButtonState.Released, Mouse_Buttoms.Right, this.MouseButtonsUp_Constant, this.Old_MouseButtonsUp_Constant, this.MouseButtonsUp, out MouseButtonsUp_Constant, out this.MouseButtonsUp);
            CheckButtom(this.MouseState.LeftButton, ButtonState.Released, Mouse_Buttoms.Left, this.MouseButtonsUp_Constant, this.Old_MouseButtonsUp_Constant, this.MouseButtonsUp, out MouseButtonsUp_Constant, out this.MouseButtonsUp);
            CheckButtom(this.MouseState.MiddleButton, ButtonState.Released, Mouse_Buttoms.Middle, this.MouseButtonsUp_Constant, this.Old_MouseButtonsUp_Constant, this.MouseButtonsUp, out MouseButtonsUp_Constant, out this.MouseButtonsUp);
            CheckButtom(this.MouseState.XButton1, ButtonState.Released, Mouse_Buttoms.XButton1, this.MouseButtonsUp_Constant, this.Old_MouseButtonsUp_Constant, this.MouseButtonsUp, out MouseButtonsUp_Constant, out this.MouseButtonsUp);
            CheckButtom(this.MouseState.XButton2, ButtonState.Released, Mouse_Buttoms.XButton2, this.MouseButtonsUp_Constant, this.Old_MouseButtonsUp_Constant, this.MouseButtonsUp, out MouseButtonsUp_Constant, out this.MouseButtonsUp);
            FireDelegate(MouseButtonsUp_Constant != Mouse_Buttoms.None, this.MouseUp_Constant);
            FireDelegate(MouseButtonsUp != Mouse_Buttoms.None, this.MouseUp);

            #endregion

            if (Old_MouseNormal != MouseNormal)
            {
                if (this.MouseMouse != null)
                {
                    this.MouseMouse(this);
                }
                Old_MouseNormal = MouseNormal;
            }
            if (this.ConstantCall != null)
            {
                this.ConstantCall(this);
            }
        }
        private void CheckButtom(ButtonState buttonState, ButtonState buttostatetockeck, Mouse_Buttoms buttomtockeck, Mouse_Buttoms constant, Mouse_Buttoms oldconstant, Mouse_Buttoms once, out Mouse_Buttoms Constant, out Mouse_Buttoms Once)
        {
            if (buttonState == buttostatetockeck)
            {
                //constant
                if (constant == Mouse_Buttoms.None)
                {
                    constant = buttomtockeck;
                }
                else
                {
                    constant |= buttomtockeck;
                }
                //once
                if (!oldconstant.HasFlag(buttomtockeck))
                {
                    if (once == Mouse_Buttoms.None)
                    {
                        once = buttomtockeck;
                    }
                    else
                    {
                        once |= buttomtockeck;
                    }
                }
            }

            Once = once;
            Constant = constant;
        }
        public InputHelper(   )
        {
            this.MouseButtonsDown_Constant = new Mouse_Buttoms();
            this.MouseButtonsDown = new Mouse_Buttoms();

            this.MouseButtonsUp_Constant = new Mouse_Buttoms();
            this.MouseButtonsUp = new Mouse_Buttoms();
        }