Est-ce que AutoHotKey peut basculer le keymapping?

J’essaie donc d’écrire un script simple dans AutoHotKey qui utilisera NumLock (que j’ai mappé sur le capslock dans mon registre) comme une bascule pour transformer mes touches directionnelles en touches nab du pavé numérique. Mon script est le suivant:

GetKeyState, state, NumLock, T if state = D { Up::Numpad8 Down::Numpad2 Left::Numpad4 Right::Numpad6 Enter::Numpad5 } if state = U { $Up::Up $Down::Down $Left::Left $Right::Right $Enter::Enter } Return 

Cependant, j’obtiens une erreur indiquant que Up est répété à la ligne 15. Comment demander à AutoHotKey de retourner mes clés à la désignation de leur clé d’origine? J’ai essayé de laisser une section “else” vide par opposition à la section “if state = U”, mais les touches restnt dans leur état modifié lors du basculement à nouveau. Je suis sûr qu’il y a quelque chose de simple qui me manque.

Ah, voilà. Vous ne pouvez pas le faire comme vous essayez de le faire. Comme vous ne pouvez mapper la clé qu’une seule fois dans le script, placez la fonction if / ou dans le raccourci clavier, comme ceci:

 GetKeyState, state, NumLock, T up:: if(state = D){ send {Numpad8} }else{ send {up} } return 

Ceci est une solution simplifiée qui utilise le contexte #If .

L’avantage de ceci est que vous n’aurez pas besoin d’instructions If pour reconfigurer une clé dans l’instruction Else . La clé conservera sa fonctionnalité normale si la condition n’est pas vraie.

 #If GetKeyState("NumLock", "P") Up::Numpad8 Down::Numpad2 Left::Numpad4 Right::Numpad6 Enter::Numpad5 #If