コード例 #1
0
ファイル: Program.cs プロジェクト: kawogi/keyout
        private static bool RedirectKey(int eventType, Extern.KBDLLHOOKSTRUCT kbd)
        {
            bool isInjected = kbd.flags.HasFlag(Extern.KBDLLHOOKSTRUCTFlags.LLKHF_INJECTED);

            if (isInjected)
            {
                return(false);
            }

            bool isKeyUp;

            switch (eventType)
            {
            case Extern.WM_KEYDOWN:
            case Extern.WM_SYSKEYDOWN:
                isKeyUp = false;
                break;

            case Extern.WM_KEYUP:
            case Extern.WM_SYSKEYUP:
                isKeyUp = true;
                break;

            default:
                return(false);
            }

            bool isExtended = kbd.flags.HasFlag(Extern.KBDLLHOOKSTRUCTFlags.LLKHF_EXTENDED);

            return(keyConfiguration.SendAssignedKey((byte)(kbd.scanCode & 0xff), isExtended, isKeyUp));
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: kawogi/keyout
        private static IntPtr HookCallback(int nCode, IntPtr wParam, ref Extern.KBDLLHOOKSTRUCT kbd)
        {
            if (nCode >= 0)
            {
                if (mainForm.HandleKeyEvent((int)wParam, kbd))
                {
                    return((IntPtr)1);
                }

                bool isScrollLock = Extern.GetKeyState((int)Keys.Scroll) != 0;
                if (isScrollLock && RedirectKey((int)wParam, kbd))
                {
                    return((IntPtr)1);
                }
            }

            return(Extern.CallNextHookEx(_hookID, nCode, wParam, ref kbd));
        }
コード例 #3
0
        public bool HandleKeyEvent(int eventType, Extern.KBDLLHOOKSTRUCT kbd)
        {
            if (!ContainsFocus)
            {
                return(false);
            }

            if (currentTextBox == null)
            {
                return(false);
            }

            if (eventType != Extern.WM_KEYDOWN && eventType != Extern.WM_SYSKEYDOWN)
            {
                return(false);
            }

            var key = (Keys)kbd.vkCode;

            if (key == Keys.Scroll)
            {
                return(false);
            }

            var action = (Actions)currentTextBox.Tag;

            if (action == Actions.None)
            {
                return(false);
            }

            bool isExtended = kbd.flags.HasFlag(Extern.KBDLLHOOKSTRUCTFlags.LLKHF_EXTENDED);

            Debug.WriteLine("vkCode: " + key + "(" + kbd.vkCode + "); scanCode: " + kbd.scanCode + "; flags: " + kbd.flags);
            keyConfiguration.Assign(action, key, (byte)(kbd.scanCode & 0xff), isExtended);

            updateTextBoxes();
            ActionTestTextBox.Focus();
            return(true);
        }