这样的话,拼音和 vim binding 终于不在打架了。
The content of ~/.hammerspoon/init.lua:
-- 全局变量保存 watcher 实例以避免重复创建
local escWatcher
function switchToUS()
hs.keycodes.currentSourceID("com.apple.keylayout.US")
end
function myConfigFunction()
-- 停止旧监听器并创建新实例
if escWatcher then
print("stop monitoring ESC")
escWatcher:stop()
end
escWatcher = hs.eventtap.new({hs.eventtap.event.types.keyDown}, function(event)
local keyCode = event:getKeyCode()
if keyCode == 53 then -- 捕获 Esc 键
print("Esc pressed,switch input source to U.S.")
switchToUS()
else
return false -- 其他键继续传递给系统
end
end):start()
end
-- 延迟初始化(等待权限生效)
hs.timer.doAfter(2, myConfigFunction)
function sleepCallback(eventType)
if eventType == hs.caffeinate.watcher.systemDidWake then
print("Device awake,restarting monitor")
-- 仅在必要时重启配置
myConfigFunction()
end
end
-- 单例模式创建睡眠监视器(避免重复)
local sleepWatcher = nil
if not sleepWatcher then
sleepWatcher = hs.caffeinate.watcher.new(sleepCallback):start()
end