使用 Hammerspoon 选择菜单项
Selecting a Menu Item with Hammerspoon
我尝试使用 Hammerspoon 通过以下脚本在 Firefox 中打开一个新的 window:
function newWindow()
local app = hs.application.find("Firefox")
print(hs.inspect.inspect(app))
print(app:title())
print(app:bundleID())
local item = app:findMenuItem("File")
print(item)
end
hs.hotkey.bind({'alt', 'ctrl', 'cmd'}, 'n', newWindow)
虽然脚本能够找到 Firefox,但找不到我要查找的菜单项。但与此同时,我可以使用 app:getMenuItems()
检索整个菜单结构。
有没有人知道原因或任何应用程序的工作示例?
我正在使用 MacOS Big Sur 11.2.3
我想你要找的是app:selectMenuItem()
方法:
function newWindow()
local app = hs.application.find("Firefox")
app:selectMenuItem({"File", "New Window"})
end
hs.hotkey.bind({'alt', 'ctrl', 'cmd'}, 'n', newWindow)
来自文档:
hs.application:selectMenuItem(menuitem[, isRegex]) -> true or nil
选择一个菜单项(即模拟点击菜单项)
参数:
- menuitem - select 的菜单项,指定为字符串或 table。有关详细信息,请参阅 hs.application:findMenuItem() 的菜单项参数。
- isRegex - 一个可选的布尔值,默认为 false,仅当 menuItem 是字符串时才使用。如果设置为 true,menuItem 将被视为正则表达式而不是严格的字符串来匹配
Returns:
如果找到并select编辑了菜单项,则为 True,否则为 nil(例如,因为找不到菜单项)
备注:
根据涉及的菜单项类型,这将激活或tick/untick菜单项
http://www.hammerspoon.org/docs/hs.application.html#selectMenuItem
-- 编辑--
为避免多语言菜单结构,您还可以使用键盘快捷键打开新的 window:
function newWindow()
local app = hs.application.find("Firefox")
hs.eventtap.keyStroke({'cmd'}, 'N', nil, app)
end
hs.hotkey.bind({'alt', 'ctrl', 'cmd'}, 'n', newWindow)
我尝试使用 Hammerspoon 通过以下脚本在 Firefox 中打开一个新的 window:
function newWindow()
local app = hs.application.find("Firefox")
print(hs.inspect.inspect(app))
print(app:title())
print(app:bundleID())
local item = app:findMenuItem("File")
print(item)
end
hs.hotkey.bind({'alt', 'ctrl', 'cmd'}, 'n', newWindow)
虽然脚本能够找到 Firefox,但找不到我要查找的菜单项。但与此同时,我可以使用 app:getMenuItems()
检索整个菜单结构。
有没有人知道原因或任何应用程序的工作示例?
我正在使用 MacOS Big Sur 11.2.3
我想你要找的是app:selectMenuItem()
方法:
function newWindow()
local app = hs.application.find("Firefox")
app:selectMenuItem({"File", "New Window"})
end
hs.hotkey.bind({'alt', 'ctrl', 'cmd'}, 'n', newWindow)
来自文档:
hs.application:selectMenuItem(menuitem[, isRegex]) -> true or nil
选择一个菜单项(即模拟点击菜单项)
参数:
- menuitem - select 的菜单项,指定为字符串或 table。有关详细信息,请参阅 hs.application:findMenuItem() 的菜单项参数。
- isRegex - 一个可选的布尔值,默认为 false,仅当 menuItem 是字符串时才使用。如果设置为 true,menuItem 将被视为正则表达式而不是严格的字符串来匹配
Returns:
如果找到并select编辑了菜单项,则为 True,否则为 nil(例如,因为找不到菜单项)
备注:
根据涉及的菜单项类型,这将激活或tick/untick菜单项
http://www.hammerspoon.org/docs/hs.application.html#selectMenuItem
-- 编辑--
为避免多语言菜单结构,您还可以使用键盘快捷键打开新的 window:
function newWindow()
local app = hs.application.find("Firefox")
hs.eventtap.keyStroke({'cmd'}, 'N', nil, app)
end
hs.hotkey.bind({'alt', 'ctrl', 'cmd'}, 'n', newWindow)