private Buttons.ButtonStates GetDebounced() { Buttons.ButtonStates s2 = Buttons.ButtonStates.None; for (;;) { Buttons.ButtonStates s1 = ReadStates(); if (s1 == s2) { return(s1); } Thread.Sleep(debounceTime); s2 = ReadStates(); } }
public Buttons.ButtonStates GetKeypress(CancellationToken token) { Buttons.ButtonStates bs = GetDebounced(); while (bs != Buttons.ButtonStates.None && !token.IsCancellationRequested) { bs = GetDebounced(); } do { Thread.Sleep(pollTime); bs = GetDebounced(); } while (bs == Buttons.ButtonStates.None && !token.IsCancellationRequested); return(bs); }
public void EnterReleased() { state &= ~Buttons.ButtonStates.Enter; }
public void EscPressed() { state = state | Buttons.ButtonStates.Escape; }
public void RightPressed() { state = state | Buttons.ButtonStates.Right; }
public void LeftPressed() { state = state | Buttons.ButtonStates.Left; }
public void UpPressed() { state = state | Buttons.ButtonStates.Up; }
public void DownReleased() { state &= ~Buttons.ButtonStates.Down; }
public void DownPressed() { state = state | Buttons.ButtonStates.Down; }
public void EnterPressed() { state = state | Buttons.ButtonStates.Enter; }
public void EscReleased() { state &= ~Buttons.ButtonStates.Escape; }
public void UpReleased() { state &= ~Buttons.ButtonStates.Up; }
public void LeftReleased() { state &= ~Buttons.ButtonStates.Left; }
public void RightReleased() { state &= ~Buttons.ButtonStates.Right; }
void ButtonPollThread() { Thread.CurrentThread.IsBackground = true; Buttons.ButtonStates lastState = Buttons.Instance.GetDebounced(); while (!stopPolling.WaitOne(pollTime)) { Buttons.ButtonStates bs = Buttons.Instance.GetDebounced(); if (bs != lastState) { Buttons.ButtonStates pressed = (bs ^ lastState) & (~lastState); switch (pressed) { case Buttons.ButtonStates.Down: queue.Enqueue(DownPressed); break; case Buttons.ButtonStates.Enter: queue.Enqueue(EnterPressed); break; case Buttons.ButtonStates.Escape: queue.Enqueue(EscapePressed); break; case Buttons.ButtonStates.Left: queue.Enqueue(LeftPressed); break; case Buttons.ButtonStates.Right: queue.Enqueue(RightPressed); break; case Buttons.ButtonStates.Up: queue.Enqueue(UpPressed); break; } Buttons.ButtonStates released = (bs ^ lastState) & lastState; switch (released) { case Buttons.ButtonStates.Down: queue.Enqueue(DownReleased); break; case Buttons.ButtonStates.Enter: queue.Enqueue(EnterReleased); break; case Buttons.ButtonStates.Escape: queue.Enqueue(EscapeReleased); break; case Buttons.ButtonStates.Left: queue.Enqueue(LeftReleased); break; case Buttons.ButtonStates.Right: queue.Enqueue(RightReleased); break; case Buttons.ButtonStates.Up: queue.Enqueue(UpReleased); break; } lastState = bs; } } }