を使用して、私はこの古いスレッド参照しています: 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