我正在寻找仅在 Google Chrome 中可用的特定热键:
hs.hotkey.bind({"cmd"}, "0", function()
if hs.window.focusedWindow():application():name() == 'Google Chrome' then
hs.eventtap.keyStrokes("000000000000000000")
end
end)
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是热键将在其他应用程序上变得不可用。例如CMD+0不会触发Reset ZoomDiscord 中的命令。
我怎样才能防止这种情况发生?
小智 9
该hs.hotkeyAPI 不提供传播捕获的 keydown 事件的功能。APIhs.eventtap可以,但使用它需要监视每个 keyDown事件。
我将指出一个有点相关的GitHub 问题中提到的内容:
如果您希望组合键对大多数应用程序执行某些操作,但不希望对某些特定应用程序执行某些操作,则最好使用窗口过滤器或应用程序观察器,并在活动应用程序更改时启用/禁用热键。
换句话说,对于您想要实现的目标,建议您使用 APIhs.window.filter在进入应用程序时启用热键绑定,并在离开应用程序时禁用它,即:
-- Create a new hotkey
local yourHotkey = hs.hotkey.new({ "cmd" }, "0", function()
hs.eventtap.keyStrokes("000000000000000000")
end)
-- Initialize a Google Chrome window filter
local GoogleChromeWF = hs.window.filter.new("Google Chrome")
-- Subscribe to when your Google Chrome window is focused and unfocused
GoogleChromeWF
:subscribe(hs.window.filter.windowFocused, function()
-- Enable hotkey in Google Chrome
yourHotkey:enable()
end)
:subscribe(hs.window.filter.windowUnfocused, function()
-- Disable hotkey when focusing out of Google Chrome
yourHotkey:disable()
end)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |