我引用的是这个旧的线索: system wide shortcut for Mac OS X
自从我以前使用pyglobalshortcuts的方法不再适用于PyQt5之后,我一直试图使用这个方法为osx创建一个全局热键。 问题是,当我在“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, "<<<<<<<<<<<<<<<"
我还试着替换石英。kCGEventMaskBit(石英。kCGEventKeyUp)'与'石英。kCGEventMaskForAllEvents'虽然这没有失败,但它也没有返回任何字母数字键(我需要能够使用'ctrl+shift+d'作为快捷方式)。在
我是不是离能够在Quartz中检测到这个快捷方式还差得很远呢,还是OSX中有更好的方法呢?在
谢谢, -马克
我想我刚想好了。我通过Synergy使用共享键盘。当我回到我的mac键盘时,它可以检测到按键事件。在
谢谢! -马克
相关问题 更多 >
编程相关推荐