Exemple #1
0
        public void HandleKeyEvent(KeyEventPipeMessage keyMessage)
        {
            var host = this.webBrowser.GetBrowserHost();

            // Get character info
            int character = 0;

            var cefKeyModifiers = new CefEventFlags();

            if (keyMessage.KeyEventType != KeyEventPipeMessage.TYPE_KEY_CHAR)
            {
                var keyFlags     = keyMessage.Keys;
                var keyFlagsChar = keyFlags & Keys.KeyCode; // bit shift to remove modifiers from character code

                character = (int)keyFlagsChar;

                if (keyMessage.Modifiers.HasFlag(Keys.Control))
                {
                    cefKeyModifiers |= CefEventFlags.ControlDown;
                }

                if (keyMessage.Modifiers.HasFlag(Keys.Shift))
                {
                    cefKeyModifiers |= CefEventFlags.ShiftDown;
                }

                if (keyMessage.Modifiers.HasFlag(Keys.Alt))
                {
                    cefKeyModifiers |= CefEventFlags.AltDown;
                }

                //if (keyMessage.KeyEventType == 0)
                //{
                //    Logr.Log(
                //        keyMessage.KeyEventType <= 0 ? "Key down:" : "Key up:",
                //        keyMessage.Keys,
                //        keyMessage.Modifiers != Keys.None ? "+ Mod " + keyMessage.Modifiers.ToString() : ""
                //    );
                //}
            }
            else
            {
                character = (int)keyMessage.Keys;
                //Logr.Log("Char down:", (char)character, character);
            }

            var keyEvent = new KeyEvent()
            {
                Type           = KeyEventType.Char,
                WindowsKeyCode = character,
                Modifiers      = cefKeyModifiers
            };

            if (keyMessage.KeyEventType == KeyEventPipeMessage.TYPE_KEY_DOWN)
            {
                keyEvent.Type = KeyEventType.KeyDown;
            }

            if (keyMessage.KeyEventType == KeyEventPipeMessage.TYPE_KEY_UP)
            {
                keyEvent.Type = KeyEventType.KeyUp;
            }

            host.SendKeyEvent(keyEvent);
        }
Exemple #2
0
 public SendKeyEventTask(KeyEventPipeMessage message)
 {
     this.keyEventMsg = message;
 }