A tiny program that changes the Copilot keyboard key back into the right Ctrl key. Unlike other solutions, this one does not interfere with the Left Shift or Left Windows keys.
Download the release from the Releases page.
Run "NoCopilotKey Installer.exe" to install the program. After the program is installed, it will start running now, and also automatically run on startup or login.
To stop NoCopilotKey, use Task Manager to end the program, or uninstall the program.
Because Microsoft required manufacturers to replace the right Ctrl key with a Copilot key, with no BIOS or Windows setting available to change it back.
Some people actually do use their keyboards, and need a right Ctrl key. Things I frequently do with the right Ctrl key include:
The Copilot Key acts as Left Windows, Left Shift, then F23 in that order. (The F23 key is not normally found on keyboards.)
When the Copilot Key is released, F23 is released first, then Left Shift, then Left Windows.
The function SetWindowsHookEx allows a program to install a global low-level keyboard hook. Whenever a key is pressed (or released), every program with a global keyboard hook gets to see the keypress (or release), and the program will decide whether the key event should be blocked or allowed. This API has been around since Windows 2000, and is normally used to create global hotkeys.
The function SendInput allows a program to inject keyboard input into the system. This same functionality is used by the Windows On-Screen Keyboard.
By combining these features, we can create a key-remapping program that supports a key which presses multiple keys.
The copilot key quickly presses its three key sequence, but you could also be pressing the first two keys on your own keyboard. You could also be pressing Left Shift while holding down Copilot, or pressing Copilot while holding down Left Shift.
In order to distinguish between the real keyboard keys and the Copilot Key, we follow a sequence:
[ Idle ] → [ Left Windows Key ] → [ Left Shift ] → [ F23 ]
We start at Idle.
Whenever we see a keypress for the correct key, we temporarily block the key, then advance to the next step.
These will break the sequence:
When we see any of those, we know it's not the Copilot Key, and we take these actions:
Whenever we reach the Left Windows Key step, we start the 0.1 second timer. This timer is cancelled whenever we return to idle.
When we reach F23, we have completed the sequence. We take these actions:
There is also another sequence when releasing the Copilot Key, but once you release the F23 key, the other two keys follow immediately. This makes the sequence more simple, since it can't be interrupted.
[ Idle ] → [ F23 ] → [ Left Shift ] → [ Left Windows ] → [ Idle ]
When F23 is pressed (from the other sequence), we are now waiting for F23 to be released. A key release is only blocked if we're at the correct step, so you can still release Left Shift as normal while holding down Copilot key.
1.0.4.0
1.0.3.1
1.0.3.0
1.0.2.0
1.0.1.2
1.0.1.1
1.0.1.0
1.0.0.4
1.0.0.3
1.0.0.2
1.0.0.1
84 commits
C#
62.2%
C++
36.8%
C
1.1%
A tiny program that changes the Copilot keyboard key back into the right Ctrl key. Unlike other solutions, this one does not interfere with the Left Shift or Left Windows keys.
Download the release from the Releases page.
Run "NoCopilotKey Installer.exe" to install the program. After the program is installed, it will start running now, and also automatically run on startup or login.
To stop NoCopilotKey, use Task Manager to end the program, or uninstall the program.
Because Microsoft required manufacturers to replace the right Ctrl key with a Copilot key, with no BIOS or Windows setting available to change it back.
Some people actually do use their keyboards, and need a right Ctrl key. Things I frequently do with the right Ctrl key include:
The Copilot Key acts as Left Windows, Left Shift, then F23 in that order. (The F23 key is not normally found on keyboards.)
When the Copilot Key is released, F23 is released first, then Left Shift, then Left Windows.
The function SetWindowsHookEx allows a program to install a global low-level keyboard hook. Whenever a key is pressed (or released), every program with a global keyboard hook gets to see the keypress (or release), and the program will decide whether the key event should be blocked or allowed. This API has been around since Windows 2000, and is normally used to create global hotkeys.
The function SendInput allows a program to inject keyboard input into the system. This same functionality is used by the Windows On-Screen Keyboard.
By combining these features, we can create a key-remapping program that supports a key which presses multiple keys.
The copilot key quickly presses its three key sequence, but you could also be pressing the first two keys on your own keyboard. You could also be pressing Left Shift while holding down Copilot, or pressing Copilot while holding down Left Shift.
In order to distinguish between the real keyboard keys and the Copilot Key, we follow a sequence:
[ Idle ] → [ Left Windows Key ] → [ Left Shift ] → [ F23 ]
We start at Idle.
Whenever we see a keypress for the correct key, we temporarily block the key, then advance to the next step.
These will break the sequence:
When we see any of those, we know it's not the Copilot Key, and we take these actions:
Whenever we reach the Left Windows Key step, we start the 0.1 second timer. This timer is cancelled whenever we return to idle.
When we reach F23, we have completed the sequence. We take these actions:
There is also another sequence when releasing the Copilot Key, but once you release the F23 key, the other two keys follow immediately. This makes the sequence more simple, since it can't be interrupted.
[ Idle ] → [ F23 ] → [ Left Shift ] → [ Left Windows ] → [ Idle ]
When F23 is pressed (from the other sequence), we are now waiting for F23 to be released. A key release is only blocked if we're at the correct step, so you can still release Left Shift as normal while holding down Copilot key.
1.0.4.0
1.0.3.1
1.0.3.0
1.0.2.0
1.0.1.2
1.0.1.1
1.0.1.0
1.0.0.4
1.0.0.3
1.0.0.2
1.0.0.1
84 commits
C#
62.2%
C++
36.8%
C
1.1%