Ejemplo n.º 1
0
        private static void UpdateFrame()
        {
            keyUpStack.Clear();
            keyDownStack.Clear();

            for (int i = activeKeyList.Count - 1; i >= 0; i--)
            {
                WinKey key = activeKeyList[i];

                bool onHold = GetAsyncKeyStateHoldWinKey(key);
                if (keyHoldList.Contains(key))
                {
                    if (!onHold)
                    {
                        keyUpStack.Push(key);
                        keyHoldList.RemoveAll(x => x == key);
                    }
                }
                else
                {
                    if (onHold)
                    {
                        keyDownStack.Push(key);
                        keyHoldList.Add(key);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public static bool GetKeyText(WinKey key)
        {
            RegisterActiveKey(key);
            if (!CheckCondition())
            {
                return(false);
            }

            if (keyDownStack.Contains(key))
            {
                currentTextKey = key;
                textKeyTimer   = TextKeyDelayMillisec;
                return(true);
            }
            else
            {
                if (key == currentTextKey && keyHoldList.Contains(key))
                {
                    if (textKeyTimer <= 0)
                    {
                        textKeyTimer = TextKeyFireDelayMillisec;
                        return(true);
                    }
                    else
                    {
                        textKeyTimer -= ownerCore.DeltaMilliseconds;
                        return(false);
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 3
0
 private static void RegisterActiveKey(WinKey key)
 {
     if (!activeKeyList.Contains(key))
     {
         activeKeyList.Add(key);
     }
 }
Ejemplo n.º 4
0
        public static bool GetKeyDown(WinKey key)
        {
            RegisterActiveKey(key);
            if (!CheckCondition())
            {
                return(false);
            }

            return(keyDownStack.Contains(key));
        }
Ejemplo n.º 5
0
        public static bool GetKeyUp(WinKey key)
        {
            RegisterActiveKey(key);
            if (!CheckCondition())
            {
                return(false);
            }

            if (keyUpStack.Contains(key))
            {
                return(true);
            }
            else if (!keyHoldList.Contains(key))
            {
                if (GetAsyncKeyState(GetVKCode(key)) != 0)
                {
                    keyHoldList.Add(key);
                    keyDownStack.Push(key);
                }
            }
            return(false);
        }
Ejemplo n.º 6
0
 private static bool GetAsyncKeyStateHoldWinKey(WinKey key)
 {
     return(GetAsyncKeyStateAuto(GetVKCode(key)));
 }
Ejemplo n.º 7
0
        private static int GetVKCode(WinKey key)
        {
            switch (key)
            {
            case WinKey.MouseLeft:
                return(0x01);

            case WinKey.MouseRight:
                return(0x02);

            case WinKey.MouseMiddle:
                return(0x04);

            case WinKey.MouseX1:
                return(0x05);

            case WinKey.MouseX2:
                return(0x06);

            case WinKey.MouseUndefined:
                return(0x07);

            case WinKey.A:
            case WinKey.B:
            case WinKey.C:
            case WinKey.D:
            case WinKey.E:
            case WinKey.F:
            case WinKey.G:
            case WinKey.H:
            case WinKey.I:
            case WinKey.J:
            case WinKey.K:
            case WinKey.L:
            case WinKey.M:
            case WinKey.N:
            case WinKey.O:
            case WinKey.P:
            case WinKey.Q:
            case WinKey.R:
            case WinKey.S:
            case WinKey.T:
            case WinKey.U:
            case WinKey.V:
            case WinKey.W:
            case WinKey.X:
            case WinKey.Y:
            case WinKey.Z:
                return(0x41 + ((int)key - (int)WinKey.A));

            case WinKey.Backspace:
                return(0x08);

            case WinKey.Tab:
                return(0x09);

            case WinKey.Clear:
                return(0x0C);

            case WinKey.Return:
                return(0x0D);

            case WinKey.Pause:
                return(0x13);

            case WinKey.Escape:
                return(0x1B);

            case WinKey.Space:
                return(0x20);

            case WinKey.Exclaim:
                return(0x31);

            case WinKey.DoubleQuote:
                return(0xDE);

            case WinKey.Hash:
                return(0x33);

            case WinKey.Dollar:
                return(0x34);

            case WinKey.Ampersand:
                return(0x37);

            case WinKey.Quote:
                return(0xDE);

            case WinKey.LeftParen:
                return(0x39);

            case WinKey.RightParen:
                return(0x30);

            case WinKey.Asterisk:
                return(0x13);

            case WinKey.Equals:
            case WinKey.Plus:
                return(0xBB);

            case WinKey.Less:
            case WinKey.Comma:
                return(0xBC);

            case WinKey.Underscore:
            case WinKey.Minus:
                return(0xBD);

            case WinKey.Greater:
            case WinKey.Period:
                return(0xBE);

            case WinKey.Question:
            case WinKey.Slash:
                return(0xBF);

            case WinKey.Alpha0:
            case WinKey.Alpha1:
            case WinKey.Alpha2:
            case WinKey.Alpha3:
            case WinKey.Alpha4:
            case WinKey.Alpha5:
            case WinKey.Alpha6:
            case WinKey.Alpha7:
            case WinKey.Alpha8:
            case WinKey.Alpha9:
                return(0x30 + ((int)key - (int)WinKey.Alpha0));

            case WinKey.Colon:
            case WinKey.Semicolon:
                return(0xBA);

            case WinKey.At:
                return(0x32);

            case WinKey.LeftBracket:
                return(0xDB);

            case WinKey.Backslash:
                return(0xDC);

            case WinKey.RightBracket:
                return(0xDD);

            case WinKey.Caret:
                return(0x36);

            case WinKey.BackQuote:
                return(0xC0);

            case WinKey.Delete:
                return(0x2E);

            case WinKey.Keypad0:
            case WinKey.Keypad1:
            case WinKey.Keypad2:
            case WinKey.Keypad3:
            case WinKey.Keypad4:
            case WinKey.Keypad5:
            case WinKey.Keypad6:
            case WinKey.Keypad7:
            case WinKey.Keypad8:
            case WinKey.Keypad9:
                return(0x60 + ((int)key - (int)WinKey.Keypad0));

            case WinKey.KeypadPeriod:
                return(0x6E);

            case WinKey.KeypadDivide:
                return(0x6F);

            case WinKey.KeypadMultiply:
                return(0x6A);

            case WinKey.KeypadMinus:
                return(0x6D);

            case WinKey.KeypadPlus:
                return(0x6B);

            case WinKey.KeypadEnter:
                return(0x6C);

            case WinKey.UpArrow:
                return(0x26);

            case WinKey.DownArrow:
                return(0x28);

            case WinKey.RightArrow:
                return(0x27);

            case WinKey.LeftArrow:
                return(0x25);

            case WinKey.Insert:
                return(0x2D);

            case WinKey.Home:
                return(0x24);

            case WinKey.End:
                return(0x23);

            case WinKey.PageUp:
                return(0x21);

            case WinKey.PageDown:
                return(0x22);

            case WinKey.F1:
            case WinKey.F2:
            case WinKey.F3:
            case WinKey.F4:
            case WinKey.F5:
            case WinKey.F6:
            case WinKey.F7:
            case WinKey.F8:
            case WinKey.F9:
            case WinKey.F10:
            case WinKey.F11:
            case WinKey.F12:
            case WinKey.F13:
            case WinKey.F14:
            case WinKey.F15:
                return(0x70 + ((int)key - (int)WinKey.F1));

            case WinKey.Numlock:
                return(0x90);

            case WinKey.CapsLock:
                return(0x14);

            case WinKey.ScrollLock:
                return(0x91);

            case WinKey.RightShift:
                return(0xA1);

            case WinKey.LeftShift:
                return(0xA0);

            case WinKey.RightControl:
                return(0xA3);

            case WinKey.LeftControl:
                return(0xA2);

            case WinKey.RightAlt:
                return(0xA5);

            case WinKey.LeftAlt:
                return(0xA4);

            case WinKey.Help:
                return(0xE3);

            case WinKey.Print:
                return(0x2A);

            case WinKey.SysReq:
                return(0x2C);

            case WinKey.Break:
                return(0x03);

            case WinKey.Kor_Eng:
                return(0x21);

            case WinKey.LeftWindows:
            case WinKey.LeftApple:
                return(0x5b);
            }
            return(0);
        }