Пример #1
0
 public void Start(bool InstallKeyboardHook)
 {
     if (HotTabDLL.IsDebugMode)
     {
         Trace.WriteLine("KeyboardHook() Start");
     }
     if (hKeyboardHook == 0 && InstallKeyboardHook)
     {
         KeyboardHookProcedure = new HookProc(KeyboardHookProc);
         hKeyboardHook         = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);
         if (HotTabDLL.IsDebugMode)
         {
             Trace.WriteLine("ModuleName : " + Process.GetCurrentProcess().MainModule.ModuleName + ", Handle : " + GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName));
         }
         if (hKeyboardHook == 0)
         {
             int errorCode = Marshal.GetLastWin32Error();
             Stop(true, false);
             throw new Win32Exception(errorCode);
         }
         else
         {
             beforeKeyboardInputStateDateTime = DateTime.Now;
             keyboardInputState = KeyboardInputState.State_None;
             if (HotTabDLL.IsDebugMode)
             {
                 Trace.WriteLine("Add KeyUpForHook()");
             }
             this.KeyUpForHook += new KeyEventHandler(this.KeyboradUpHandler);
             // this.KeyDownForHook += new KeyEventHandler(this.KeyboradDownHandler);
         }
     }
 }
Пример #2
0
        public virtual void OnUpdate()
        {
            m_KeyboardState = keyboardInputManager.UpdateKeyboardInputState();

            ProcessKeyboardEvents();
            ProcessMouseInput();

            LightList <UIElement> bindingUpdateList = BuildBindingUpdateList(m_ElementsThisFrame.Count > 0 ? m_ElementsThisFrame[0] : null);

            RunBindings(bindingUpdateList);

            if (!IsDragging)
            {
                ProcessMouseEvents();
            }
            else
            {
                RunMouseEvents(m_ExitedElements, InputEventType.MouseExit);
            }

            ProcessDragEvents();

            RunWriteBindingsAndReleaseList(bindingUpdateList);

            List <UIElement> temp = m_ElementsLastFrame;

            m_ElementsLastFrame = m_ElementsThisFrame;
            m_ElementsThisFrame = temp;

            for (int i = 0; i < m_ElementsLastFrame.Count; i++)
            {
                if (m_ElementsLastFrame[i].isDisabled || m_ElementsLastFrame[i].isDestroyed)
                {
                    m_ElementsLastFrame.RemoveAt(i--);
                }
            }

            m_ElementsThisFrame.Clear();
            m_EnteredElements.Clear();
            m_ExitedElements.Clear();

            if (IsMouseLeftUpThisFrame)
            {
                m_MouseDownElements.Clear();
            }
        }
Пример #3
0
 public void ResetInputState()
 {
     inputState = new KeyboardInputState();
 }
Пример #4
0
 public MockKeyboardInputManager()
 {
     inputState = new KeyboardInputState();
 }
Пример #5
0
        private void KeyboradUpHandler(object Asender, KeyEventArgs e)
        {
            // HotTabDLL.ShowDialogMessageBox("KeyboradUpHandler , KeyEventArgs = " + e.KeyValue + " , keyboardInputState = " + keyboardInputState);
            if (e.KeyValue == 541)
            {
                return;                    // French Mode, Because the alt key will send the code.
            }
            KeyboardInputDifferenceTime      = DateTime.Now - beforeKeyboardInputStateDateTime;
            beforeKeyboardInputStateDateTime = DateTime.Now;
            if (KeyboardInputDifferenceTime.TotalMilliseconds > 200)
            {
#if IsInstallHotTab
                keyboardInputState = KeyboardInputState.State_None;
#endif
                beforeKeyboardInputStateDateTime = DateTime.Now;
            }
            else
            {
                beforeKeyboardInputStateDateTime = DateTime.Now;
            }

            // Trace.WriteLine(e.KeyValue.ToString());
            switch (keyboardInputState)
            {
                #region KeyboardInputState.State_None
            case KeyboardInputState.State_None:
                // Trace.WriteLine("KeyboardInputState.State_None : " + e.KeyValue);
                switch (e.KeyValue)     // (Translate.pdf => PS/2 Set 1 Make) 轉換表是16進位, 這邊要改成10進位的KeyValue
                {
                case 1:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_ESC, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 2:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_1, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 3:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_2, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 4:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_3, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 5:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_4, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 6:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_5, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 7:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_6, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 8:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_7, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 9:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_8, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 10:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_9, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 11:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_0, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 12:         // 0C(- _)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_OemMinus, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 13:         // 0D(= +)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_OemPlus, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 14:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_BACKSPACE, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 15:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_TAB, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 16:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Q, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 17:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_W, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 18:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_E, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 19:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_R, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 20:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_T, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 21:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Y, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 22:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_U, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 23:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_I, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 24:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_O, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 25:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_P, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 26:        // 1A([ {)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_OemOpenBrackets, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 27:        // 1B(] })
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Oem6, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 28:         // ENTER
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Enter, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 29:                                                                  // CTRL
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : Ctrl");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_CTRL, 0, 0); // kenkun add for DAP7
                    keyboardInputState = KeyboardInputState.State_StartWithCtrl;
                    break;

                case 30:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_A, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 31:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_S, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 32:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_D, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 33:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 34:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_G, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 35:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_H, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 36:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_J, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 37:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_K, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 38:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_L, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 39:         // 27(; :)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Oem1, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 40:         // 28(' ")
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Oem7, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 42:         // Left Shift
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_SHIFT_Left, 0, 0);
                    // PostMessage(hwndHotTabDLL, HotTabECEventArgs.ECEvent_FN, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 43:         // 2B(\ |)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Oem5, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 44:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Z, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 45:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_X, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 46:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_C, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 47:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_V, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 48:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_B, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 49:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_N, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 50:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_M, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 51:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_COMMA, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 52:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_PERIOD, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 53:         // 35(/ ?)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_OemQuestion, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 54:         // Right Shift
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_SHIFT_Right, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 55:         // E0 37 (Print Screen)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_PrtScr, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 56:                                                                 // ALT
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : Alt");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_ALT, 0, 0); // kenkun add for DAP7
                    keyboardInputState = KeyboardInputState.State_StartWithAlt;
                    break;

                case 58:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_CapsLock, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 57:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_SPACE, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 59:         // 3B(HEX)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F1, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 60:         // 3C
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F2, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 61:         // 3D
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F3, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 62:         // 3E
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F4, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 63:         // 3F
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F5, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 64:         // 40
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F6, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 65:         // 41
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F7, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 66:         // 42
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F8, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 67:         // 43
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F9, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 68:         // 44
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F10, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 69:         // E1 1D 45 / E1 9D C5
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Pause, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 72:         // Up
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Up, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 75:         // Left
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Left, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 77:         // Right
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Right, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 80:         // Down
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Down, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 82:         // E0 52(Insert)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Insert, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 83:                                                                    // E0 53(Delete)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_DELETE, 0, 0); // DAP7
                    // PostMessage(hwndHotTabDLL, HotTabECEventArgs.ECEvent_Delete, 0, 0); // Handheld NB
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 87:         // 57
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F11, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 88:         // 58
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F12, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 91:
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_MENU, 0, 0);
                    // PostMessage(hwndHotTabDLL, HotTabECEventArgs.ECEvent_OpenMenu, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 93:         // E0 5D(Apps)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Apps, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 100:                                                                // F13
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F13, 0, 0); // For FM08(FMB80) Use, Winmate kenkun add on 2015/11/25
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 102:                                                                // F15
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F15, 0, 0); // For FM08(FMB80) Use, Winmate kenkun add on 2015/11/25
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 115:                                                                               // 0x73
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_FM08BrightnessAuto, 0, 0); // For FM08(FMB80) Use, Winmate kenkun add on 2015/11/25
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 116:                                                                               // 0x74 // fn + F10 Brightness Up
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_BrightnessUp, 0, 0);
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_FM08BrightnessDown, 0, 0); // For FM08(FMB80) Use, Winmate kenkun add on 2015/11/25
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 117:                                                                             // 0x75 // fn + F11 Brightness Down
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_BrightnessDown, 0, 0);
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_FM08BrightnessUp, 0, 0); // For FM08(FMB80) Use, Winmate kenkun add on 2015/11/25
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 174:         // fn + F8 Volume Down
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_VolumeDown, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 175:         // fn + F7 Volume Up
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_VolumeUp, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                default:
                    keyboardInputState = KeyboardInputState.State_None;
                    break;
                }
                break;
                #endregion

                #region KeyboardInputState.State_StartWithAlt
            case KeyboardInputState.State_StartWithAlt:
                switch (e.KeyValue)
                {
                case 29:         // ctrl
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : AltCtrl");
                    // 加了會讓複合鍵直接將CTRL跟ALT覆蓋掉, 不加按了CTRL後直接按ALT也會變複合鍵, 抓不到Keycode
                    // PostMessage(hwndHotTabDLL, HotTabECEventArgs.ECEvent_CTRL, 0, 0); // kenkun add for DAP7
                    // PostMessage(hwndHotTabDLL, HotTabECEventArgs.ECEvent_ALT, 0, 0); // kenkun add for DAP7
                    keyboardInputState = KeyboardInputState.State_StartWithAltCtrl;
                    break;

                default:
                    keyboardInputState = KeyboardInputState.State_None;
                    break;
                }
                break;
                #endregion

                #region KeyboardInputState.State_StartWithCtrl
            case KeyboardInputState.State_StartWithCtrl:
                switch (e.KeyValue)
                {
                case 56:         // alt
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : CtrlAlt");
                    // PostMessage(hwndHotTabDLL, HotTabECEventArgs.ECEvent_CTRL, 0, 0); // kenkun add for DAP7
                    // PostMessage(hwndHotTabDLL, HotTabECEventArgs.ECEvent_ALT, 0, 0); // kenkun add for DAP7
                    keyboardInputState = KeyboardInputState.State_StartWithCtrlAlt;
                    break;

                default:
                    keyboardInputState = KeyboardInputState.State_None;
                    break;
                }
                break;
                #endregion

                #region KeyboardInputState.State_StartWithAltCtrl
            case KeyboardInputState.State_StartWithAltCtrl:
                switch (e.KeyValue)
                {
                case 54:         // shift
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : AltCtrlShift");
                    keyboardInputState = KeyboardInputState.State_StartWithAltCtrlShift;
                    break;

                default:
                    keyboardInputState = KeyboardInputState.State_None;
                    break;
                }
                break;
                #endregion

                #region KeyboardInputState.State_StartWithCtrlAlt
            case KeyboardInputState.State_StartWithCtrlAlt:
                switch (e.KeyValue)
                {
                case 54:         // shift
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : CtrlAltShift");
                    keyboardInputState = KeyboardInputState.State_StartWithCtrlAltShift;
                    break;

                case 87:        // F11
                    // 賓士客製版 Menu key 當 Scan key 用, Keycode : Ctrl + Alt + F11, Winmate Kenkun add on 2015/12/02
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_BARCODE, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                default:
                    keyboardInputState = KeyboardInputState.State_None;
                    break;
                }
                break;
                #endregion

                #region KeyboardInputState.State_StartWithAltCtrlShift
            case KeyboardInputState.State_StartWithAltCtrlShift:
                // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardInputState KeyValue : " + e.KeyValue); // Winmate add on 2016/05/26
                switch (e.KeyValue)
                {
                case 11:         // 0 (PS2 Set:B)
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardInputState tempMenu : PASS");
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : ECEvent_OpenMenu");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_OpenMenu, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 2:         // 1
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardInputState tempUp : PASS");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_VolumeUp, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 3:         // 2
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardInputState tempDown : PASS");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_VolumeDown, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 4:         // 3
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : ECEvent_F1Short");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F1Short, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 5:         // 4
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F1Long, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 6:         // 5
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : ECEvent_F2Short");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F2Short, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 7:         // 6
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F2Long, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 8:         // 7
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardInputState tempF3 : PASS");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F3Short, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 9:         // 8 (PS2 Set:8)
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F3Long, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 10:         // 9 (PS2 Set:A)
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardInputState tempLeft : PASS");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Left, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 18:         // e (PS2 Set:12)
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : ECEvent_Enter");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Enter, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 23:         // kenkun add
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_CAMERA, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 30:         // a (PS2 Set:1E)
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardInputState tempRight : PASS");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_Right, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 32:                          // d (PS2 Set:20)
                    if (KEY_MenuToHome.Equals(1)) // For IBCMC Keycode Use, Winmate Kenkun add on 2015/10/06
                    {
                        PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_OpenMenu, 0, 0);
                    }
                    else if (TestProduct.Equals("IBWH") || TestProduct.Equals("IB10"))         // For HandHeld 8" / 10", Winmate kenkun modify on 2016/08/16
                    {
                        PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_VolumeUp, 0, 0);
                    }
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 34:         // kenkun add
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F5Short, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 37:         // kenkun add
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_BARCODE, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 46:         // c (PS2 Set:2E)
                    break;

                case 48:         // b (PS2 Set:30)
                    break;

                case 49:         // kenkun add
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_F4Short, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 50:         // m (PS2 Set:32)
                    // if (HotTabDLL.IsDebugMode) Trace.WriteLine("KeyboardHook : ECEvent_HomeKeyEvent");
                    PostMessage(hwndHotTabDLL, KeyboardHookEventArgs.ECEvent_HomeKeyEvent, 0, 0);
                    keyboardInputState = KeyboardInputState.State_None;
                    break;
                }
                break;
                #endregion

                #region KeyboardInputState.State_StartWithCtrlAltShift
            case KeyboardInputState.State_StartWithCtrlAltShift:
                switch (e.KeyValue)
                {
                case 23:         // i
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 24:         // o
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                case 18:        // e
                    keyboardInputState = KeyboardInputState.State_None;
                    break;

                default:
                    keyboardInputState = KeyboardInputState.State_None;
                    break;
                }
                #endregion
                break;
            }
        }