AppleScript可以确定用户是否在Finder中键入新文件名?

时间:2012-05-26 02:44:57

标签: macos applescript shortcut finder

我的目标是使用OSX的Finder使删除键(不带任何修饰符)将所选文件移动到垃圾箱,类似于Windows资源管理器。我已经设法使用名为Spark的强大实用程序来完成它。 Spark允许我在仅在Finder中指定Delete键来执行某些操作。我可以让它键入Finder快捷键(命令退格),或激活文件>移至“废纸篓”菜单项,或运行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清洁版的更新脚本。当您重命名文件并按删除时,我添加了一行来重新发出删除键。但它存在一个问题:每删除一个字符,您必须按两次删除键。此外,您可以在重命名文件时将事物置于奇怪的状态:如果您按删除删除文件,它可能无法正常工作...在事情恢复正常之前需要第二次按键删除。我认为问题在于从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

1 个答案:

答案 0 :(得分: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