Si, pour une raison ou une autre, vous ne souhaitez pas utiliser d'outils tiers, il est possible de le faire vous-même avec un peu de C. Grâce à l'outil de Susam Pal réponse brillante j'ai rassemblé les éléments ci-dessous.
C'est pratiquement un enregistreur de clés. Il écoute les pressions sur les touches, les capture, et construit l'entrée du clavier avec le mappage à l'esprit. L'application console ci-dessous doit être exécutée pour que cela fonctionne.
Vous devrez le compiler d'une manière ou d'une autre. J'ai utilisé msys2.org avec pacman -S mingw-w64-x86_64-gcc
et compilé avec /mingw64/bin/gcc nocaps.c -o nocaps.exe
.
#include <stdio.h>
#include <windows.h>
HHOOK hook;
#define KEYCODE_CAPSLOCK 20
#define KEYCODE_LCTRL 162
LRESULT CALLBACK keyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT *p = (KBDLLHOOKSTRUCT *) lParam;
INPUT input = {.type = INPUT_KEYBOARD };
printf("nCode=%d\t wParam=%d\t p->vkCode=%lu \t p->scanCode=%d\t\n", nCode, wParam, p->vkCode, p->scanCode);
if (wParam == WM_KEYUP || wParam == WM_SYSKEYUP) {
input.ki.dwFlags = KEYEVENTF_KEYUP;
}
if (p->vkCode == KEYCODE_CAPSLOCK && (p->flags & LLKHF_INJECTED) == 0) {
input.ki.wVk = KEYCODE_LCTRL;
SendInput(1, &input, sizeof (INPUT));
return 1;
} else if (p->vkCode == KEYCODE_LCTRL && (p->flags & LLKHF_INJECTED) == 0) {
input.ki.wVk = KEYCODE_CAPSLOCK;
SendInput(1, &input, sizeof (INPUT));
return 1;
}
return CallNextHookEx(hook, nCode, wParam, lParam);
}
int main(int argc, char **argv)
{
MSG messages;
hook = SetWindowsHookEx(WH_KEYBOARD_LL, keyboardHook, NULL, 0);
if (hook == NULL) {
printf("Error %d\n", GetLastError());
return 1;
}
printf("Mapping CAPSLOCK=>LCTRL and LCTRL=>CAPSLOCK..\n");
while (GetMessage (&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return 0;
}
0 votes
Notez que cela ne fait que déplacer le verrouillage des majuscules vers une autre touche Ctrl. Je veux les échanger, donc j'ai utilisé les instructions ici pour modifier le script ci-dessus : superuser.com/a/1202601/315584