哪些 Chrome 快捷方式不能被覆盖?

Which Chrome shortcuts can't be overwritten?

commands api Chrome 扩展的 documentation 说:

Certain Chrome shortcuts (e.g. window management) always take priority over Extension Command shortcuts and can not be overwritten.

但我似乎找不到具体不能覆盖快捷方式的参考。

command_service.cc 开始:OnExtensionWillBeInstalled 调用 UpdateKeybindings,后者调用 AssignKeybindings,后者迭代返回的命令:

  • GetNamedCommands
  • GetBrowserActionCommand
  • GetPageActionCommand
  • GetActionCommand

对于每个命令,AddKeybindingPref 会使用某些参数调用,但前提是 CanAutoAssign returns true:

  • 它 returns false 如果用户已经修改了键绑定。
  • 它 returns true 如果它是媒体密钥:
    • 如果⏯️/⏹️/⏮️/⏭️ 没有任何修饰符。
  • 如果命令是 global(在 Chrome window 未激活时工作),它 returns true 如果它是一个命名命令,并且扩展程序具有 kCommandsAccessibility 权限,或者密钥是 (Ctrl/)+Alt+(0...9)
  • 如果它不是全局命令,那么它 returns IsChromeAccelerator 的结果。

IsChromeAccelerator有两个定义:

  • 因为 cocoa, keyEventWithType 查询匹配的按键事件。
  • 对于 aura,检查从 GetAcceleratorList 返回的列表是否匹配,该匹配来自:
    • kAcceleratorMap,
    • 如果启用了 kUIDebugTools 功能:kUIDebugAcceleratorMap

这是来自 kAcceleratorMap 的列表:

  • F7(如果不是ChromeOS-Ash)
  • F12
  • ESC

如果不是macOS:

  • Ctrl+D
  • Ctrl+Shift+D
  • Ctrl+W
  • Ctrl+Shift+W
  • Ctrl+F
  • Ctrl+Shift+A
  • Ctrl+G
  • Ctrl+Shift+G
  • Ctrl+L
  • Ctrl+O
  • Ctrl+P
  • Ctrl+R
  • Ctrl+Shift+R
  • Ctrl+S
  • Ctrl+Tab
  • Ctrl+Shift+Tab
  • Ctrl+Page Up
  • Ctrl+Page Down
  • (Ctrl/)+(0...9)
  • (Ctrl/)+Shift+B
  • (Ctrl/)++
  • (Ctrl/)+-
  • (Ctrl/)+0
  • F1
  • F3
  • Shift+F3
  • Ctrl+F4
  • Alt+F4
  • F5
  • Ctrl+F5
  • Shift+F5
  • F6
  • Shift+F6
  • F10
  • F11
  • (Ctrl/)+Shift+M
  • Alt+Shift+I
  • (Ctrl/)+Shift+N
  • (Ctrl/)+T
  • (Ctrl/)+Shift+T
  • (Ctrl/)+N
  • Alt+
  • Alt+
  • Ctrl+Shift+P
  • Ctrl+Shift+I
  • Ctrl+Shift+J
  • Ctrl+Shift+C
  • Alt+Shift+B
  • Alt+Shift+A
  • Alt+D
  • Ctrl+E
  • Ctrl+K
  • Alt+Shift+T
  • Alt+主页
  • Alt+E
  • Alt+F
  • Ctrl+Shift+O
  • Ctrl+J
  • Ctrl+H
  • Ctrl+U

如果Linux或ChromeOS-Lacros:

  • Ctrl+Shift+Page Up
  • Ctrl+Shift+Page Down
  • Alt+(0...9)
  • [=62=浏览器:收藏夹

如果Linux或ChromeOS:

  • 浏览器:返回
  • 浏览器:转发
  • 浏览器:主页
  • 浏览器:刷新
  • Ctrl+浏览器:刷新
  • Ctrl+Shift+浏览器:刷新

如果ChromeOS-Ash:

  • Ctrl+Shift+浏览器:返回
  • Ctrl+OEM: 2
  • Ctrl+Shift+OEM: 2
  • 浏览器:收藏夹
  • 浏览器:停止
  • Launcher/Search+ESC

如果不是 macOS 或 ChromeOS-Ash:

  • Shift+ESC
  • 菜单
  • 浏览器:搜索
  • Ctrl+Shift+删除
  • Ctrl+Shift++
  • Ctrl+Shift+-
  • Ctrl+Space

kUIDebugAcceleratorMap 添加的调试键:

  • Ctrl+Alt+Shift+T
  • Ctrl+Alt+Shift+V
  • Ctrl+Alt+Shift+M