Hammerspoon:持续向一个应用程序发送击键,同时正常使用其他应用程序

Hammerspoon: continuously send keystrokes to one application, while using others normally

好的,所以我有一个带有 Hammerspoon 的脚本,可以为我执行击键。简单例子:

hs.hotkey.bind({'cmd','alt','ctrl'}, "b", function() 
    hs.eventtap.keyStroke({}, "Left", 200000)
    hs.eventtap.keyStroke({}, "Left", 200000)
    hs.eventtap.keyStroke({}, "Right", 200000)
    hs.eventtap.keyStroke({}, "Right", 200000)
end)

我知道我可以过滤此脚本以仅在特定应用程序中工作,但我的问题是:是否可以将这些击键发送到一个应用程序,而在另一个应用程序中正常使用我的物理键盘?就像发送击键一样 'in the background',所以它们没有在我当前使用的应用程序中注册。

您可以查询该应用程序,将其存储在一个变量中,然后使用它来将这些击键发送到该应用程序:

local myApp = hs.application.applicationsForBundleID('com.apple.finder')[1]
hs.eventtap.keyStroke({"cmd"}, "2", 200, myApp)

这会在延迟 200 微秒后将 CMD + 2 发送到 Finder 应用程序(更准确地说:第一个具有此包 ID 的应用程序)。

我可能会在击键绑定函数之外设置变量,这样它就不会在每次击键时发生,而是在开始时发生。