2017-04-06 57 views
5

Bir macOS uygulamasında çalışıyorum ve bir NSViewController numaralı telefondan yerel bir hotkey olayını (komut + yukarı ok tuşu) kullanmak istiyorum. İşteCocoa Klavye komutunu dinle + up Olay

Ben Swift ile bunun için gereken adımları:

override func keyDown(with event: NSEvent) { 

    let modifierkeys = event.modifierFlags.intersection(.deviceIndependentFlagsMask); 
    let hasCommand = modifierkeys == .command; 

    switch Int(event.keyCode) { 
    case kVK_UpArrow where hasCommand: 
     print("command up"); 
     break; 
    case kVK_ANSI_B where hasCommand: 
     print("command B"); 
     break; 
    default: 
     break; 
    } 
} 

Ben oluşturmak ve basın komut + yukarı görünümünde, konsol hiçbir şey gösterir. Fakat + B komutuna bastığımda, "B komutu" oturumu kapatılır.

Peki bu neden Command + up için çalışmıyor? Bunu nasıl başarmalıyım?

Ben çözüm buldum

cevap

3

:

self.keyMonitor = NSEvent.addLocalMonitorForEvents(matching: NSEventMask.keyDown, handler: { (event) -> NSEvent? in 

    if (event.modifierFlags.contains(.command)){ 
     if (Int(event.keyCode) == kVK_UpArrow){ 
      print("command up"); 
      return nil; 
     } 
    } 

    return event; 

}); 

anahtar nokta keydown olayı kesmek ve nil

döndürerek sevk engellemek için