如何禁用某些 Windows 10 全局快捷方式以便在第三方应用程序中使用它们?

如何禁用某些 Windows 10 全局快捷方式以便在第三方应用程序中使用它们?

1. 简要

我只想禁用一些 Windows 10 默认全局热键,以便使用这些热键运行 Sublime Text 命令。



2. 细节

我有 Windows 32 位 10.0.14393。在 Windows 10 中,我们有许多原生热键

1. 我想禁用

例如,我想禁用自定义热键Win+KWin+HCtrl+Win+P

2. 我不想禁用

但是,例如,我不想禁用Win+D热键Win+R。我经常使用这些热键。

3. Sublime Text 键盘映射部分

{
    "keys": ["super+k"],
    "command": "paste"
},


3. 没有帮助

1.AutoHotkey 覆盖

我的代码:

#k::return

Win+K全局热键对我来说已被禁用,但我的 Sublime Text 命令paste也无法运行。

2.AutoHotkey 将全局 Windows 热键覆盖为应用程序的热键

我的代码:

#IfWinActive ahk_class PX_WINDOW_CLASS
$#2::ControlSend, ahk_parent, % SubStr(A_ThisHotkey, 2)
#IfWinActive

它对我有用,但是存在错误,例如:

AutoHotkey 错误

对于其他热键,我也遇到了错误。如果有人能改进此代码就太好了。

3.夏普键

SharpKeys 程序可以禁用或重新分配Win键,但我并不想这样。

4.管理控制台

我可以禁用一些默认热键, 但:

  • 我无法禁用(使用 gpedit.msc),例如Win+KWin+HCtrl+Win+P
  • 我可以禁用Win+DWin+R,但我想使用这些热键。

5.简单的禁用键

我下载简单的禁用键Win+K→ 我在程序中禁用→ 我重新启动 Windows→Win+K对我来说并没有禁用。

6.Windows 注册表中的 DisabledHotkeys 参数

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]

DisableHotkeys我创建了具有值的字符串参数KHPE

已禁用热键

Win+E例如,对我来说是禁用的,但是

  • Win+PWin+K并且Win+H没有被禁用。
  • 此方法不用于禁用例如Ctrl+Win+PCtrl+Win+F4


4. 不要提供

答案1

您可以使用 Autohotkey 重新映射任何热键以使用发送另一个热键发送命令:

#k::
Send {WIN up}
Send {k up}
Send ^+p
return

此后按下 Win+K 将发送 Ctrl+Shift+P,从而显示 Sublime Text 中的命令面板,您可以使用这种方式覆盖任何热键以发送另一个热键,将其设置为 Ctrl+Shift+F3 之类的热键并将该热键分配给 Sublime Text 的粘贴(在键绑定中),然后使用 Win+K 将 Ctrl+Shift+F3 发送到 Sublime Text,它将调用粘贴。

AutoHotkey 脚本:

#k::
Send {WIN up}
Send {K up}
Send !^+{F3}
return

Sublime Text 键绑定:

{ "keys": ["ctrl+alt+shift+f3"], "command": "paste" }

编辑

看到你Please, don't offer AutoHotkey shortcuts redirect to other shortcuts.为什么不这样做了吗? 上面的例子甚至适用于 Win+R:

#r::
Send {WIN up}
Send {r up}
Send !^+{F3}
return

文本已通过 Sublime Text 中的 Win+R 成功粘贴。

编辑2

如果你真的喜欢分配真实的热键你可以禁用所有Win+{KEY}热键,然后创建你的热键的功能与默认热键相同Win+{Key},并且为其他热键分配您自己的操作。

例如对于 Win+R:

explorer.exe Shell:::{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}

有效,但对于某些热键很难找到如何调用它们的操作。

答案2

我还搜索了一种方法,以防止 Windows 10 在按 Win+V 时打开自己的剪贴板,因为我想将 Ditto 分配给它。我终于在 Win10 (20H2) 中让它工作了。

释放 Win+V(可能还有其他热键)

  1. 打开注册表

  2. 导航至密钥 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

  3. 右键单击并 New > Expandable String Value从上下文菜单中选择。(这很重要,因为普通的“字符串值”不起作用)

  4. 命名已禁用热键

  5. 添加要释放的热键的字符。在我的例子中,我简单地添加了到价值。 查看屏幕截图

  1. 注销(通过“开始”菜单)并重新登录

现在我可以将 Win + V 分配给 Ditto 而不会收到错误消息。

答案3

应该明确快捷方式的范围,特别是谁应该处理快捷方式。

对于一般建议 - 在程序 A 中,禁用程序 B 处理的全局快捷键,并允许程序 C(或 A 本身)处理它。

  1. 使用 AHK(autohotkey) - 程序 D,将此快捷键注册为全局快捷键身体的在上下文 A 中。

  2. 然后Send使用重发 模拟快捷方式积极的窗户,好像没有全球的快捷方式。
    或者ControlSend使用重定向特别的窗口C,好像C处理这个快捷方式全球

#IfWinActive ahk_exe notepad.exe
$#q::#q ;this will block #q from windows when in notepad.exe
;or
;  $#q::ControlSend ,,#q,ahk_exe C.exe  ;assume C could hanlde #q globally
#If

答案4

您可以使用超能力。您可以编辑配置来选择要禁用的快捷方式。

免责声明:我是作者。

相关内容