资讯动态

Chrome垂直标签页快捷键设置

发布时间:2026/8/26 16:47:44 来源:尧图企业网站定制
用 Hammerspoon 给 Chrome 侧边栏加一个快捷键Chrome 有个内置的垂直标签页侧边栏Vertical Tab Sidebar体验不错但有一个致命问题没有键盘快捷键来切换它。每次想收起或展开侧边栏都得用鼠标去点那个小按钮。作为一个键盘流用户这无法忍受。于是我写了一个 Hammerspoon 脚本来解决这个问题。思路macOS 有一个 Accessibility API无障碍 API可以遍历任何应用的 UI 元素树找到按钮并模拟点击。Chrome 的侧边栏切换按钮在无障碍树中的标识是Expand Tabs或Collapse Tabs。所以核心逻辑很简单通过hs.axuielement.applicationElement()获取 Chrome 的 AX 根元素递归遍历窗口的子元素找到目标按钮调用performAction(AXPress)模拟点击这个方案参考了 ChromeSidebarToggleRaycast 的思路但把它移植到了 Hammerspoon 上并增加了鼠标触发的支持。两种触发方式脚本提供三个 scheme通过顶部的SCHEME变量切换Scheme值触发方式仅键盘1CmdS切换侧边栏仅鼠标2鼠标悬停屏幕左边缘展开移出 380px 收起键盘 鼠标3两种都生效默认鼠标触发的原理是每 50ms 轮询一次鼠标位置。当鼠标进入屏幕左边缘 2px 范围内并停留超过 0.15 秒触发展开当鼠标移出 380px触发收起。关键实现细节Grace Period 防误触切换应用时鼠标位置和按键事件可能被误判。脚本在 Chrome 获得/失去焦点、系统唤醒/休眠时都会设置一个 grace period宽限期期间所有触发都被忽略。看门狗机制鼠标轮询器偶尔会意外停止。键盘事件处理器中内置了一个看门狗如果超过 5 秒没有收到鼠标轮询的心跳自动重建所有服务。生命周期管理脚本监听了三个层面的事件应用层Chrome 激活/失焦/启动/退出系统层系统休眠/唤醒初始化层启动时检测当前是否在 Chrome 中每个状态转换都会正确地启动或停止对应的监听器避免资源浪费和误触发。安装# 安装 Hammerspoonbrewinstall--caskhammerspoon# 复制脚本cpinit.lua ~/.hammerspoon/init.lua# 授权辅助功能# 系统设置 → 隐私与安全性 → 辅助功能 → 添加 Hammerspoon然后在 Hammerspoon 菜单栏图标点击 “Reload Config” 即可。自定义快捷键默认快捷键是CmdS。改这里就行-- CmdS - toggle sidebarifflags.cmdandnotflags.ctrlandnotflags.altandnotflags.shiftandkeyCodekeycodes.map[s]then比如改成CtrlShiftBifflags.ctrlandnotflags.cmdandflags.shiftandnotflags.altandkeyCodekeycodes.map[b]then调试三个调试快捷键CmdAltD显示服务状态scheme、监听器运行状态、事件计数CmdAltBdump Chrome 所有 AX 按钮到 ConsoleCmdAltR强制重启所有服务文件结构项目只有两个 Lua 文件init.lua— 完整版支持三种 schemeinit-keyboard-only.lua— 纯键盘版没有鼠标检测代码更简洁如果你不需要鼠标边缘触发用 keyboard-only 版本就好少了一半代码也少了轮询的开销。写在最后这个脚本解决了一个很小但很烦的问题。Hammerspoon Accessibility API 的组合在 macOS 上非常强大几乎可以给任何应用的任何 UI 元素绑定快捷键。项目地址Chrome-Vertical-Tab-Sidebar-Toggle

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价