【问题标题】:Creating AppleScript for global keyboard shortcuts为全局键盘快捷键创建 AppleScript
【发布时间】:2023-08-24 20:49:01
【问题描述】:

我正在为我的 Mac 创建一个 AppleScript,它会告诉 Spotify 根据键盘快捷键跳过或返回曲目。我相信我的代码是正确的,但无法让脚本正常工作,并认为这可能是由于 if-then 语句的定位造成的。

关于我可以做些什么来完成这项工作的任何提示?

tell application "Spotify"
    activate

if keystroke "e" using {command down, option down, control down} then 

tell application "Spotify"
    next track

end if
end tell

if keystroke "r" using {command down, option down, control down} then

tell application "Spotify"
    previous track

end if
end tell

【问题讨论】:

  • RE:“我相信我的代码是正确的,但无法让脚本正常工作,并认为这可能是由于 if-then 语句的定位。” -- 我没有 Spotify,所以我无法为您提供任何具体的帮助。但是,您的 if statements 没有做任何事情,它们甚至不是有效的 statements,因为它们没有提供任何机制来确定是否按下 按键事件发生了!此外,正如您所写的那样,您的 AppleScript code 甚至无法编译,因此甚至无法执行。
  • Spotify 是否已经为这些操作提供了键盘快捷键
  • 通过谷歌搜索,Spotify 可以在 Mac 上与 媒体键 一起使用,那么您实际上在尝试什么在这里完成您无法使用 媒体键
  • 感谢@user3439894 告诉我!我对编写代码和 AppleScript 还很陌生,这就是这些语句无效的原因。我需要做什么才能使它们成为有效的陈述?我正在尝试使用键盘快捷键来控制 Spotify,而不是媒体键。 Spotify 必须专注于发生这种情况,这就是为什么我试图创建一个脚本来防止这种情况发生。

标签: macos applescript keyboard-shortcuts nsapplescript


【解决方案1】:

根据我的经验,在 AppleScript 中检测按键有点困难,所以我建议你:

1) 为每个快捷键编写和测试单独的脚本。这将是一个脚本:

tell application "Spotify"
    next track
end tell

...还有一个用于:

tell application "Spotify"
    previous track
end tell

2)打开 Automator 并创建一个新的快速操作(您将这样做两次)。将其设置为 Workflow 接收“无输入”in“任何应用程序”。当 Spotify 没有成为焦点时,这将起作用。如果您选择 Spotify,它只会在 Spotify 处于焦点时起作用。

然后在左侧搜索“运行 AppleScript”的操作,然后将其拖动到右侧。根据提示插入步骤 1 中的代码。使用有用的名称保存,例如“Spotify Next Track”。

3) 转到 SystemPreferences->Keyboard->Shortcuts->Services 并向下滚动到“General”下拉菜单,您可以在其中为每个快速操作指定快捷方式(需要修饰键,因此“e”不会工作,但 cmd+e 会)。

请注意,您的焦点应用程序会告诉 Spotify 更改曲目。我以 Chrome 为焦点进行了测试,并在我授予权限后工作(仅在第一次发生)。

【讨论】: