public void Update(KeyboardState currentKeyboardState) { if (_requiresUpdate) { _lastKeyList = _newKeyList; _newKeyList = currentKeyboardState.GetPressedKeys(); StripUnmanagedKeys(ref _newKeyList); if (!TreatModifiersAsKeys) { LastModifiers = NewModifiers; NewModifiers = _newKeyList.GetModifiers(); StripModifiers(ref _newKeyList); } NewKeyDelta = _newKeyList.Except(_lastKeyList).ToList(); if (NewKeyDelta.Any()) { FocusKey = NewKeyDelta.First(); } else if (_lastKeyList.Except(_newKeyList).Any()) { FocusKey = Keys.None; } } }
public void Start(KeyboardState currentKeyboardState) { _requiresUpdate = true; _lastKeyList = currentKeyboardState.GetPressedKeys(); StripUnmanagedKeys(ref _lastKeyList); if (!TreatModifiersAsKeys) { LastModifiers = _lastKeyList.GetModifiers(); StripModifiers(ref _lastKeyList); } NewKeyDelta.Clear(); FocusKey = Keys.None; }