在OS X 10.9.2中,命令:osascript -e'告诉应用程序"系统事件"击键" Honk"添加' a'结束所有键入的字符串

时间:2014-04-01 09:46:47

标签: macos osascript

嗯,我的意思是,标题几乎说明了一切。我正在使用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(逃生键)似乎没有出现这种情况)

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

1 个答案:

答案 0 :(得分: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 #)'.

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