How to disable only some Windows 10 global shortuts to use them in third-party applications?

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:

AutoHotkey bug

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 value KHPE.

DisabledHotkeys

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.

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)

  1. Open regedit

  2. Navigate to the key HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

  3. Right-click and select New > Expandable String Value from the context menu. (this is essential as the normal "string value" doesn't work)

  4. Name it DisabledHotkeys

  5. Add the character of the hotkey(s) you want to release. In my case I simply added V to the value. see screenshot

  1. Log out (via Startmenu) and back in

Now I could assing Win + V to Ditto without getting an error message.