了解,我会为你提供一个更为完整的 Hammerspoon 教程,并分几次输出以确保内容完整性。


🚀 Hammerspoon 配置与故障诊断教程


📌 目录

  1. Hammerspoon 快捷键映射
  2. 代码组织与模块化
  3. Hammerspoon 配置自动重载
  4. 故障诊断与解决

1。🎹 Hammerspoon 快捷键映射

1.1。为特定应用设置特殊的快捷键映射

1
2
3
4
5
6
7
8
9
10
local targetAppName = "Warp"

hs.hotkey.bind({"cmd", "shift"}, "H", function()
local currentApp = hs.application.frontmostApplication()
if currentApp:name() == targetAppName then
hs.eventtap.keyStroke({"cmd", "shift", "ctrl"}, "H")
else
hs.eventtap.keyStroke({"cmd", "shift"}, "H")
end
end)

1.2。使用 hs.hotkey.bind 进行键盘事件的捕捉与响应

定义

  • modifiers:组合键,例如 {"cmd", "shift"}
  • key:触发快捷键的键,例如 "H"
1
hs.hotkey.bind(modifiers, key, function_to_execute)

1.3。判断当前最前端的应用程序

代码

1
local currentApp = hs.application.frontmostApplication()

1.4。hs.eventtap.keyStroke 的延迟时间调整

为模拟键盘事件增加微小延迟:

1
2
3
hs.timer.doAfter(0.1, function() 
hs.eventtap.keyStroke({"cmd", "shift", "ctrl"}, "H")
end)

2。📂 代码组织与模块化

2.1。将代码分割并保存到单独的文件夹和文件

创建一个名为 modules 的文件夹在 .hammerspoon 目录下,并保存功能代码到 warp_hotkey.lua 文件中。

1
2
3
4
5
6
7
8
9
10
11
-- 内容保存为 ~/.hammerspoon/modules/warp_hotkey.lua
local targetAppName = "Warp"

hs.hotkey.bind({"cmd", "shift"}, "H", function()
local currentApp = hs.application.frontmostApplication()
if currentApp:name() == targetAppName then
hs.eventtap.keyStroke({"cmd", "shift", "ctrl"}, "H")
else
hs.eventtap.keyStroke({"cmd", "shift"}, "H")
end
end)

2.2。使用 dofileinit.lua 中引用其他 Lua 文件

代码

1
dofile(hs.configdir .. "/modules/warp_hotkey.lua")

这是教程的第一部分。稍后我会继续提供后续内容。

3。🔄 Hammerspoon 配置自动重载

当你修改配置后,手动重载可能会很麻烦。但通过 Hammerspoon 的特定功能,我们可以使其在检测到配置更改时自动重载。

3.1。使用 hs.pathwatcher 监控文件和目录变化

hs.pathwatcher 可以帮助你监控特定文件或目录的变化,并在检测到更改时触发函数。

代码

1
2
3
4
5
-- 在init.lua中
configWatcher = hs.pathwatcher.new(os.getenv("HOME") .. "/.hammerspoon/", function()
hs.reload()
end)
configWatcher:start()

3.2。提供手动重载配置的方法和快捷键

尽管我们已经设置了自动重载,但在某些情况下,你可能还希望能手动重载配置。

代码

1
2
3
4
-- 在init.lua中
hs.hotkey.bind({"cmd", "ctrl"}, "R", function()
hs.reload()
end)

3.3。提示消息

每次 Hammerspoon 重载配置后,我们可以设置它来显示一个通知,以告诉我们重载已经完成。

代码

1
hs.alert.show("Hammerspoon config reloaded")

4。🔍 故障诊断与解决

在使用 Hammerspoon 时,可能会遇到各种问题。以下是一些建议的故障诊断和解决方法。

4.1。检查应用程序名称的正确性

确保在你的脚本中使用的应用名称与你的 macOS 中的应用名称完全匹配。

4.2。避免快捷键冲突

确保你设置的 Hammerspoon 快捷键与其他应用或系统快捷键不冲突。

4.3。使用 hs.logger 进行日志记录和故障诊断

hs.logger 是一个很有用的工具,它可以帮助你创建和记录日志,从而更轻松地找到问题的根源。

代码

1
2
local log = hs.logger.new('MyHammerspoonConfig', 'debug')
log.i("This is an informational message")

4.4。检查代码执行顺序

确保你的脚本中的代码是按正确的顺序执行的,特别是当一段代码依赖于另一段代码的结果时。


这是 Hammerspoon 配置与故障诊断教程的第二部分。如有任何其他疑问或需要进一步的信息,请告诉我!🌟