2016-09-13 11 views
0

キーボードからキーストローク(任意のキーが押された)をリッスン/検出するようにします。約5秒間キーが押されていない場合、何かを続ける。それ以外の場合は、テキスト編集で押されたキーを記録し続けます。AppleScriptでのキーストロークの検出

ご協力いただければ幸いです。

+0

あなたがそれを行うことはできません – vadian

答えて

1

あなたの質問にTextEditを指定したので、指定した秒数以内にTextEditドキュメントの変更をチェックするスクリプトを作成しました。これは、ドキュメントに何かを入力するキーしか検出しないので、正確にはではありません。しかし、のすべてのキーが生のAppleScriptで押されていることを検出する方法はないので、これはあなたが得ることのできる最も近いものです(誰かがScripting Additionやエージェントアプリケーションを作成しない限り)。

ここでは使用のであると思い、スクリプトです:AppleScriptでは

global lastText, lastTime, startTime 

on run 
    set lastText to application "TextEdit"'s (text of the document of the front window) 
    set lastTime to current date 
    set startTime to current date 

    repeat 
     if (checkForRecentTextUpdate given seconds:5) is true then 
      -- Do something while the user is typing 

     else 
      -- Do something after the user has stopped typing 

      exit repeat -- This is only an example 
     end if 
    end repeat 

end run 

to checkForRecentTextUpdate given seconds:secsRequired 
    tell application "TextEdit" 

     -- If midnight just passed, reset the last time 
     if (the day of (the current date)) > (the day of the lastTime) ¬ 
      then set lastTime to current date 

     -- If we just started, we can't judge; give a positive 
     if ((the time of (the current date)) - (the time of the startTime)) < secsRequired ¬ 
      then return true 

     -- If there have been changes since the last run, update info 
     if (the text of the document of the front window) ≠ the lastText then 
      set lastTime to the current date 
      set lastText to the text of the document of the front window 
     end if 

     -- If the specifiied number of seconds has passed without any text updates, give a negative 
     if ((the time of (the current date)) - (the time of the lastTime)) ≥ secsRequired ¬ 
      then return false 

     -- If we got this far, there were changes in the seconds specified; give a positive 
     return true 

    end tell 
end checkForRecentTextUpdate 
関連する問題