public void UpdateInputDevices() { KeyboardState = KeyboardManager.GetState(); KeyboardState.GetDownKeys(_downKeys); MouseState = MouseManager.GetState(); if(PointerManager!=null) PointerState = PointerManager.GetState(); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// private void UpdateKeys(KeyboardState state, GameTime gameTime) { #if (!XBOX && !XBOX_FAKE) KeyEventArgs e = new KeyEventArgs(); e.Caps = (((ushort)NativeMethods.GetKeyState(0x14)) & 0xffff) != 0; List<Keys> downKeys = new List<Keys>(); state.GetDownKeys(downKeys); foreach (Keys key in downKeys) { if (key == Keys.LeftAlt || key == Keys.RightAlt) e.Alt = true; else if (key == Keys.LeftShift || key == Keys.RightShift) e.Shift = true; else if (key == Keys.LeftControl || key == Keys.RightControl) e.Control = true; } foreach (InputKey key in keys) { if (key.Key == Keys.LeftAlt || key.Key == Keys.RightAlt || key.Key == Keys.LeftShift || key.Key == Keys.RightShift || key.Key == Keys.LeftControl || key.Key == Keys.RightControl) { continue; } bool pressed = state.IsKeyDown(key.Key); double ms = gameTime.ElapsedGameTime.TotalMilliseconds; if (pressed) key.Countdown -= ms; if ((pressed) && (!key.Pressed)) { key.Pressed = true; e.Key = key.Key; if (KeyDown != null) KeyDown.Invoke(this, e); if (KeyPress != null) KeyPress.Invoke(this, e); } else if ((!pressed) && (key.Pressed)) { key.Pressed = false; key.Countdown = RepeatDelay; e.Key = key.Key; if (KeyUp != null) KeyUp.Invoke(this, e); } else if (key.Pressed && key.Countdown < 0) { key.Countdown = RepeatRate; e.Key = key.Key; if (KeyPress != null) KeyPress.Invoke(this, e); } } #endif }