Macos AppleScript能否确定用户是否正在Finder中键入新文件名?

Macos AppleScript能否确定用户是否正在Finder中键入新文件名?,macos,applescript,shortcut,finder,Macos,Applescript,Shortcut,Finder,我的目标是使用OSX的Finder使Delete键(不带任何修改器)将选定的文件移动到垃圾箱,类似于Windows资源管理器。我使用了一个名为Spark的实用程序来实现它。Spark允许我仅在Finder中分配Delete键来执行某些操作。我可以让它键入查找器快捷键(命令backspace),或者激活文件>移动到垃圾箱菜单项,或者运行AppleScript。在每种情况下,文件都会成功移动到垃圾箱。它工作得很好。。。有点太好了 如果我正在重命名一个文件并按Delete键,该文件将被移到垃圾箱,而不

我的目标是使用OSX的Finder使Delete键(不带任何修改器)将选定的文件移动到垃圾箱,类似于Windows资源管理器。我使用了一个名为Spark的实用程序来实现它。Spark允许我仅在Finder中分配Delete键来执行某些操作。我可以让它键入查找器快捷键(命令backspace),或者激活文件>移动到垃圾箱菜单项,或者运行AppleScript。在每种情况下,文件都会成功移动到垃圾箱。它工作得很好。。。有点太好了

如果我正在重命名一个文件并按Delete键,该文件将被移到垃圾箱,而不是移走光标前的字母。我想不出任何聪明的办法来解决这个问题。我唯一能想到的是使用AppleScript来确定文本编辑器是否在Finder中打开,以便用户重命名文件。。。或者,简单地说,确定用户是否正在重命名AppleScript中的文件。有些东西告诉我这超出了AppleScript的功能范围。能做到吗?任何其他建议都是非常受欢迎的。谢谢

更新:

多亏了adayzdone,我现在有了一个工作脚本。为Finder in创建热键,为其分配删除键,并将此脚本用作操作:

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更干净版本的更新脚本。我添加了一行代码,以便在重命名文件并按delete键时重新发出delete键。但它有一个问题:每删除一个字符,就必须按delete键两次。此外,重命名文件时,您可能会使事情处于一种奇怪的状态:如果按delete键删除文件,则可能无法工作。。。需要第二次按delete键才能恢复正常。我认为问题在于从Spark处理的事件中发出delete键。我会设法找到解决办法

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
尝试:

另一种方法是:

       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

我很高兴它对你有用。查看编辑后的答案,查看完整的脚本。:)你比我快。我同时在编辑我的问题。谢谢!!你的剧本要简洁得多。我刚刚意识到一个问题。虽然重命名时防止意外删除,但删除键不再用于编辑。我将用一个可行的解决方案来编辑我的问题。我重新发出了一个delete键序列,但奇怪的是:每按两次delete键,它就工作一次。我确信这与Spark映射delete键和事件中通过脚本发出的同一个键有关。不幸的是,它不起作用。重命名时不会删除任何字符。但是,在不重命名时删除文件确实有效。我要尝试一下Spark以外的东西。我得睡一会儿,但我明天要试试iKey。它有更多用于检测键盘事件的选项。谢谢你的帮助。这很有教育意义,我现在走得更远了。
       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