1

好吧,我的意思是,标题几乎说明了一切。我正在使用Python通过

osascript -e 'tell application "System Events" to keystroke "Honk"'

到 10.9 终端。使用 osascript 将击键传递给应用程序,在 10.8 及更低版本中,此命令运行良好。但是现在我在 10.9 中使用它来输入应用程序,并且我在每种类型中都添加了一个“a”。

例如,我的程序以插入模式启动 crontab:

~                                                                             
~                                                                               
~                                                                               
~                                                                               
-- INSERT --

但是,使用上面的 osascript 命令后,会产生

Honka
~
~
~
~
-- INSERT --

这也发生在类似的命令中

osascript -e 'tell application "System Events" to keycode 52'

(键码 52 是回车键,但奇怪的是,键码 53(Escape 键)似乎不会出现这种情况)

虽然我可以通过 osascript 传递退格键,但额外的“a”会导致启动命令等问题,不能简单地退格。如何避免、解决或以其他方式解决此问题?我已经广泛搜索,找不到适用于 10.9 的替代命令。

4

1 回答 1

0

尽管我一直在多个 10.9.2 上遇到此问题,但我想我要么做错了,要么还不是一个广泛的问题。

经过大量尝试后,我找到了一种解决方法,使用代码将数据写入剪贴板,然后使用 osascript 将其粘贴。我目前正在使用 python(事实上,我应该在我的问题中留下 python 详细信息,如这只是一种解决方法)。但这个概念可以扩展到其他情况,我敢肯定:

def setClipboardData(data): #Copies data into clipboard, clearing old contents
    p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
    p.stdin.write(data)
    p.stdin.close()
    retcode = p.wait()

def PasteType(data):
    setClipboardData(data)
    string = 'v'
    using = 'command'
    string = "\"" + string + "\""
    if using != '':
        string = string + ' using {'+using+' down}'
    system("osascript -e \'tell application \"System Events\" to keystroke " + string + "'")

很简单,要输入字母,您必须复制粘贴到使用的东西中

pbcopy <TEXT>
osascript -e \'tell application \"System Events\" to keystroke "v" using {command down}'

另外,我遇​​到了同样的问题

osascript -e \'tell application \"System Events\" to key down (key code #)'

按下 Esc 和 Enter 之类的键,要解决这个问题,你只需要做

osascript -e \'tell application \"System Events\" to key up (key code #)'.

出于某种原因,这按下了键而不会产生奇怪的问题。

于 2014-04-17T09:54:56.730 回答