private void RaisePressedEvents(GameTime gameTime, KeyboardState currentState) { if (!currentState.IsKeyDown(Key.AltLeft) && !currentState.IsKeyDown(Key.AltRight)) { var pressedKeys = Enum.GetValues(typeof(Key)) .Cast <Key>() .Where(key => currentState.IsKeyDown(key) && _previousState.IsKeyUp(key)); foreach (var key in pressedKeys) { var args = new KeyboardEventArgs(key, currentState); KeyPressed?.Invoke(this, args); if (args.Character.HasValue) { KeyTyped?.Invoke(this, args); } _previousKey = key; _lastPressTime = gameTime.TotalGameTime; _isInitial = true; } } }
private void RaiseRepeatEvents(GameTime gameTime, KeyboardState currentState) { var elapsedTime = (gameTime.TotalGameTime - _lastPressTime).TotalMilliseconds; if (currentState.IsKeyDown(_previousKey) && (_isInitial && elapsedTime > InitialDelay || !_isInitial && elapsedTime > RepeatDelay)) { var args = new KeyboardEventArgs(_previousKey, currentState); KeyPressed?.Invoke(this, args); if (args.Character.HasValue) { KeyTyped?.Invoke(this, args); } _lastPressTime = gameTime.TotalGameTime; _isInitial = false; } }
protected virtual void OnKeyTyped(char c) => KeyTyped?.Invoke(c);
private void WindowOnKeyPress(object sender, KeyPressEventArgs e) { KeyTyped?.Invoke(e.KeyChar); }
internal static void OnKeyTyped(char c) { KeyTyped?.Invoke(c); }