feat: use arrow keys to navigate the UI (closes #53)

This commit is contained in:
Louis Pontoise committed 2019-10-25 19:17:12 +09:00
1 parent 3d5f5bac73
commit 1049a50451
1 file changed
+7 -3
+7 -3
View File
@@ -8,6 +8,8 @@ enum KeyCode: UInt16 {
case tab = 58
case control = 59
case function = 63
case leftArrow = 123
case rightArrow = 124
}
class Keyboard {
@@ -43,17 +45,19 @@ func keyboardHandler(_ cgEvent: CGEvent, _ delegate: Application) -> Unmanaged<C
let keycode = KeyCode(rawValue: event.keyCode)
let isTab = event.keyCode == Preferences.tabKeyCode
let isMeta = keycode == Preferences.metaKeyCode
let isRightArrow = keycode == KeyCode.rightArrow
let isLeftArrow = keycode == KeyCode.leftArrow
let isEscape = keycode == KeyCode.escape
if event.modifierFlags.contains(Preferences.metaModifierFlag!) {
if isMeta {
delegate.preActivate()
} else if isTab && event.modifierFlags.contains(.shift) && keyDown {
} else if keyDown && (isLeftArrow || (isTab && event.modifierFlags.contains(.shift))) {
delegate.showUiOrSelectPrevious()
return nil // previously focused app should not receive keys
} else if isTab && keyDown {
} else if keyDown && (isRightArrow || isTab) {
delegate.showUiOrSelectNext()
return nil // previously focused app should not receive keys
} else if isEscape && keyDown {
} else if keyDown && isEscape {
delegate.hideUi()
return nil // previously focused app should not receive keys
}