How to disable only some Windows 10 global shortuts to use them in third-party applications?
Solution 1
You could use Autohotkey for remap any hotkey to send another hotkey using Send command:
#k::
Send {WIN up}
Send {k up}
Send ^+p
return
After this pressing Win+K will send a Ctrl+Shift+P which will show Command Palette in Sublime Text, you can use this way to override any hotkey to send another hotkey, set it to something like Ctrl+Shift+F3 and assign that hotkey to Sublime Text's paste(in keybindings) and then use Win+K to send that Ctrl+Shift+F3 to Sublime Text which will call paste.
AutoHotkey script:
#k::
Send {WIN up}
Send {K up}
Send !^+{F3}
return
Sublime Text keybindings:
{ "keys": ["ctrl+alt+shift+f3"], "command": "paste" }
Edit:
Seen your Please, don't offer AutoHotkey shortcuts redirect to other shortcuts.
why not? Above example works even for Win+R:
#r::
Send {WIN up}
Send {r up}
Send !^+{F3}
return
Text successfully pasted through Win+R in Sublime Text.
Edit 2:
If you really like to assign real hotkeys you could disable all Win+{KEY}
hotkeys, and then create your hotkeys which will do same as default Win+{Key}
hotkeys, and for another hotkeys assign your own actions.
For example for Win+R:
explorer.exe Shell:::{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}
Works, but for some hotkey its hard to find how to call their actions.
Solution 2
I also searched for a way to prevent Windows 10 from opening it's own Clipboard when pressing Win+V because I want to assign Ditto to it. I finally got it working in Win10 (20H2).
To free Win+V (and probably other hotkeys too)
-
Open regedit
-
Navigate to the key
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
-
Right-click and select
New > Expandable String Value
from the context menu. (this is essential as the normal "string value" doesn't work) -
Name it DisabledHotkeys
-
Add the character of the hotkey(s) you want to release. In my case I simply added V to the value. see screenshot
- Log out (via Startmenu) and back in
Now I could assing Win + V to Ditto without getting an error message.
Solution 3
Should explicit shortcut scope, especially who should handle the shortcut.
For general propose - in program A, disable global shortkey handled by program B, enable it to be handled by C (or A itself).
-
Use AHK(autohotkey) - program D, regist this shortkey as global by physical in context A.
-
Then use
Send
to re-send simulated shortcut to active window, as if there isn't any global shortcut.
Or useControlSend
to redirect to special window C, as if C handle this shortcut globally.
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
Related videos on Youtube
Саша Черных
Не являюсь Девушкой, но взял в честь Девушки, Которую Люблю, своё имя. Спрашиваю, только если не нахожу ответа с помощью поисковиков. Стараюсь искать тщательно. Не судите строго. Пожалуйста, если выставляете мне минусы, комментируйте их.
Updated on September 18, 2022Comments
-
Саша Черных over 1 year
1. Briefly
I want to disable only some Windows 10 default global hotkeys, to use this hotkeys for run Sublime Text commands.
2. Detail
I have Windows 32-bit 10.0.14393. In Windows 10 we have many native hotkeys.
1. I want to disable
For example, I want to disable custom hotkeys, Win+K, Win+H and Ctrl+Win+P.
2. I don't want to disable
But, for example, I don't want to disable Win+D and Win+R hotkeys. I often use these hotkeys.
3. Sublime Text keymap part
{ "keys": ["super+k"], "command": "paste" },
3. Did not help
1. AutoHotkey Override
My code:
#k::return
Win+K global hotkey is disabled for me, but my Sublime Text command
paste
doesn't run too.2. AutoHotkey overwrite global Windows hotkeys to hotkey of application
My code:
#IfWinActive ahk_class PX_WINDOW_CLASS $#2::ControlSend, ahk_parent, % SubStr(A_ThisHotkey, 2) #IfWinActive
It is worked for me, but I have bugs, for example:
For other hotkeys I have bugs too. It would be nice if someone will improve this code.
3. SharpKeys
SharpKeys program can disable or reassign Win key, but I don't want this.
4. gpedit.msc
I can disable some default hotkeys, but:
- I can not disable (using gpedit.msc), for example, Win+K, Win+H and Ctrl+Win+P.
- I can disable Win+D and Win+R, but I want to use this hotkeys.
5. Simple disable key
I download Simple disable key → I disable Win+K in program → I restart Windows → Win+K is not disabled for me.
6. DisabledHotkeys parameter in Windows Registry
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
I create string parameter
DisableHotkeys
with valueKHPE
.Win+E, for example, is disabled for me, but
- Win+P, Win+K and Win+H are not disabled.
- This method is not for disabling, for example, Ctrl+Win+P and Ctrl+Win+F4.
4. Do not offer
- Please, don't offer solutions to disable all global shortcuts with Win key, not custom;
- Please, don't offer AutoHotkey shortcuts redirect to other shortcuts.
-
Саша Черных over 7 yearsw32sh, I set DisableHotkeys parameter → I restart Windows →
Win+P
,Win+K
andWin+H
global shortcuts run for me like before( . Thanks. -
w32sh over 7 yearsJust tested it here. It doesn't seem to work for P H and K. It's able to block WinKey + E though. I'd like to delete my answer.
-
Саша Черных over 7 yearsw32sh, I tested on other hotkeys now. It's able to block only hotkeys like in gpedit.msc. Thanks.
-
Саша Черных over 7 yearsBladeMight, // 1)
> Seen your Please, don't offer AutoHotkey shortcuts redirect to other shortcuts. why not?
— Create another shortcut if I also have shortcut meaningless. Why we need additional shortcutWin+K
, if we haveCtrl+V
? But I have not thought, I forgot that we can change long uncomfortable hotkeys, which we don't use.Win+K
is more comfortable thenCtrl+Win+Alt+Shift+F3
. Thanks for solution! -
Саша Черных over 7 years// 2)
you could disable all Win+{KEY} hotkeys,
— it is similar like VoidVolker solution? And how I can find digits like{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}
for hotkeys? Thanks. -
Саша Черных over 7 yearsBladeMight, please, add
return
after each your script. Otherwise, if I use many scripts in one.ahk
file, all scripts run for me. Thanks. -
BladeMight over 7 years@СашаЧерных About Shell::: here is a list of g-ek.com/clsid-guid-spisok-shell-v-windows-10 but that mainly for folders.
-
BladeMight over 7 years@СашаЧерных also here ipmnet.ru/~sadilina/Windows/227.html may be helpful.
-
Ramhound over 3 yearsHow does this differ from the similar answer that was submitted 4 year ago?
-
J4ZZ over 3 yearsI guess it‘s the „Expandable String Value“ what makes the difference. Else it didn‘t work for me on Win10 (20H2).
-
Liebster Kamerad over 2 yearsThank you so much, you saved my day, that goddamn Webex was stealing shortcuts from Intellij by replacing them globally, now I could finally fix it with resending the same shortcut to Intellij instead of Webex. #IfWinActive, ahk_exe idea64.exe { ^+z::ControlSend ,,^+z, ahk_exe idea64.exe ^+d::ControlSend ,,^+d, ahk_exe idea64.exe }