public void Clear() { DownKeys.Clear(); PressedKeys.Clear(); CurrentKeyboardState = default(KeyboardState); PreviousKeyboardState = default(KeyboardState); }
protected virtual void OnKeyUp(KeyEventArgs e) { if (DownKeys.Contains(e.Key)) { DownKeys.Remove(e.Key); keyEvents.Add(e); } KeyUp?.Invoke(this, e); }
protected virtual void OnKeyDown(KeyEventArgs e) { if (!DownKeys.Contains(e.Key)) { DownKeys.Add(e.Key); keyEvents.Add(e); } KeyDown?.Invoke(this, e); }
public List <TResponseType> Draw() { Console.CursorVisible = false; StartPosition = Console.CursorTop; while (true) { Position.Write(Question); if (CurrentIndex < 0) { ChangeIndex(0); } for (var index = 0; index < Options.Count; index++) { var consoleRadioCheck = Options[index]; Position.WriteCleaningLine(consoleRadioCheck.ToString(), index + 1); } var key = Console.ReadKey(true); if (DownKeys.Contains(key.Key)) { DownIndex(); } if (UpKeys.Contains(key.Key)) { UpIndex(); } if (SelectKeys.Contains(key.Key)) { ToggleCurrent(); } if (key.Key == ConsoleKey.Enter) { var consoleRadioChecks = Options.Where(i => i.IsChecked).ToList(); if (Parameters.Required && consoleRadioChecks.Count <= 0) { continue; } Console.CursorVisible = true; Clear(); Console.WriteLine(Question + " > " + consoleRadioChecks .Select(i => i.Message) .Aggregate((x, y) => $"{x}, {y}")); return(consoleRadioChecks.Select(i => i.Value).ToList()); } } }
public bool IsOtherDown(Keys key) { if (key == Keys.Alt) { return(IsOtherDown(Key.Alt)); } if (key == Keys.Control) { return(IsOtherDown(Key.Ctrl)); } if (key == Keys.Shift) { return(IsOtherDown(Key.Shift)); } var downKeys = DownKeys.ToArray(); return(downKeys.Length > 1 || (downKeys.Length == 1 && downKeys[0] != key)); }
public bool IsOtherDown(Key key) { if (key == Key.CtrlChord) { key = Key.Ctrl; } if (key == Key.AltChord) { key = Key.Alt; } if (key == Key.ShiftChord) { key = Key.Shift; } var downKeys = DownKeys.ToArray(); return(downKeys.Length > key.Codes.Count || downKeys.Any(k => !key.Codes.Contains(k))); }
public virtual void Update() { PressedKeys.Clear(); ReleasedKeys.Clear(); foreach (KeyEventArgs keyEvent in keyEvents) { if (DownKeys.Contains(keyEvent.Key)) { PressedKeys.Add(keyEvent.Key); } else { ReleasedKeys.Add(keyEvent.Key); } } keyEvents.Clear(); }
private static void SetState(Key key, bool state) { if (StateIDs.ContainsKey(key)) { StateIDs[key]++; } else { StateIDs.Add(key, 1); } if (state) { DownKeys.Add(key); } else { DownKeys.Remove(key); } }
public void Update() { PreviousKeyboardState = CurrentKeyboardState; CurrentKeyboardState = Keyboard.GetState(); DownKeys.Clear(); PressedKeys.Clear(); Keys[] keys = CurrentKeyboardState.GetPressedKeys(); // TODO: per frame heap allocs foreach (Keys key in keys) { if (PreviousKeyboardState.IsKeyUp(key) && IsKeyDown(key)) { PressedKeys.Add(key); } //else //if (_previousKeyState.IsKeyDown(key) && _currentKeyState.IsKeyDown(key)) // DownKeys.Add(key); if (IsKeyDown(key)) { DownKeys.Add(key); } } }
public static bool IsDown(Key key) { if (key.IsModifierFlag()) { if (key.IsShift()) { return(IsDown(Key.LShift) || IsDown(Key.RShift)); } else if (key.IsCtrl()) { return(IsDown(Key.LCtrl) || IsDown(Key.RCtrl)); } else if (key.IsAlt()) { return(IsDown(Key.LAlt) || IsDown(Key.RAlt)); } else if (key.IsWin()) { return(IsDown(Key.LWin) || IsDown(Key.RWin)); } } return(DownKeys.Contains(key)); }
static internal void Update() { keyboardPrev = keyboard; mousePrev = mouse; mousePosPrev = mousePos; prevDownKeys = DownKeys.ToArray(); prevDownButtons = DownButtons.ToArray(); keyboard = Keyboard.GetState(); mouse = Mouse.GetState(); if (AcceptMouse) { mousePos = new Vector2(Cursor.Position.X - MMW.X, Cursor.Position.Y - MMW.Y); } DownKeys = GetDownKeys(); { var list = new List <Key>(); foreach (var k in DownKeys) { if (!prevDownKeys.Contains(k)) { list.Add(k); } } PressedKeys = list.ToArray(); } { var list = new List <Key>(); foreach (var k in prevDownKeys) { if (!DownKeys.Contains(k)) { list.Add(k); } } ReleasedKeys = list.ToArray(); } DownButtons = GetDownButtons(); { var list = new List <MouseButton>(); foreach (var b in DownButtons) { if (!prevDownButtons.Contains(b)) { list.Add(b); } } PressedButtons = list.ToArray(); } { var list = new List <MouseButton>(); foreach (var b in prevDownButtons) { if (!DownButtons.Contains(b)) { list.Add(b); } } ReleasedButtons = list.ToArray(); } }
public bool IsKeyDown(Key key) => DownKeys.Contains(key);