private void OnKeyPressed(object sender, KeyboardKeyEventArgs args) { if (KeyPressed != null) { KeyPressed(sender, args); } OnCharacterPressed(sender, args); }
private void OnCharacterPressed(object sender, KeyboardKeyEventArgs args) { if (CharacterTyped == null) { return; } var character = KeyboardUtil.ToChar(args.Key, args.Modifiers); if (character.HasValue) { CharacterTyped(this, new KeyboardCharacterEventArgs(character.Value)); } }
public void Update(GameTime gameTime) { var current = Keyboard.GetState(); if (!current.IsKeyDown(Keys.LeftAlt) && !current.IsKeyDown(Keys.RightAlt)) { foreach (var key in Enum.GetValues(typeof (Keys)) .Cast<Keys>() .Where(key => current.IsKeyDown(key) && _previous.IsKeyUp(key))) { var args = new KeyboardKeyEventArgs(key); OnKeyPressed(this, args); _lastKey = key; _lastPress = gameTime.TotalGameTime; _isInitial = true; } } foreach (var key in Enum.GetValues(typeof(Keys)) .Cast<Keys>() .Where(key => current.IsKeyUp(key) && _previous.IsKeyDown(key))) { OnKeyReleased(this, new KeyboardKeyEventArgs(key)); } var elapsedTime = (gameTime.TotalGameTime - _lastPress).TotalMilliseconds; if (current.IsKeyDown(_lastKey) && ((_isInitial && elapsedTime > InitialDelay) || (!_isInitial && elapsedTime > RepeatDelay))) { OnKeyPressed(this, new KeyboardKeyEventArgs(_lastKey)); _lastPress = gameTime.TotalGameTime; _isInitial = false; } _previous = current; }
private void OnKeyReleased(object sender, KeyboardKeyEventArgs args) { if (KeyReleased != null) { KeyReleased(sender, args); } }