使用Hammerspoon(Lua+Mac)在Chrome中进行最近使用的标签页切换问题

我决定让最近使用的标签页切换适用于Chrome。为此,我安装了CLUT Chrome浏览器扩展,该扩展目前将alt-w映射为切换到最后一个标签页,并安装了Hammerspoon,该工具允许拦截系统按键。

在init.lua中,我有以下代码:

local ctrlTab = hotkey.new({"ctrl"}, "tab", function()
  hs.eventtap.keyStroke({"alt"}, "w")
end)
chromeWatcher = hs.application.watcher.new(function(name, eventType, app)
  if eventType ~= hs.application.watcher.activated then return end
  if name == "Google Chrome" then
    ctrlTab:enable()
  else
    ctrlTab:disable()
  end
end)

chromeWatcher:start()

但是,我在Hammerspoon中遇到了以下错误:

attempt to index a nil value (global 'hotkey')

stack traceback:
    /Users/vonwao/.hammerspoon/init.lua:1: in main chunk
    [C]: in function 'xpcall'
    ...app/Contents/Resources/extensions/hs/_coresetup/init.lua:410: in function 'hs._coresetup.setup'
    (...tail calls...)

我搜索了一下,但是不知道这个错误意味着什么。

编辑-如果其他人想在Mac上进行MRU标签页切换,这是最终解决方案:

local ctrlTab = hs.hotkey.new({"ctrl"}, "tab", nil, function()
  hs.eventtap.keyStroke({"alt"}, "w")
end)
chromeWatcher = hs.application.watcher.new(function(name, eventType, app)
  if eventType ~= hs.application.watcher.activated then return end
  if name == "Google Chrome" then
    ctrlTab:enable()
  else
    ctrlTab:disable()
  end
end)

chromeWatcher:start()
点赞
用户2305249
用户2305249

你应该在第一行使用"hs.hotkey.new"。

另外,我建议你在 hokey 函数之前添加一个 nil 参数 - 目前你绑定了 ctrl-tab 被按下的时刻,并且触发了一个按键。操作系统会同时看到所有这些按键的发生。如果在函数之前传递一个 nil,你的热键将在释放 ctrl-tab 时触发,只有 alt-w 会被解释。

2016-08-30 22:31:12