微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何防止锤匙式热键在其他应用程序中覆盖热键?

如何解决如何防止锤匙式热键在其他应用程序中覆盖热键?

我正在寻找仅在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 举报,一经查实,本站将立刻删除。