2017-04-13 2 views
0

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

Répondre

0

Je crois que je viens tout compris. J'utilise un clavier partagé via Synergy. Quand je suis retourné à mon clavier mac, il pouvait détecter les événements clés.

Merci! -Mark