diff options
Diffstat (limited to 'src/Noddybox.Emulation.Xna.Input/Keyboard/KeyboardDriver.cs')
-rw-r--r-- | src/Noddybox.Emulation.Xna.Input/Keyboard/KeyboardDriver.cs | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/Noddybox.Emulation.Xna.Input/Keyboard/KeyboardDriver.cs b/src/Noddybox.Emulation.Xna.Input/Keyboard/KeyboardDriver.cs index 4fa265a..6379dd8 100644 --- a/src/Noddybox.Emulation.Xna.Input/Keyboard/KeyboardDriver.cs +++ b/src/Noddybox.Emulation.Xna.Input/Keyboard/KeyboardDriver.cs @@ -153,18 +153,40 @@ namespace Noddybox.Emulation.Xna.Input.Keyboard #region Public members
/// <summary>
- /// Stops consuming inputs.
+ /// Stops consuming inputs and releases all keys.
/// </summary>
- public void StopKeyboardUpdates()
+ /// <param name="generateEvents">Generates events for cleared keys.</param>
+ public void StopKeyboardUpdates(bool generateEvents)
{
if (subscribed)
{
manager.TouchEvent -= TouchScreenHandler;
subscribed = false;
+
+ foreach (KeyState key in keymapState)
+ {
+ if (key.IsPressed)
+ {
+ key.IsPressed = false;
+
+ if (generateEvents && KeyEvent != null)
+ {
+ KeyEvent(this, new KeyPressEventArgs() {Key = key.Symbol, Pressed = key.IsPressed});
+ }
+ }
+ }
}
}
/// <summary>
+ /// Stops consuming inputs and releases all keys. Generates events for released keys.
+ /// </summary>
+ public void StopKeyboardUpdates()
+ {
+ StopKeyboardUpdates(true);
+ }
+
+ /// <summary>
/// Starts consuming inputs.
/// </summary>
public void StartKeyboardUpdates()
|