Macbook OpenEmu Python发送击键

时间:2016-09-24 02:50:09

标签: python macos emulation osascript

我对this MarlIO项目印象非常深刻,并希望使用Python实现类似的功能。但是,我让模拟器OpenEmu正常工作,但是,我不知道如何使用Python控制游戏。

难道只是发送几次击键问题?!伙计,在Mac上并不是那么简单。

In [41]: cmd1
Out[41]: '\nosascript -e \'tell application "System Events" to key code 48 using {command down}\' \n'

In [42]: cmd2
Out[42]: '\nosascript -e \'tell application "System Events" to keystroke "a"\' \n'

我想首先使用 COMMAND + TAB 切换到openEmu,然后按 a 跳转。但是,当我运行这两个命令时,它只切换到OpenEmu,看起来像按键 a 没有被发送。

enter image description here

然而,当我跑步时,cmd2'它是分开的,显然是有效的。 然后我测试了一个不同的应用程序 - 崇高,它似乎在那里工作。

enter image description here

有人能指出我正确的方向,我真的做错了OpenEmu吗?

1 个答案:

答案 0 :(得分:1)

几个月前我做过类似的事情。键击被发送。但是,系统事件击键几乎没有时间,因此模拟器的输入机制无法接收它们。

我无法找到使用AppleScript请求持续时间的方法,因此我最终使用Quartz event taps来解决问题,例如,您可以使用"开始按键,睡眠0.1秒,停止按键"。我是在Swift中完成的,但您应该可以使用ctype模块在​​Python中完成。

另请注意,可能难以基于帧与仿真器进行同步。我raised that problem with the project maintainers,但由于反应比较冷,我转过身去。