插件窝 干货文章 Applescript如何监听键盘按键并执行特定操作?

Applescript如何监听键盘按键并执行特定操作?

监听 Hammerspoon 键盘 事件 953    来源:    2025-03-15

在AppleScript中,监听键盘按键并执行特定操作可以通过结合使用AppleScript和macOS的辅助功能来实现。以下是一个基本的示例,展示如何监听键盘按键并执行特定操作。

1. 使用System Events监听键盘事件

AppleScript本身并不直接支持监听键盘事件,但可以通过System Events来模拟键盘事件的监听。以下是一个简单的示例,展示如何监听特定的按键并执行操作。

-- 定义一个处理按键事件的函数
on keyPressed(keyCode)
    if keyCode is 36 then -- 36是回车键的键码
        display dialog "你按下了回车键!"
    else if keyCode is 53 then -- 53是ESC键的键码
        display dialog "你按下了ESC键!"
    end if
end keyPressed

-- 主循环,监听键盘事件
repeat
    tell application "System Events"
        set keyDown to (key code of (key down))
        if keyDown is not missing value then
            keyPressed(keyDown)
        end if
    end tell
    delay 0.1 -- 避免CPU占用过高
end repeat

2. 使用第三方工具(如Hammerspoon

虽然AppleScript可以处理一些简单的键盘事件监听,但对于更复杂的需求,建议使用第三方工具如HammerspoonHammerspoon是一个强大的自动化工具,支持Lua脚本,可以监听键盘事件并执行复杂的操作。

以下是一个使用Hammerspoon的示例:

  1. 安装Hammerspoon

    • 你可以通过Homebrew安装:brew install --cask hammerspoon
    • 或者从Hammerspoon官网下载并安装。
  2. 配置Hammerspoon

    • 打开Hammerspoon,点击菜单栏中的Hammerspoon图标,选择“Open Config”。
    • 在打开的init.lua文件中,添加以下代码:
-- 监听回车键
hs.hotkey.bind({}, "return", function()
    hs.alert.show("你按下了回车键!")
end)

-- 监听ESC键
hs.hotkey.bind({}, "escape", function()
    hs.alert.show("你按下了ESC键!")
end)
  1. 保存并重新加载配置
    • 保存init.lua文件后,点击Hammerspoon菜单栏图标,选择“Reload Config”。

3. 使用Keyboard Maestro

Keyboard Maestro是另一个强大的自动化工具,专门用于处理键盘快捷键和宏。它提供了图形化界面,可以轻松设置键盘快捷键并执行复杂的操作。

  1. 安装Keyboard Maestro

  2. 创建宏

    • 打开Keyboard Maestro,点击“New Macro”按钮。
    • 设置触发器为“Typed String Hot Key”,然后输入你想要监听的按键(如回车键)。
    • 在动作部分,添加你想要执行的操作(如显示对话框)。
    • 保存宏并启用它。

总结

  • AppleScript:适合简单的键盘事件监听,但功能有限。
  • Hammerspoon:功能强大,适合复杂的自动化需求,支持Lua脚本。
  • Keyboard Maestro:图形化界面,适合不熟悉编程的用户,功能强大。

根据你的需求选择合适的工具来实现键盘事件的监听和操作执行。