如何解决如何防止锤匙式热键在其他应用程序中覆盖热键?
我正在寻找仅在Chrome浏览器中可用的某些热键:
hs.hotkey.bind({"cmd"},"0",function()
if hs.window.focusedWindow():application():name() == 'Google Chrome' then
hs.eventtap.keystrokes("000000000000000000")
end
end)
此方法的问题是热键将无法在其他应用程序上使用。例如。 CMD
+ 0
不会在discord中触发Reset Zoom
命令。
如何预防?
解决方法
hs.hotkey
API不提供能够传播捕获的按键事件的功能。 hs.eventtap
API可以,但是使用它会涉及监视每一个 keyDown
事件。
我将指出在一些相关的GitHub issue中提到的内容:
如果您希望按键组合为大多数应用程序执行某项操作,而不是为某些特定应用程序执行某项操作,则最好使用窗口过滤器或应用程序观察程序,并在活动时启用/禁用热键。应用程序更改。
换句话说,对于您要实现的目标,建议您使用hs.window.filter
API在进入应用程序时启用热键绑定,并在离开应用程序时将其禁用,例如:
-- 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。