Skip to content

Instantly share code, notes, and snippets.

@almaleh
Created March 27, 2019 01:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save almaleh/8265e69e9d7a28199276b89b785f530f to your computer and use it in GitHub Desktop.
Save almaleh/8265e69e9d7a28199276b89b785f530f to your computer and use it in GitHub Desktop.
var recentSearch = false
var returnKeyWasPressed = false
var upArrowWasPressed = false
var downArrowWasPressed = false
let kLeftArrowKeyCode: UInt16 = 123
let kRightArrowKeyCode: UInt16 = 124
let kDownArrowKeyCode: UInt16 = 125
let kUpArrowKeyCode: UInt16 = 126
let kReturn: UInt16 = 36
func myKeyDownEvent(event: NSEvent) -> NSEvent
{
switch event.keyCode {
case kReturn:
guard let firstResponder = NSApp.keyWindow?.firstResponder else { break }
if firstResponder == tableView && !displayedUsers.isEmpty {
searchFromTable(row: tableView.selectedRow)
}
keyDown(with: event)
returnKeyWasPressed = true
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
returnKeyWasPressed = false
}
case kDownArrowKeyCode:
autoCompleteScrollView.becomeFirstResponder()
downArrowWasPressed = true
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
downArrowWasPressed = false
}
case kUpArrowKeyCode:
guard let firstResponder = NSApp.keyWindow?.firstResponder else { break }
if tableView.selectedRow == 0 && firstResponder == tableView {
srchField.window?.makeFirstResponder(srchField)
}
upArrowWasPressed = true
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
upArrowWasPressed = false
}
default:
DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) { [unowned self] in
self.autoComplete()
}
}
return event
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment