2017-04-13 11 views
0

を使用して、私はこの古いスレッド参照しています: system wide shortcut for Mac OS Xpyobjcを使用してPythonでOSXのグローバルホットキーの検出をプログラミング - エラー「Quartz.CGEventMaskBit」

を私はOSXのためのグローバルホットキーを作成するためにこれを使用しようとしてきましたpyglobalshortcutsを使用していた私の古い方法はもはやPyQt5で動作しないからです。 'CGEventTapCreate'関数で 'kCGEventKeyUp'または 'kCGEventKeyDown'をリッスンすると、プログラムはコード '-11'で終了します。 ここで私がしようとしていたコードです:

import Quartz 
from AppKit import NSKeyUp, NSSystemDefined, NSEvent 

def keyboardTapCallback(proxy, type_, event, refcon): 
    keyEvent = NSEvent.eventWithCGEvent_(event) 
    if keyEvent is None: 
     pass 
    else: 
     print keyEvent 


tap = Quartz.CGEventTapCreate(
           Quartz.kCGSessionEventTap, 
           Quartz.kCGHeadInsertEventTap, 
           Quartz.kCGEventTapOptionListenOnly, 
           # Quartz.kCGEventMaskForAllEvents, 
           Quartz.CGEventMaskBit(Quartz.kCGEventKeyUp), 
           keyboardTapCallback, 
           None 
          ) 


runLoopSource = Quartz.CFMachPortCreateRunLoopSource(None, tap, 0) 
Quartz.CFRunLoopAddSource(
          Quartz.CFRunLoopGetCurrent(), 
          runLoopSource, 
          Quartz.kCFRunLoopDefaultMode 
         ) 

Quartz.CGEventTapEnable(tap, True) 

try: 
    Quartz.CFRunLoopRun() 
except Exception as e: 
    print e, "<<<<<<<<<<<<<<<" 

私も「Quartz.kCGEventMaskForAllEvents」で「Quartz.kCGEventMaskBit(Quartz.kCGEventKeyUp)」を交換しようとしたが、これは失敗しなかった一方で、それはまた、任意の英数字キーを返すされていません(私はショートカットとして 'ctrl + shift + d'を使用できる必要があります)。

Quartzでこのショートカットを検出できないか、OSXでより良い方法がありますか?

おかげで、 -mark

答えて

0

私はちょうどそれを考え出したと思います。私はSynergyを介して共有キーボードを使用しています。私がMacのキーボードに戻ったとき、キーイベントを検出することができました。

ありがとうございます! - マーク

関連する問題