Je fais référence ce vieux fil: system wide shortcut for Mac OS XProgrammation détection de raccourci clavier global pour Mac OS X en Python à l'aide PyObjC - Erreur en utilisant « Quartz.CGEventMaskBit »
je tente d'utiliser pour créer un raccourci clavier global pour Mac OS X depuis mon ancienne méthode d'utilisation de pyglobalshortcuts ne fonctionne plus avec PyQt5. Le problème est que lorsque j'écoute 'kCGEventKeyUp' ou 'kCGEventKeyDown' dans la fonction 'CGEventTapCreate', le programme se termine par le code '-11'. Voici le code que je tentais:
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, "<<<<<<<<<<<<<<<"
J'ai aussi essayé de remplacer « Quartz.kCGEventMaskBit (Quartz.kCGEventKeyUp) » avec « Quartz.kCGEventMaskForAllEvents » et bien que cela ne manque pas, il est également ne renvoie pas les touches alphanumériques (Je dois pouvoir utiliser 'ctrl + shift + d' comme raccourci).
Est-ce que je suis terriblement loin de pouvoir détecter ce raccourci dans Quartz ou existe-t-il une meilleure méthode sous OSX?
Merci, -Mark