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 (エスケープ キー) では発生しないようです)

osascript を介してバックスペースを渡すことはできますが、余分な 'a' がコマンドの開始などの問題を引き起こしています。この問題を回避、解決、または回避するにはどうすればよいですか? 私は広範囲にグーグルで検索しましたが、10.9 で動作する代替コマンドが見つかりません。

4

1 に答える 1

0

複数の 10.9.2 で一貫してこの問題が発生していますが、何か間違っているか、まだ大きな問題ではないと思います。

多くの試行錯誤の後、コードを使用してデータをクリップボードに書き込み、次に osascript を使用してそれを貼り付ける回避策にたどり着きました。これは単なる回避策です)。しかし、この概念は他の状況にも拡張できると確信しています。

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 に答える