Example #1
0
 public InputEventKeyboard(KeyboardEventType eventType, InputEventKeyboard parent)
     : base(parent)
 {
     m_eventType = eventType;
     m_keyCode = parent.m_keyCode;
     m_keyDataExtra = parent.m_keyDataExtra;
 }
Example #2
0
 protected override void keyboardInput(InputEventKeyboard e)
 {
     switch (e.KeyCode)
     {
         case WinKeys.Back:
             if (Text.Length > 0)
             {
                 Text = Text.Substring(0, Text.Length - 1);
             }
             break;
         case WinKeys.Tab:
             m_owner.KeyboardTabToNextFocus(this);
             break;
         case WinKeys.Enter:
             m_owner.ActivateByKeyboardReturn(EntryID, Text);
             break;
         default:
             if (e.IsChar)
             {
                 Text += e.KeyChar;
             }
             break;
     }
 }
Example #3
0
 private void onKeyUp(InputEventKeyboard e)
 {
     addEvent(new InputEventKeyboard(KeyboardEventType.Up, e));
 }
Example #4
0
 private void onKeyDown(InputEventKeyboard e)
 {
     // handle the initial key down
     if (e.Data_PreviousState == 0)
     {
         addEvent(new InputEventKeyboard(KeyboardEventType.Down, e));
     }
     // handle the key presses. Possibly multiple per keydown message.
     for (int i = 0; i < e.Data_RepeatCount; i++)
     {
         addEvent(new InputEventKeyboard(KeyboardEventType.Press, e));
     }
 }
Example #5
0
        private void onKeyChar(InputEventKeyboard e)
        {
            // Control key sends a strange wm_char message ...
            if (e.Control && !e.Alt)
                return;

            InputEventKeyboard pressEvent = LastKeyPressEvent;
            if (pressEvent == null)
                Logging.Fatal("No corresponding KeyPress event for this WM_CHAR message. Please report this error to [email protected]");
            else
            {
                pressEvent.OverrideKeyChar(e.KeyCode);
            }
        }
Example #6
0
        protected override bool OnKeyboardKeyPress(InputEventKeyboard e)
        {
            switch (e.KeyCode)
            {
                case WinKeys.Back:
                    //Backspace => remove selected or remove before cursor
                    if (Model.HasSelected)
                    {
                        Model.RemoveSelected();
                    }
                    else
                    {
                        Model.BackSpace();
                    }
                    return true;
                case WinKeys.Enter:
                    // Enter / Return / Newlines currently not supported.
                    return true;
                case WinKeys.C:
                    if (e.Control)
                    {
                        // Ctrl + C => Copy
                        Clipboard.SetDataObject(Model.GetSelected(), true);
                        return true;
                    }
                    break;
                case WinKeys.V:
                    if (e.Control)
                    {
                        // Ctrl + P => Paste
                        if (Model.HasSelected)
                            Model.RemoveSelected();
                        var dataObject = Clipboard.GetDataObject();
                        if (dataObject != null)
                        {
                            string text = dataObject.GetData(DataFormats.Text).ToString();
                            Model.Insert(text);
                        }
                        return true;
                    }
                    break;
                case WinKeys.X:
                    if (e.Control)
                    {
                        // Ctrl + X => Cut
                        if (Model.HasSelected)
                        {
                            Clipboard.SetDataObject(Model.GetSelected(), true);
                            Model.RemoveSelected();
                        }
                        return true;
                    }
                    break;
            }

            if (Model.Length != 0)
            {
                switch (e.KeyCode)
                {
                    case WinKeys.Left:
                        Model.CursorPosition--;
                        Model.SelectCursorPosition = null;
                        return true;
                    case WinKeys.Right:
                        Model.CursorPosition++;
                        Model.SelectCursorPosition = null;
                        return true;
                    case WinKeys.Up:
                        Model.CursorPosition = 0;
                        Model.SelectCursorPosition = null;
                        return true;
                    case WinKeys.Down:
                        Model.CursorPosition = Model.Length;
                        Model.SelectCursorPosition = null;
                        return true;
                    case WinKeys.Delete:
                        Model.Delete();
                        Model.SelectCursorPosition = null;
                        return true;
                }
            }

            if (e.IsChar)
            {
                //Add the character
                if (Model.HasSelected)
                {
                    Model.RemoveSelected();
                    Model.SelectCursorPosition = null;
                }
                Model.Insert(e.KeyChar);
            }

            return false;
        }
Example #7
0
        /// <summary>
        /// Reads the supplied message and executes any Keyboard events required.
        /// </summary>
        /// <param name="message">The Message to parse</param>
        /// <returns>A Boolean value indicating wether the Key events were handled or not</returns>
        private void WmKeyEvent(ref Message message)
        {
            // HandleKeyBindings();
            // KeyPressEventArgs keyPressEventArgs = null;

            if ((message.Id == NativeConstants.WM_CHAR) || (message.Id == NativeConstants.WM_SYSCHAR))
            {
                // Is this extra information necessary?
                // wm_(sys)char: http://msdn.microsoft.com/en-us/library/ms646276(VS.85).aspx

                InputEventKeyboard e = new InputEventKeyboard(KeyboardEventType.Press,
                    (WinKeys)(int)(long)message.WParam,
                    (int)(long)message.LParam,
                    ModifierKeys
                    );
                IntPtr zero = (IntPtr)0;// (char)((ushort)((long)message.WParam));
                invokeChar(e);
            }
            else
            {
                // wm_(sys)keydown: http://msdn.microsoft.com/en-us/library/ms912654.aspx
                // wm_(sys)keyup: http://msdn.microsoft.com/en-us/library/ms646281(VS.85).aspx

                if ((message.Id == NativeConstants.WM_KEYDOWN) || (message.Id == NativeConstants.WM_SYSKEYDOWN))
                {
                    InputEventKeyboard e = new InputEventKeyboard(KeyboardEventType.Down,
                        (WinKeys)(int)(long)message.WParam,
                        (int)(long)message.LParam,
                        ModifierKeys
                        );
                    invokeKeyDown(e);
                }
                else if ((message.Id == NativeConstants.WM_KEYUP) || (message.Id == NativeConstants.WM_SYSKEYUP))
                {
                    InputEventKeyboard e = new InputEventKeyboard(KeyboardEventType.Up,
                        (WinKeys)(int)(long)message.WParam,
                        (int)(long)message.LParam,
                        ModifierKeys
                        );
                    invokeKeyUp(e);
                }
            }
        }
Example #8
0
 /// <summary>
 /// Raises the KeyUp event. Override this method to add code to handle when a key is released
 /// </summary>
 /// <param name="e">KeyboardPressEventArgs for the KeyUp event</param>
 private void invokeKeyUp(InputEventKeyboard e)
 {
     if (KeyUp != null)
         KeyUp(e);
 }
Example #9
0
 /// <summary>
 /// Raises the KeyDown event. Override this method to add code to handle when a key is pressed
 /// </summary>
 /// <param name="e">InputEventCKB for the KeyDown event</param>
 private void invokeKeyDown(InputEventKeyboard e)
 {
     if (KeyDown != null)
         KeyDown(e);
 }
Example #10
0
 /// <summary>
 /// Raises the OnChar event. Override this method to add code to handle when a WM_CHAR message is received
 /// </summary>
 /// <param name="e">InputEventCKB for the OnChar event</param>
 private void invokeChar(InputEventKeyboard e)
 {
     if (KeyChar != null)
         KeyChar(e);
 }
Example #11
0
 protected virtual bool OnKeyboardKeyUp(InputEventKeyboard e)
 {
     return false;
 }