public bool IsKeyDown(SkiVirtualKey key) { lock (_downKeys) { return(_downKeys.Contains(key)); } }
public void OnKeyDown(SkiVirtualKey key) { lock (_downKeys) { if (!_downKeys.Add(key)) { return; } } lock (_keyBindingsMap) { if (_keyBindingsMap.TryGetValue(key, out var keyBindings)) { var isInputViewFocused = IsInputViewFocused; var matchedKeyBindings = keyBindings .Where(b => !isInputViewFocused || b.BehaviorWhenInputViewFocused == BehaviorWhenInputViewFocused.Active) .Where(b => b.KeyCombination.Modifiers.All(IsKeyDown)) .Where(b => b.Predicate.Invoke()) .OrderByDescending(b => b.KeyCombination.Modifiers.Count); var maxModifierCount = 0; foreach (var matchedKeyBinding in matchedKeyBindings) { var keyCombinationModifierCount = matchedKeyBinding.KeyCombination.Modifiers.Count; if (maxModifierCount > keyCombinationModifierCount) { break; } maxModifierCount = keyCombinationModifierCount; matchedKeyBinding.OnPressed(); } } } KeyDown.Invoke(key); }
public void OnKeyUp(SkiVirtualKey key) { lock (_downKeys) { if (!_downKeys.Remove(key)) { return; } } lock (_keyBindingsMap) { if (_keyBindingsMap.TryGetValue(key, out var keyBindings)) { var matchedKeyBindings = keyBindings.Where(b => b.IsPressed); foreach (var matchedKeyBinding in matchedKeyBindings) { matchedKeyBinding.OnReleased(); } } } KeyUp.Invoke(key); }
public bool IsKeyUp(SkiVirtualKey key) { return(!IsKeyDown(key)); }
public SkiKeyCombination(SkiVirtualKey key, IReadOnlyCollection <SkiVirtualKey> modifiers = null) { Key = key; Modifiers = modifiers ?? new SkiVirtualKey[0]; }