В настоящее время я изменяю приложение, написанное кем-то в моей организации, которое больше не может его поддерживать.Я пытаюсь реализовать общесистемную глобальную горячую клавишу, которая будет просто фокусировать окно приложения при нажатии.
Единственная реализация этого, с которой я столкнулся онлайн, была через PyObjC в их примере HotKeyPython.В этом примере используется Carbon, и, похоже, он вообще не работал, когда я его тестировал.
Вот то, что я пытался, которое, похоже, не сработало:
from Foundation import *
from AppKit import *
from Carbon.CarbonEvt import RegisterEventHotKey
from Carbon.Events import cmdKey, controlKey, optionKey, shiftKey
import objc, AppLauncher
import platform
import struct
IS_SNOW_LEOPARD = platform.mac_ver()[0].startswith('10.6')
if IS_SNOW_LEOPARD:
from Quartz import *
kEventHotKeyPressedSubtype = 6
kEventHotKeyReleasedSubtype = 9
class AppLauncher(NSObject):
window = objc.IBOutlet()
view = objc.IBOutlet()
field = objc.IBOutlet()
def awakeFromNib(self):
self.window.makeFirstResponder_(self.field)
self.field.selectText_(self)
self.field.setDelegate_(self)
self.controlTextDidChange_(None)
def applicationDidFinishLaunching(self):
# register cmd-control-J
self.hotKeyRef = RegisterEventHotKey(38, cmdKey + controlKey, (0, 0),
sendEvent_(), 0)
def sendEvent_(self, theEvent):
if theEvent.type() == NSSystemDefined and \
theEvent.subtype() == kEventHotKeyPressedSubtype:
self.activateIgnoringOtherApps_(True)
NSRunAlertPanel(u'Hot Key Pressed', u'Hot Key Pressed',
None, None, None)
super(AppLauncher, self).sendEvent_(theEvent)
Есть какие-нибудь мысли о том, как я могу заставить это работать (желательно без вовлечения углерода)?
Большое спасибо.