【发布时间】:2013-07-09 04:23:32
【问题描述】:
我的问题是,有没有什么方法可以在带有 applescript/python 的 mac 上可靠地按住一个键?
我几乎在所有地方都搜索过这样的主题,但是,没有一个能把它删掉。我正在尝试使用 Python 从 Arduino 读取串行信息,然后将这些信号作为按键传递。我已经看到如何使用applescript向系统事件发送“key down”,如下代码所示:
(Python code)
def SendDown(key):
string = str(key)
cmd = """osascript -e 'tell application "System Events" to key down (key code """ + string + ")'"
os.system(cmd)
此代码通常可以正常工作,但是,我想控制 Google 飞行模拟器。当我尝试这样做时,按键似乎是一种快速的方式,飞行模拟器或基本的谷歌地球地图移动的只是我预期的一小部分。
我使用这段代码的方式基本上如下(suedocode)
if (ArduinoMessage == "left"):
SendDown(leftKey) #leftKey has been set to 123 -- the code for the left arrow key
etc...
从我的角度来看,我发送的按键按下事件本质上是一个快速按键并且按键没有被按住。我尝试直接在 applescript 中对关键事件进行编程,并取得了一点成功。我的代码看起来像这样:
tell application "System Events"
repeat 50 times
key down (key code 123)
end repeat
key up (key code 123)
end tell
该代码比我得到的移动谷歌地球地图的次数更多,但它需要很长时间才能移动少量(远少于普通的箭头键)。然后我尝试将那个 applescript 写进 Python 并失去了所有改进。
所以我重申这个问题——有什么方法可以可靠地按住带有 applescript/python 的 mac 上的键?
我能够相当轻松地让它在 Windows 上运行,但是,我能够使用一个名为 SendKeys 的仅限 Windows 的库,该库专为此类应用程序而设计。
任何帮助将不胜感激。
谢谢,
杰克
【问题讨论】:
-
在我看来很棒的名字。
标签: python macos applescript keypress keydown