Example #1
0
 /// <summary>
 /// 获取默认的一套IBatis Map的 各项操作Key
 /// </summary>
 /// <param name="state">标记值</param>
 /// <returns>默认操作标记</returns>
 private string GetKeyExp(KeyFlag state)
 {
     if (DefaultKey == null)
     {
         throw new Exception("Error : DefaultKey is Null !");
     }
     return(state.ToString() + DefaultKey);
 }
        public static void SendKey(uint keyCode, KeyFlag keyFlag)
        {
            INPUT InputData = new INPUT();

            InputData.type        = 1;
            InputData.ki.scanCode = (ushort)keyCode;
            InputData.ki.flags    = (uint)keyFlag;
            Console.WriteLine(InputData.ki.scanCode);
            Console.WriteLine(keyCode);
            SendInput((uint)1, ref InputData, (int)Marshal.SizeOf(typeof(INPUT)));
        }
Example #3
0
        public static void SendKey(uint keyCode, KeyFlag keyFlag) {
            INPUT InputData = new INPUT();

            InputData.type = 1;
            InputData.ki.scanCode = (ushort)keyCode;
            InputData.ki.flags = (uint)keyFlag;
            Console.WriteLine(InputData.ki.scanCode);
            Console.WriteLine(keyCode);

            SendInput((uint)1, ref InputData, (int)Marshal.SizeOf(typeof(INPUT)));
        }
        public static void SendKey(short keyCode, KeyFlag keyFlag)
        {
            INPUT[] InputData = new INPUT[1];

            InputData[0].type             = 1;
            InputData[0].U.ki.wScan       = (ScanCodeShort)(MapVKey((uint)keyCode, MappingType.MAPVK_VK_TO_VSC)); // 0x14 = T for example
            InputData[0].U.ki.dwFlags     = (KEYEVENTF)(keyFlag);
            InputData[0].U.ki.time        = 0;
            InputData[0].U.ki.dwExtraInfo = UIntPtr.Zero;

            SendInput(1, InputData, Marshal.SizeOf(typeof(INPUT)));
        }
Example #5
0
        public static void SendInput(short keycode, KeyFlag keyFlag)
        {
            var inputData = new Input[1];

            inputData[0].type           = 1;
            inputData[0].ki.wScan       = keycode;
            inputData[0].ki.dwFlags     = (int)keyFlag;
            inputData[0].ki.time        = 0;
            inputData[0].ki.dwExtraInfo = IntPtr.Zero;

            SendInput(1, inputData, Marshal.SizeOf(typeof(Input)));
        }
Example #6
0
        private int HookProcedureCallback(int code, IntPtr wParam, IntPtr lParam)
        {
            if (code < 0)
            {
                return(CallNextHookEx(IntPtr.Zero, code, wParam, lParam));
            }

            KeyFlag         flag       = (KeyFlag)wParam;
            KBDLLHOOKSTRUCT hookStruct = Marshal.PtrToStructure <KBDLLHOOKSTRUCT>(lParam);

            uint             key = hookStruct.virtualKeyCode;
            bool             isExtendedKey;
            bool             isAltPressed;
            KeyStatus        keyStatus;
            KeyInjectionType injectionType;
            DateTime         timeStamp = new DateTime(hookStruct.time);

            uint bit1 = (hookStruct.flags & 0b1);
            uint bit2 = (hookStruct.flags & 0b10) >> 1;
            uint bit5 = (hookStruct.flags & 0b10000) >> 4;
            uint bit6 = (hookStruct.flags & 0b100000) >> 5;
            uint bit8 = (hookStruct.flags & 0b10000000) >> 7;

            isExtendedKey = (bit1 == 1);
            isAltPressed  = (bit6 == 1);
            keyStatus     = (bit8 == 1) ? KeyStatus.Released : KeyStatus.Pressed;

            if (bit2 == 1)
            {
                injectionType = KeyInjectionType.LowIntegrityInjected;
            }
            else if (bit5 == 1)
            {
                injectionType = KeyInjectionType.Injected;
            }
            else
            {
                injectionType = KeyInjectionType.NonInjected;
            }

            HookActivated?.Invoke(
                key: key,
                injectionType: injectionType,
                isExtendedKey: isExtendedKey,
                isAltPressed: isAltPressed,
                keyStatus: keyStatus
                );

            return(CallNextHookEx(IntPtr.Zero, code, wParam, lParam));
        }
Example #7
0
 public CreateKeySpec(
     ushort position,
     ushort length,
     KeyFlag flag,
     byte extendedKeyType,
     byte nullValue,
     sbyte keyNumber,
     byte acsNumber)
     : base(
         position,
         length,
         flag,
         extendedKeyType,
         nullValue,
         keyNumber,
         acsNumber)
 {
 }
Example #8
0
 internal StatKeySpec(
     ushort position,
     ushort length,
     KeyFlag flag,
     uint unduplicatedKeyValueCount,
     byte extendedKeyType,
     byte nullValue,
     sbyte keyNumber,
     byte acsNumber)
     : base(position,
         length,
         flag,
         extendedKeyType,
         nullValue,
         keyNumber,
         acsNumber)
 {
     this.UnduplicatedKeyValueCount = unduplicatedKeyValueCount;
 }
Example #9
0
 internal StatKeySpec(
     ushort position,
     ushort length,
     KeyFlag flag,
     uint unduplicatedKeyValueCount,
     byte extendedKeyType,
     byte nullValue,
     sbyte keyNumber,
     byte acsNumber)
     : base(
         position,
         length,
         flag,
         extendedKeyType,
         nullValue,
         keyNumber,
         acsNumber)
 {
     this.UnduplicatedKeyValueCount = unduplicatedKeyValueCount;
 }
Example #10
0
        protected KeySpec(
            ushort position,
            ushort length,
            KeyFlag flag,
            byte extendedKeyType,
            byte nullValue,
            sbyte keyNumber,
            byte acsNumber)
        {
            if (position == ushort.MaxValue) {
                throw new ArgumentOutOfRangeException();
            }

            this.Position = position;
            this.Length = length;
            this.Flag = flag;
            this.ExtendedKeyType = extendedKeyType;
            this.NullValue = nullValue;
            this.Number = keyNumber;
            this.AcsNumber = acsNumber;
        }
Example #11
0
        public virtual void Update()
        {
            if (lastUpdateFrame != Time.frameCount)
            {
                lastUpdateFrame = Time.frameCount;
                flags           = GetFlags();

                if (Down != null && IsUp)
                {
                    Down();
                }
                if (Up != null && IsDown)
                {
                    Up();
                }
                if (Hold != null && IsHold)
                {
                    Hold();
                }
            }
        }
Example #12
0
        void SetKeyState(ReportStatus status, KeyFlag flag, bool markAsValid = false)
        {
            Control tx = flag == KeyFlag.Reg ? textBox_RegKey : textBox_NewKey;
            Control pb = flag == KeyFlag.Reg ? pictureBox_RegKey_Glow : pictureBox_NewKey_Glow;

            switch (status)
            {
            case ReportStatus.OnlineValid:
                pb.BackColor = Color.LightGreen;
                toolTip.SetToolTip(tx, markAsValid ? ReportStatus.OnlineInvalid.ToMessage() : status.ToMessage());
                return;

            case ReportStatus.InvalidKey:
                pb.BackColor = Color.Red;
                break;

            default:
                pb.BackColor = Color.Orange;
                break;
            }
            toolTip.SetToolTip(tx, status.ToMessage());
        }
Example #13
0
        protected KeySpec(
            ushort position,
            ushort length,
            KeyFlag flag,
            byte extendedKeyType,
            byte nullValue,
            sbyte keyNumber,
            byte acsNumber)
        {
            if (position == ushort.MaxValue)
            {
                throw new ArgumentOutOfRangeException();
            }

            this.Position        = position;
            this.Length          = length;
            this.Flag            = flag;
            this.ExtendedKeyType = extendedKeyType;
            this.NullValue       = nullValue;
            this.Number          = keyNumber;
            this.AcsNumber       = acsNumber;
        }
Example #14
0
        public void CombineKey()
        {
            KeyFlag[] keys = new KeyFlag[4];
            //判断组合键
            foreach (var key in lockKey)
            {
                switch (key)
                {
                case 160:
                case 161:
                    if (keys[0] != KeyFlag.Shift)
                    {
                        keys[0]  = KeyFlag.Shift;
                        keyFlag += 4;
                    }
                    break;

                case 162:
                case 163:
                    if (keys[1] != KeyFlag.Ctrl)
                    {
                        keys[1]  = KeyFlag.Ctrl;
                        keyFlag += 2;
                    }
                    break;

                case 164:
                case 165:
                    if (keys[2] != KeyFlag.Alt)
                    {
                        keys[2]  = KeyFlag.Alt;
                        keyFlag += 1;
                    }
                    break;

                case 91:
                case 92:
                    if (keys[3] != KeyFlag.Win)
                    {
                        keys[3]  = KeyFlag.Win;
                        isWin    = true;
                        keyFlag += 8;
                    }
                    break;
                }
            }

            //名字固定顺序
            List <string> ls = new List <string>();

            foreach (var k in keys)
            {
                if (k != KeyFlag.None)
                {
                    ls.Add(k.ToString());
                }
            }
            keyName = string.Join("+", ls);
            var comkey = (System.Windows.Forms.Keys)key;

            keyName += "+" + comkey.ToString();
        }
Example #15
0
 public static void SendKey(short keyCode, KeyFlag keyFlag)
 {
     SendInput(keyCode, keyFlag | KeyFlag.ScanCode);
 }
Example #16
0
    /// <summary>
    /// キー入力
    /// 左右や上下等同時に押したときにも対応
    /// </summary>
    void InputKey()
    {
        Event e = Event.current;

        if (e.type == EventType.KeyDown)
        {
            //移動キーフラグ
            if (e.keyCode == KeyCode.D)
            {
                keyFlag |= KeyFlag.Key_Right;
            }
            if (e.keyCode == KeyCode.A)
            {
                keyFlag |= KeyFlag.Key_Left;
            }
            if (e.keyCode == KeyCode.W)
            {
                keyFlag |= KeyFlag.Key_Up;
            }
            if (e.keyCode == KeyCode.S)
            {
                keyFlag |= KeyFlag.Key_Down;
            }

            //左右同時押しの時
            if ((keyFlag & (KeyFlag.Key_Right | KeyFlag.Key_Left)) == (KeyFlag.Key_Right | KeyFlag.Key_Left))
            {
                playerVec.x = 0;
            }
            else
            {
                if ((keyFlag & KeyFlag.Key_Right) == KeyFlag.Key_Right)
                {
                    playerVec.x = 1;
                }
                if ((keyFlag & KeyFlag.Key_Left) == KeyFlag.Key_Left)
                {
                    playerVec.x = -1;
                }
            }

            //上下同時押しの時
            if ((keyFlag & (KeyFlag.Key_Up | KeyFlag.Key_Down)) == (KeyFlag.Key_Up | KeyFlag.Key_Down))
            {
                playerVec.y = 0;
            }
            else
            {
                if ((keyFlag & KeyFlag.Key_Up) == KeyFlag.Key_Up)
                {
                    playerVec.y = -1;
                }
                if ((keyFlag & KeyFlag.Key_Down) == KeyFlag.Key_Down)
                {
                    playerVec.y = 1;
                }
            }

            //ショットキーフラグ
            if (e.keyCode == KeyCode.Space)
            {
                keyFlag |= KeyFlag.Key_Space;
            }
        }
        else if (e.type == EventType.KeyUp)
        {
            //フラグを削除する
            if (e.keyCode == KeyCode.D)
            {
                keyFlag = keyFlag & ~KeyFlag.Key_Right;
            }
            if (e.keyCode == KeyCode.A)
            {
                keyFlag = keyFlag & ~KeyFlag.Key_Left;
            }
            if (e.keyCode == KeyCode.W)
            {
                keyFlag = keyFlag & ~KeyFlag.Key_Up;
            }
            if (e.keyCode == KeyCode.S)
            {
                keyFlag = keyFlag & ~KeyFlag.Key_Down;
            }

            //離した逆側のキーが押されていた時
            if ((keyFlag & KeyFlag.Key_Right) == KeyFlag.Key_Right)
            {
                playerVec.x = 1;
            }
            else if ((keyFlag & KeyFlag.Key_Left) == KeyFlag.Key_Left)
            {
                playerVec.x = -1;
            }
            else
            {
                playerVec.x = 0;
            }


            //離した逆側のキーが押されていた時
            if ((keyFlag & KeyFlag.Key_Down) == KeyFlag.Key_Down)
            {
                playerVec.y = 1;
            }
            else if ((keyFlag & KeyFlag.Key_Up) == KeyFlag.Key_Up)
            {
                playerVec.y = -1;
            }
            else
            {
                playerVec.y = 0;
            }

            //スペースキーが押されているとき
            if (e.keyCode == KeyCode.Space)
            {
                keyFlag = keyFlag & ~KeyFlag.Key_Space;
            }
        }
    }