キー押下に応答するApplescript?


0

AppleScriptを書きたい

  1. を押すまで(ループで)実行されます esc
  2. キーストロークは、「リッスン」12など、
  3. 各キーを押すたびに特定のコマンドを実行します(シェルコマンドddcctlを実行してセカンダリモニターの輝度/コントラストを変更します)

私は検索しましたが、見つかったものはすべて、キーを押すことのシミュレーションに関連しています。

(これでbash問題が解決したとしても、起動するのに十分なシェルスクリプトがわからない場合は...)


更新

このヒントに基づいて、以下でシェルスクリプトを作成しましたこれは、ターミナル内で実行する場合にのみ有効です。たとえば、SpotlightまたはAppleScriptを介してこのスクリプトを「見えないように」実行しdo shell script、終了するまで応答させる方法はありますか?

#!/bin/bash
if [ -t 0 ]; then stty -echo -icanon -icrnl time 0 min 0; fi
keypress=''
while [ "$k" != "^[" ]; do
    case "$k" in
        1) ddcctl -d 1 -b 10;;
        2) ddcctl -d 1 -b 20;;
        3) ddcctl -d 1 -b 30;;
        # ...etc...
        0) ddcctl -d 1 -b 100;;
    esac
    k="`cat -v`"
done
if [ -t 0 ]; then stty sane; fi
exit 0

フォーカスされたウィンドウ内だけでなく、システム全体をキャプチャする場合は、キー押下をキャプチャする別の方法が必要になります。代わりに、使用するキーをバインドして、単純なパラメーターでリンゴスクリプトを実行することをお勧めします(たとえば、ctrl-1をバインドして、パラメーター1でスクリプトを実行します)。
jksoegaard

回答:


1

これを実現する最も簡単な方法は、おそらくAutomatorを使用してサービスを作成することです。サービスは、次のようなbashスクリプトを実行するだけです。

#!/bin/bash
ddcctl -d 1 -b 10

次に、[システム環境設定]の[キーボード]で、キーボードショートカットを追加してサービスを有効にします。

これにより、すべてのプログラムでショートカットが機能します。

おそらく、必要な10個のキーボードショートカットごとにこれを行う必要があります。


ええ、キーストロークから単一のコマンドを実行する多くの方法を知っています。しかし、これは私が望むものではありません。何かを起動してから、1〜9で明るさを調整できるようにします。
ダン

これは、同じ方法を使用して達成できます。キーボードショートカットによって実行されるbashスクリプトは、「何か」が起動されているかどうかを確認するだけです。起動されていない場合、何も実行されません。次に、起動されると、終了するまで何も行わないダミープログラムを作成します。
-jksoegaard

または、これを行うスタンドアロンプ​​ログラムを作成する場合は、AppKitのNSEventでaddGlobalMonitorForEventsメソッドを使用します。ただし、AppleScriptを使用するのがどれほど簡単かはわかりません。ただし、Swiftから行うのは比較的簡単です。
jksoegaard

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.