127 votes

Faire correspondre le verrouillage du capuchon au contrôle dans Windows 10

Dans Windows 8, j'avais l'habitude de remapper ma touche capslock pour contrôler en utilisant le registre script.

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

Après être passé à Window 10, cela ne fonctionne plus.

Comment faire ?

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

8voto

loxaxs Points 219

J'avais l'habitude d'utiliser AutoHotKey pour faire cela.

J'aurais un lien dans le répertoire de démarrage pour exécuter un ahk script très basique :

Capslock::Ctrl

Le truc, c'est que Autohotkey n'est pas exécuté en tant qu'administrateur, donc il n'affectera pas les Windows privilégiés, à moins que vous n'utilisiez le planificateur de tâches au lieu du répertoire de démarrage pour exécuter le script à la connexion avec des privilèges plus élevés. Le deuxième problème est que parfois, le script se bloque lors de la reprise du sommeil, de sorte que vous pouvez avoir besoin de le recharger, ce qui est ennuyeux.

AutoHotKey est mieux adapté aux tâches plus complexes, comme l'écriture de macros.

0 votes

J'ai essayé la solution autohotkey et je ne la recommande pas. Elle ne fonctionne pas bien si votre vitesse d'autorepeat est élevée et votre délai faible. Elle ne se mélange pas non plus avec xkeymacs, qui fait fonctionner les touches emacs presque partout dans Windows.

0 votes

Je n'utilise pas emacs, j'ouvre un fichier .ahk automatiquement à la connexion, et je trouve que cette solution est de loin la plus simple et la plus portable.

0 votes

J'utilise emacs et c'est une solution très réalisable pour moi. Je me contente d'exécuter le script à la connexion à chaque fois sur le bureau. Je n'ai pas de droits d'administrateur.

8voto

Ernst Points 81

L'inépuisable boîte à outils de sysinternals fournit également un petit programme juste pour passer du capslock au control --. Ctrl2Cap

Ctrl2cap est un pilote de périphérique en mode noyau qui filtre le pilote de classe de clavier du système afin de convertir les caractères de verrouillage des majuscules en caractères de contrôle.

Il a une longue histoire, mais il fonctionne sur Windows 10, y compris en 64 bits. Vous l'exécutez une fois pour installer le pilote.

1 votes

Pour moi, Ctrl2Cap est actuellement la solution la plus fiable. La clé de registre "Scancode Map" fonctionne sous Windows 10, mais a étrangement cessé de fonctionner pour la touche Ctrl-X en particulier. Le PowerToys Keyboard Manager fonctionne, y compris pour Ctrl-X, mais ne fonctionne pas sur un bureau distant (et l'exécuter sur le PC distant ainsi que sur le PC local ne semble pas vous permettre de remapper avec succès). Ctrl2Cap est remappé dans toutes les applications, y compris le bureau à distance.

6voto

ady Points 161

C'est le script pour échanger les touches CTRL et CAPS LOCK :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,1d,00,00,00,00,00

3voto

kristianlm Points 129

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;
}

2voto

Andrew K. Points 121

Vous pouvez utiliser lswitch pour remapper l'entrée de la langue à CapsLock.

Utilisez n'importe quelle touche pour changer de langue de saisie, d'utilisation : lswitch [keycode] . Le code clé est facultatif et correspond par défaut à la touche du menu contextuel. Un autre bon candidat est la touche CapsLock dont le code est 20.

lswitch 20

Ajoutez-le à la charge automatique.

0 votes

Cela fonctionne, mais la fonctionnalité de verrouillage des majuscules est perdue. une idée sur la façon de définir la fonctionnalité de verrouillage des majuscules à la combinaison shift+caps lock ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X