嗯,我的意思是,标题几乎说明了一切。我正在使用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的替代命令。
答案 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 #)'.
出于某种原因,这会按下按键而不会产生奇怪的问题。