2017-08-16 24 views
2

私はこれをAsk Differentに投稿すると考えましたが、主にコードに焦点を当てているため、ここに属していると思いました。OSのアップグレード後にシミュレートされたキーコマンドが動作しない

私は私のMac上でスイッチスペースのためのマクロを作成しました.Sierraへのアップグレード以降、次のAppleScriptは動作しなくなりました。誰かが何か変わったかどうか知っていますか?

tell application "System Events" to key code 124 using control down 

tell application "System Events" to key code 123 using control down 

の端末で動作しているとき、これは(^[[1;5Dに注意してください)出力されます:

14:16 [email protected] ~ $ osascript -e 'tell application "System Events" to key code 123 using control down' 
^[[1;5D14:18 [email protected] ~ $ ;5D 

そして、AppleScriptのエディタを経由して実行している場合、何も起こりません。

答えて

2

はい、バグです。

コントロールキーを使用して、いくつかのグローバルショートカットをシミュレートするには、コマンドがFNキー(シエラの回避策)が必要です。

それはアップルスクリプトのkey codeコマンドでFNキーを使用することはできませんが、それはのPythonスクリプトCore Graphicsフレームワークの方法で可能です。ここで


はこのショートカットをシミュレートするスクリプトです - (右矢印+コントロール)>、あなたはターミナル(SHで、bashや任意の類似したシェル)でスクリプトを実行することができます

/usr/bin/python -c 'import time; import Quartz.CoreGraphics as QCG; e = QCG.CGEventCreateKeyboardEvent(None, 124, True); QCG.CGEventSetFlags(e, (QCG.kCGEventFlagMaskControl | QCG.kCGEventFlagMaskSecondaryFn)); QCG.CGEventPost(QCG.kCGHIDEventTap, e); time.sleep(0.1); QCG.CGEventSetType(e, QCG.kCGEventKeyUp); QCG.CGEventPost(QCG.kCGHIDEventTap, e)' 

ここで "スクリプトエディタ" アプリケーションでテストするのAppleScriptです:

-- For switching spaces, 124 = the Right Arrow key, use 123 for the Left Arrow key 
do shell script "/usr/bin/python -c 'import time; import Quartz.CoreGraphics as QCG; e = QCG.CGEventCreateKeyboardEvent(None, 124, True); QCG.CGEventSetFlags(e, (QCG.kCGEventFlagMaskControl | QCG.kCGEventFlagMaskSecondaryFn)); QCG.CGEventPost(QCG.kCGHIDEventTap, e); time.sleep(0.1); QCG.CGEventSetType(e, QCG.kCGEventKeyUp); QCG.CGEventPost(QCG.kCGHIDEventTap, e)'" 
+0

あなたは伝説です...何かがアップしていると思いました – Isaac

2

キーコードがシステム環境設定のキーボードショートカットと一致していることを確認してください。ここでは、システム環境設定のキーボードショートカットがあり、AppleScriptコマンドと正しく一致しています。

enter image description here

tell application "System Events" 
    key code 18 using (control down) -- Desktop 1 
end tell 

tell application "System Events" 
    key code 19 using (control down) -- Desktop 2 
end tell 

tell application "System Events" 
    key code 20 using (control down) -- Desktop 3 
end tell 

tell application "System Events" 
    key code 21 using (control down) -- Desktop 4 
end tell 

シエラの最新バージョンでは正しく私のためにこれらの機能。

+0

これらのキーは機能しているようです... Ctrl +左またはCtrl +右のコマンドではありません – Isaac

関連する問題