apple scriptでキーの長押しは可能ですか?

F6の長押し(1秒)で外部カメラの録画が開始するアプリケーションを使用しています。

apple scriptでこれを操作したいのですが、キーボードのキーを長押しするというのは可能でしょうか。


具体的には、apple scriptを割り当てられるワイヤレススイッチでMacOS Sierra上のカメラキャプチャーソフトの録画の開始をさせたいと思っています。ハードはmac miniやmac pro、mac book proなど様々です。


アドバイスいただけると幸いです。

投稿日 2017/07/19 04:53

返信
返信: 17

2017/07/23 22:21 T22T への返信

T22T様


ご指摘いただきましたGUIからの操作ですが、

ボタンの名前を調べて、スクリプトからクリックするようにすることができました!

キーでの操作に目がいってしまい、そちらの視点がありませんでした。

お恥ずかしいです。


昨日の夜にスクリプトを作成して、

午前中いっぱい仕事で使用して見ましたが気持ちよく動作してくれております。


今回は度々に渡り密なアドバイスをいただき、

本当にありがとうございました。

問題の解決ばかりか、ご回答をいただく度に勉強になりました。

今後もこちらで学ばさせていただきながら使いこなせるよう努めていきたいと思っております。


T22T様のおかげで問題の解決に至りましたことを

感謝とともにご報告させていただきます。

2017/07/19 05:06 kazu-swingfrag への返信

失礼致します。 


『apple scriptを割り当てられるワイヤレススイッチでMacOS Sierra上のカメラキャプチャーソフト』とのことなのですが、このアプリケーションはAppleScriptに対応しているのでしょうか? Script Editor.appの辞書にアプリを追加した時に、エラーが出る場合は、AppleScriptに対応していないです。 対応している場合は、辞書の中にキーボードの長押しに対応するコマンドがありますでしょうか?


 → アプリケーションのスクリプト用語説明を表示する

2017/07/19 18:30 kazu-swingfrag への返信

ご説明を頂きまして、有難うございます。


実際にお使いのアプリケーションで試してみる必要がありますが、AppleScriptのSystem Eventsにあるkey codeコマンドが使えるかもしれません。 以下のスクリプトでF6キーを2秒程度、押し続けることができるかもしれません。”TextEdit"となっているところは、お使いのアプリケーションの名前に変更してください。 TextEdit.appの文章に、Zの文字を2、3秒書き込むことは確認できました。 2のところは、秒単位の整数が入ります。 なので、1、あるいは、3に調節できます。


tell application "TextEdit"


activate

tell application "System Events"

try

set aDate to (current date) + 2

repeat while ((current date) < aDate)

key code 97 # F6キー


-- key code 6 # Zキー

end repeat

end try

end tell

end tell


参照リンク

 → date

 → repeat while

 → http://eastmanreference.com/complete-list-of-applescript-key-codes/

2017/07/21 00:02 kazu-swingfrag への返信

ご説明を頂きまして、有難うございます。


1)repeat whileのコントロールでF6の長押しが再現できないということですね。 承知致しました。 


2)当該アプリケーションのメニューに『Start/Stop recording』のコマンドがありますでしょうか? その場合、GUI scriptingでメニューコマンドそのものを選択することもできそうです。 → Automating the User Interface


3)あるいは、『Start/Stop recording』のコマンドに割り当てられているキーボードショートカットをF6以外に変更して、AppleScriptの方ではそのキーを押す処理に変更することもできそうです。


サポートコミュニティの皆様、他に良いアイデアがありましたら、ご教授ください。 宜しくお願い申し上げます。


4)以下のAppleScriptなのですが、key down、key upというコマンドは無いはずなので、コンパイルエラーになるのでは無いかと思っていたのですが、System EventsのTellブロック内ではあれば、コンパイル可能ですね(驚きました)。 Script Editor.appのバグかもしれません。

key down (key code 97)

delay 2

key up (key code 97)

2017/07/22 17:17 kazu-swingfrag への返信

度々、失礼致します。


アプリケーション(Futudent Software?)の画像表示ウィンドウに、動画撮影を開始したり、停止する為の専用のボタンがある場合は、GUI Scriptingを使って、ボタンをクリックすることができます。 実際にアプリを使いながら、ボタンなどのUI Elementsの構成を調べて、ボタンに割り当てられている名前や番号などを指定してスクリプトを作成する必要があります。 そのため、アプリを実際に使っている人でなければ、スクリプトを完成させるのは、難しいです。


具体的には、こちらのサポートや、Script Editor.appのSystem Events辞書にある、Processes Suiteの各種コマンドやクラスの説明を参照してみてください。


 → Automating the User Interface (『Clicking a Button』の項目)

2017/07/19 05:31 T22T への返信

T22T様
アドバイスありがとうございます!


確認してみましたが、残念ながらアプリケーションはAppleScriptには対応していませんでした。
ですので、AppleScriptでアプリケーションに直接ショートカットキーを入力する形で操作したいと思っています。

こちらのメーカーサイト

http://www.futudent.com/guide/futudent-software-keyboard-shortcuts

にあるショートカットをキーやAppleScriptを割り当てられる入力装置(PowerMate Bluetooth)に設定して、

そちらからアプリケーションを操作できればと思っています。

2017/07/19 18:30 T22T への返信

ありがとうございます!

ご返信が遅くなってすみません。

スクリプトの作成までしていただき本当に感謝です!


今日は実機のある職場が閉まっておりますので、

別の場所でいただいたスクリプトを参考に(というよりほとんどそのまま)、

作成しているスクリプトを書き換えました。
実際にカメラに接続していないとエラーが返ってしまい、アプリケーションが落ちてしまうので

明日実機に接続して検証してみたいと思います。


ご指摘の通り、PowerMate Bluetoothは6つのアクション

(クリック、クリック長押し、右回転、左回転、クリックしながら右回転、クリックしながら左回転)

に任意のキーボードのキー入力やオーディオコントロール、AppleScriptなどを割り付けられるようになっています。

今回はクリックにはF6を、クリック長押しにはF6長押しを指定して使用出来ればと思います。

F6長押しの他に、F6が別にショートカットに割り振られているので

長押しがどのように処理されているのかがわからずにいます。

長押しした時間でみているのか、F6の指定された条件での連続入力によるものなのかが不明ですが、

後者であればT22T様のアドバイスいただいたスクリプトはうまくいきそうな気がします。


明日、実機での検証の結果をお伝え致します!

親身にアドバイスをいただけて本当に感謝しております。

2017/07/21 16:36 kazu-swingfrag への返信

度々、失礼致します。


repeat whileのコントロールについて、ログにcurrent dateのコマンドの実行でエラーが断続的に出ていることを見落としていました(すみません)。 current dateの繰り返しの実行が早すぎるのかもしれません。 従って、current dateのコマンドを使わない方法であれば、キーの入力をさらに早めて、より長押しに近い状態を再現できるかもしれません。 


以下のスクリプトであれば、ログにエラーは記録されないです。 300回のキー入力は1、2秒で終わりますので、400位にしてみても良いと思います。


repeat 300 times

key code 97 # F6キー

end repeat

2017/07/22 01:39 T22T への返信

T22T様


度々に渡るアドバイス、ありがとうございます。

ご指摘頂いた点について何も勉強になることばかりです。


回数を指定してリピートさせる方法ですが、

残念ながらF6の連続入力として捉えられてしまいました。

F6を通常通り押下した時にはカメラ画像のキャプチャがなされるので、

回数分の枚数のキャプチャ画像を得る結果になりました。


解決策を検索して見ましたが、stack overflowというフォーラムサイトで同じようなディスカッションがあるのを見つけました。
やはりこちらでもリピートでの対応が第一に出ていますが

AppleScriptでのファンクションキーの長押しは直接的な解決策が出ていない様子です。

Applescript Press and hold ⌘ F2 for 5 seconds? - Stack Overflow


T22T様には何度もお手数をおかけしてしまい申し訳在りません。

もう少し情報を検索して見ます。

2017/07/23 22:18 T22T への返信

T22T様


ご指摘いただきましたGUIからの操作ですが、

ボタンの名前を調べて、スクリプトからクリックするようにすることができました!

キーでの操作に目がいってしまい、そちらの視点がありませんでした。

お恥ずかしいです。


昨日の夜にスクリプトを作成して、

午前中いっぱい仕事で使用して見ましたが気持ちよく動作してくれております。


今回は度々に渡り密なアドバイスをいただき、

本当にありがとうございました。

問題の解決ばかりか、ご回答をいただく度に勉強になりました。

今後もこちらで学ばさせていただきながら使いこなせるよう努めていきたいと思っております。


T22T様のおかげで問題の解決に至りましたことを

感謝とともにご報告させていただきます。

2017/07/19 16:48 kazu-swingfrag への返信

度々、失礼致します。

AppleScriptを割り当てられる入力装置(PowerMate Bluetooth)に設定して

とのことなのですが、PowerMate Bluetoothの操作に対応する形で、特定のAppleScriptが実行されるという仕組みになっていて、そのAppleScriptにF6を長押しする処理を加えたいという理解であっていますでしょうか?

2017/07/20 22:08 T22T への返信

T22T様


昨日はありがとうございました。
検証してみましたが、残念ながらF6を繰り返し入力するという形では動かせませんでした。

key down {key code 97}

delay 2

key up {key code 97}

のような記述ができると良かったのですが・・・

頂いたスクリプトにもうすこし条件づけなどができないか考えてみたいと思います。

2017/07/21 14:28 T22T への返信

T22T様


ありがとうございます。

残念ながらメニューにはそれに該当する項目はありませんでした。


key down, key upはイレギュラーなものなんですね。
ネット上で情報を探してこれならもしかしたら・・・というので使ってみたのですが、

押し続けるのではなく2回の入力で処理されてしまうのも

バグのせいで不安定なのかもしれませんね。


もう少し情報を探して見たいと思います。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

apple scriptでキーの長押しは可能ですか?

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。