0

私の目標は、Windows Explorer と同様に、OSX の Finder を使用して、選択したファイルを削除キー (修飾子なし) でゴミ箱に移動させることです。私は、Spark と呼ばれる優れたユーティリティ アプリケーションを使用してそれを行うことができました。Spark では、Finder でのみ、Delete キーを割り当てて何かを実行できます。Finder のショートカット キー (command-backspace) をタイプするか、File > Move to Trash メニュー項目をアクティブにするか、AppleScript を実行することができます。いずれの場合も、ファイルはゴミ箱に正常に移動されます。それはうまく機能します...少しうまくいきます。

ファイルの名前を変更しているときに Delete キーを押すと、カーソルの前の文字が削除されるのではなく、ファイルがごみ箱に移動されます。この問題を回避する賢い方法は思いつきません。私が考えることができる唯一のことは、AppleScript を使用して、ユーザーがファイルの名前を変更するために Finder でテキスト エディターが開いているかどうかを判断することです... または、簡単に言えば、ユーザーが AppleScript でファイルの名前を変更しているかどうかを判断します。これは AppleScript の機能を超えていることがわかります。それはできますか?他の提案は大歓迎です。ありがとう。

アップデート:

adayzdone のおかげで、今ではスクリプトが動作しています。SparkでFinder のホットキーを作成し、それに 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 のよりクリーンなバージョンに基づく更新されたスクリプトです。ファイルの名前を変更して削除を押したときに、削除キーを再発行する行を追加しました。ただし、問題があります。1 文字削除するたびに削除キーを 2 回押す必要があります。また、ファイルの名前を変更すると、奇妙な状態のままになる可能性があります。削除を押してファイルを削除すると、機能しない可能性があります...正常に戻る前に、もう一度削除キーを押す必要があります。問題は、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
4

1 に答える 1

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
于 2012-05-26T04:18:13.353 に答える