1. 简要
我只想禁用一些 Windows 10 默认全局热键,以便使用这些热键运行 Sublime Text 命令。
2. 细节
我有 Windows 32 位 10.0.14393。在 Windows 10 中,我们有许多原生热键。
1. 我想禁用
例如,我想禁用自定义热键Win+K、Win+H和Ctrl+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
它对我有用,但是存在错误,例如:
对于其他热键,我也遇到了错误。如果有人能改进此代码就太好了。
3.夏普键
SharpKeys 程序可以禁用或重新分配Win键,但我并不想这样。
4.管理控制台
我可以禁用一些默认热键, 但:
- 我无法禁用(使用 gpedit.msc),例如Win+K,Win+H和Ctrl+Win+P。
- 我可以禁用Win+D和Win+R,但我想使用这些热键。
5.简单的禁用键
我下载简单的禁用键Win+K→ 我在程序中禁用→ 我重新启动 Windows→Win+K对我来说并没有禁用。
6.Windows 注册表中的 DisabledHotkeys 参数
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
DisableHotkeys
我创建了具有值的字符串参数KHPE
。
Win+E例如,对我来说是禁用的,但是
- Win+P,Win+K并且Win+H没有被禁用。
- 此方法不用于禁用例如Ctrl+Win+P和Ctrl+Win+F4。
4. 不要提供
- 请不要提供禁用所有全局快捷Win键的解决方案,而不是自定义的;
- 请不要提供 AutoHotkey快捷方式重定向到其他快捷方式。
答案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(可能还有其他热键)
打开注册表
导航至密钥
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
右键单击并
New > Expandable String Value
从上下文菜单中选择。(这很重要,因为普通的“字符串值”不起作用)命名已禁用热键
添加要释放的热键的字符。在我的例子中,我简单地添加了五到价值。 查看屏幕截图
- 注销(通过“开始”菜单)并重新登录
现在我可以将 Win + V 分配给 Ditto 而不会收到错误消息。
答案3
应该明确快捷方式的范围,特别是谁应该处理快捷方式。
对于一般建议 - 在程序 A 中,禁用程序 B 处理的全局快捷键,并允许程序 C(或 A 本身)处理它。
使用 AHK(autohotkey) - 程序 D,将此快捷键注册为全局快捷键身体的在上下文 A 中。
然后
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
您可以使用超能力。您可以编辑配置来选择要禁用的快捷方式。
免责声明:我是作者。