2012-05-26 34 views
0

我的目標是使刪除鍵(沒有任何修飾符)使用OSX的Finder將選定的文件移動到垃圾桶,類似於Windows資源管理器。我已經設法使用名爲Spark的優秀實用程序來實現它。 Spark只允許我在Finder中分配Delete鍵來執行某些操作。我可以讓它輸入Finder快捷鍵(命令退格),或者激活File> Move to Trash菜單項,或者運行AppleScript。在每種情況下,該文件都成功移至垃圾箱。它工作得很好......太好了。AppleScript可以確定用戶是否在Finder中輸入新文件名?

如果我正在重命名文件並按下Delete鍵,文件將移至垃圾箱,而不是光標被移除前的字母。我想不出有什麼聰明的方法來解決這個問題。我唯一能想到的就是使用AppleScript來確定文本編輯器是否在Finder中打開,以便用戶重命名文件...或者簡單地說,確定用戶是否正在用AppleScript重命名文件。有些東西告訴我這超出了AppleScript的功能。可以做到嗎?任何其他建議將是最受歡迎的。謝謝。

UPDATE:

感謝adayzdone,我現在有一個工作腳本。在Spark創建查找熱鍵,分配Delete鍵給它,使用這個腳本的作用:

tell application "System Events" 
    tell process "Finder" 
     if not (exists text field 1) then 
      tell menu bar 1 
       tell menu bar item "File" 
        tell menu "File" 
         click menu item "Move to Trash" 
        end tell 
       end tell 
      end tell 
     end if 
    end tell 
end tell 

更新2:

下面是基於adayzdone的清潔版本的更新腳本。當您重命名文件並按刪除時,我添加了一行以重新發出刪除鍵。但它有一個問題:您必須按刪除鍵兩次,每刪除一個字符。而且,當重命名完文件後,你可以讓事情處於一個奇怪的狀態:如果你按刪除刪除文件,它可能無法正常工作......在事情恢復正常之前需要再次按下刪除鍵。我認爲問題是從Spark處理的事件中發出刪除鍵。我會盡力找到一個解決方案。

tell application "System Events" 
    tell process "Finder" 
     if exists text field 1 then 
      keystroke "d" using {control down} 
     else 
      click menu item "Move to Trash" of menu 1 of menu bar item "File" of menu bar 1 
     end if 
    end tell 
end tell 

回答

0

嘗試:

tell application "System Events" 
    tell process "Finder" 
     if not (exists text field 1) then click menu item "Move to Trash" of menu 1 of menu bar item "File" of menu bar 1 
    end tell 
end tell 

另一種方法是:

 tell application "Finder" 
    if selection is not {} then 
     tell application "System Events" to tell process "Finder" 
      if (exists text field 1) then 
       keystroke (ASCII character 8) 
      else 
       tell application "Finder" to delete selection 
      end if 
     end tell 
    end if 
end tell 
+0

我很高興它爲你工作。檢查完整腳本的編輯答案。 – adayzdone

+0

:)你打敗了我。我在同一時間編輯我的問題。非常感謝!!你的腳本要簡潔得多。 – ifugu

+0

我喜歡第二種方法。非常可讀。 – ifugu

相關問題