因此我被要求将一些内部帮助应用程序移植到Mac OS X 10.7。适用于Mac OS X的系统范围快捷方式
工作都非常好,因为平台相关的代码是最小的无论如何,但一个应用程序需要一个系统范围的快捷方式功能(即RegisterHotkey功能),我找不到任何文档,我怎么会在Mac上做到这一点。
该程序在Python 3.2中使用了PyQt gui。和Windows对应的代码基本上是:
def register_hotkey(self):
hwnd = int(self.winId())
modifiers, key = self._get_hotkey()
user32.RegisterHotKey(hwnd, self._MESSAGE_ID, modifiers, key)
,然后接收热键事件:
def winEvent(self, msg):
if msg.message == w32.WM_HOTKEY:
self.handle_hotkey()
return True, id(msg)
return False, id(msg)
请注意,我并不需要一个Python变种,我可以很容易地编写一个简单的C扩展 - 所以C/objective-c解决方案也是受欢迎的。
谢谢,看起来正是我所需要的。我得到pyobjc为Python3进行编译(稍微比预期更麻烦),但是当运行代码时它告诉我'AttributeError:'模块'对象没有属性'CGEventTapCreate'。 pyobjc应该与python3一起工作,所以我错过了一些东西,或者API只是没有完全移植? – Voo 2012-07-06 00:57:39
@Voo:对不起,不知道;我只使用python 2.7和pyobjc。 – 2012-07-06 05:49:26
早上调试了一下这个问题并修复了它。结论是:python3和pyobjc真的不被推荐,但可以让它工作。这肯定比学习可可框架或将应用程序反向移植到python2的工作要少。再次感谢您的帮助。 – Voo 2012-07-06 11:28:47