aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael <[email protected]>2017-07-03 16:17:43 -0400
committerMichael <[email protected]>2017-07-03 16:17:43 -0400
commit9a9fcc1357d1c79d0e6de668a958c228d6ce5611 (patch)
tree9a8ec78e75b2c406ed66554c4ad0f1b3c171192c
parent70f56a5f2fff23e5aca50b0268d0368d044be544 (diff)
downloadshiftos_thereturn-9a9fcc1357d1c79d0e6de668a958c228d6ce5611.tar.gz
shiftos_thereturn-9a9fcc1357d1c79d0e6de668a958c228d6ce5611.tar.bz2
shiftos_thereturn-9a9fcc1357d1c79d0e6de668a958c228d6ce5611.zip
Fix keyboard input.
-rw-r--r--ShiftOS.Frontend/ShiftOS.cs46
1 files changed, 20 insertions, 26 deletions
diff --git a/ShiftOS.Frontend/ShiftOS.cs b/ShiftOS.Frontend/ShiftOS.cs
index 13e93ba..833ee59 100644
--- a/ShiftOS.Frontend/ShiftOS.cs
+++ b/ShiftOS.Frontend/ShiftOS.cs
@@ -165,7 +165,8 @@ Reflection manager found {ReflectMan.Types.Count()} Common Language Runtime type
// TODO: Unload any non ContentManager content here
}
-
+ private double kb_elapsedms = 0;
+
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
@@ -199,36 +200,29 @@ Reflection manager found {ReflectMan.Types.Count()} Common Language Runtime type
if (keys.Length > 0)
{
var key = keys.FirstOrDefault(x => x != Keys.LeftControl && x != Keys.RightControl && x != Keys.LeftShift && x != Keys.RightShift && x != Keys.LeftAlt && x != Keys.RightAlt);
- if (lastKey != key)
+ if(lastKey != key)
{
+ kb_elapsedms = 0;
lastKey = key;
- //Of course, we need modifier keys...
- //First for Control.
- bool controlDown = keys.Contains(Keys.LeftControl) || keys.Contains(Keys.RightControl);
- //Now SHIFT.
- bool shiftDown = keys.Contains(Keys.LeftShift) || keys.Contains(Keys.RightShift);
- //And ALT.
- bool altDown = keys.Contains(Keys.LeftAlt) || keys.Contains(Keys.RightAlt);
-
- var keyevent = new KeyEvent(controlDown, altDown, shiftDown, key);
- var t = new System.Threading.Thread(() =>
- {
- UIManager.ProcessKeyEvent(keyevent);
- lastKey = Keys.None;
- System.Threading.Thread.Sleep(1000);
- if(lastKey == keyevent.Key)
- while (Keyboard.GetState().IsKeyDown(keyevent.Key))
- {
- UIManager.ProcessKeyEvent(keyevent);
- System.Threading.Thread.Sleep(75);
- }
- lastKey = Keys.None;
- });
- t.Start();
-
}
}
+ if (keystate.IsKeyDown(lastKey))
+ {
+ if (kb_elapsedms == 0 || kb_elapsedms >= 500)
+ {
+ var shift = keystate.IsKeyDown(Keys.LeftShift) || keystate.IsKeyDown(Keys.RightShift);
+ var alt = keystate.IsKeyDown(Keys.LeftAlt) || keystate.IsKeyDown(Keys.RightAlt);
+ var control = keystate.IsKeyDown(Keys.LeftControl) || keystate.IsKeyDown(Keys.RightControl);
+ var e = new KeyEvent(control, alt, shift, lastKey);
+ UIManager.ProcessKeyEvent(e);
+ }
+ kb_elapsedms += gameTime.ElapsedGameTime.TotalMilliseconds;
+ }
+ else
+ {
+ kb_elapsedms = 0;
+ }
base.Update(gameTime);
}