【问题标题】:How can one invoke a keyboard shortcut from within an AppleScript?如何从 AppleScript 中调用键盘快捷键?
【发布时间】:2016-05-12 11:04:17
【问题描述】:

我需要从 AppleScript 代码中调用键盘快捷键,例如Cmd+Ctrl+Opt+E。

【问题讨论】:

    标签: applescript


    【解决方案1】:

    当然可以。系统事件可以执行击键。但是,击键总是发送到最前面的应用程序,因此要为应用程序执行快捷方式,您必须先告诉该应用程序激活,然后再执行快捷方式。例如,我可以使用 command-t 在 Safari 中打开一个新选项卡。那个applescript看起来像这样......

    tell application "Safari" to activate
    tell application "System Events"
        keystroke "t" using command down
    end tell
    

    现在假设您有一个全局键盘快捷键。全局意味着它适用于任何应用程序。然后您甚至不需要先激活应用程序,只需执行击键即可。要按您要求的键,请执行此操作...

    tell application "System Events"
        keystroke "e" using {command down, option down, control down}
    end tell
    

    【讨论】:

    • 如何在击键中使用“输入”? 'return' 和 'enter' 都不起作用。
    • 通常你只会使用...按键返回。如果这不起作用,您可以尝试返回键或输入键的键码。我不知道代码,但如果代码是 13,例如它就像...密钥代码 13 一样简单。如果这不起作用,那么您必须尝试用户界面 (ui) 脚本。使用 ui 脚本,您可以按下并单击某些东西,因此也许您可以单击该按钮。 UI 脚本太复杂,无法在此处解释,但您可以通过 Google 查找如何执行此操作。但请记住,在尝试任何这些建议之前,请确保应用程序位于最前面。
    • 我尝试使用击键“return”,它所做的只是在文本输入窗口中输入“return”。
    • 例如,我将如何执行 ctrl+shift+tab(在 Safari 中向后移动一个选项卡)? 'keystroke "tab" using {ctrl down, shift down}' 在这里似乎有问题。
    • 您会注意到我的命令中的 return 一词没有引号。试试看。与标签相同...没有引号。当您想在引号中键入字母时,使用引号。你不希望出现这种情况。 Applescript 会知道 return、tab 和一堆其他关键词。
    【解决方案2】:

    您可以调用击键,或者如果启用了 GUI 脚本,您可以从菜单中选择一个菜单项。

    这是一个很好的链接,详细解释了这一点。

    http://hints.macworld.com/article.php?story=20060921045743404

    【讨论】:

      【解决方案3】:

      例如,根据您希望键盘快捷键是什么,您可以使用击键事件

      告诉应用程序“系统事件” 使用 {command down, option down, control down} 击键“e” 结束告诉

      将击键后的“e”替换为您希望输入的一个或多个单词,然后将{command down, option down, control down}更改为您希望同时激活的键。

      谢谢你

      【讨论】:

        【解决方案4】:
        activate application "Safari"
        
        delay 3
        tell application "System Events"
            keystroke "t" using {command down}
            delay 2
            keystroke "www.google.com"
            key code 36
        end tell
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多