哪些 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
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