void OnKeyChar(InputEventKeyboard e) { // Control key sends a strange wm_char message ... if (e.Control && !e.Alt) { return; } InputEventKeyboard ek = LastKeyPressEvent; if (ek == null) { Tracer.Warn("No corresponding KeyPress event for a WM_CHAR message."); } else { ek.OverrideKeyChar(e.KeyCode); } }
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) { Tracer.Critical("No corresponding KeyPress event for this WM_CHAR message."); } else { pressEvent.OverrideKeyChar(e.KeyCode); } }
public void Update(double totalTime, double frameTime) { m_MouseEvents.Clear(); m_KeyboardEvents.Clear(); var mouseState = Mouse.GetState(); var keyState = Keyboard.GetState(); if (mouseState.X != m_MouseState.X || mouseState.Y != m_MouseState.Y) { m_LastMouseMove = totalTime; } if (mouseState.LeftButton != m_MouseState.LeftButton) { var buttonState = mouseState.LeftButton == ButtonState.Pressed ? MouseEvent.Down : MouseEvent.Up; m_MouseEvents.Add(new InputEventMouse(buttonState, WinMouseButtons.Left, 0, m_MouseState.X, m_MouseState.Y, 0, 0)); } if (mouseState.RightButton != m_MouseState.RightButton) { var buttonState = mouseState.RightButton == ButtonState.Pressed ? MouseEvent.Down : MouseEvent.Up; m_MouseEvents.Add(new InputEventMouse(buttonState, WinMouseButtons.Right, 0, m_MouseState.X, m_MouseState.Y, 0, 0)); } if (mouseState.MiddleButton != m_MouseState.RightButton) { var buttonState = mouseState.MiddleButton == ButtonState.Pressed ? MouseEvent.Down : MouseEvent.Up; m_MouseEvents.Add(new InputEventMouse(buttonState, WinMouseButtons.Middle, 0, m_MouseState.X, m_MouseState.Y, 0, 0)); } var oldKeys = new List <Keys>(m_KeyboardState.GetPressedKeys()); var newKeys = new List <Keys>(keyState.GetPressedKeys()); m_Modifiers = 0; if (keyState.IsKeyDown(Keys.LeftShift) || keyState.IsKeyDown(Keys.RightShift)) { m_Modifiers |= (int)WinKeys.Shift; } if (keyState.IsKeyDown(Keys.LeftAlt) || keyState.IsKeyDown(Keys.RightAlt)) { m_Modifiers |= (int)WinKeys.Alt; } if (keyState.IsKeyDown(Keys.LeftControl) || keyState.IsKeyDown(Keys.RightControl)) { m_Modifiers |= (int)WinKeys.Control; } foreach (var k in oldKeys) { if (!newKeys.Contains(k)) { m_KeyboardEvents.Add(new InputEventKeyboard(KeyboardEvent.Up, TranslateToWinKey(k), m_Modifiers)); } } foreach (var k in newKeys) { if (!oldKeys.Contains(k)) { m_KeyboardEvents.Add(new InputEventKeyboard(KeyboardEvent.Down, TranslateToWinKey(k), m_Modifiers)); var press = new InputEventKeyboard(KeyboardEvent.Press, TranslateToWinKey(k), m_Modifiers); press.OverrideKeyChar(TranslateToPrintableChar(k, keyState)); m_KeyboardEvents.Add(press); } } m_MouseState = mouseState; m_KeyboardState = keyState; m_LastUpdateTime = totalTime; }