62 votes

Comment puis-je augmenter le taux de répétition des touches au-delà de la limite fixée par le système d'exploitation ?

J'ai la mauvaise habitude d'utiliser les touches de curseur de mon clavier pour naviguer dans le code source. C'est quelque chose que je fais depuis 15 ans et cela signifie bien sûr que ma vitesse de navigation est limitée par la vitesse du clavier. Sur Vista et OS X (je fais un double démarrage avec un MacBook), j'ai augmenté à fond la vitesse de répétition des touches. Mais dans Visual Studio, et dans d'autres applications, la vitesse est toujours beaucoup plus lente que je ne le voudrais.

Comment faire en sorte que la vitesse de répétition des touches soit plus rapide dans Visual Studio et dans d'autres éditeurs de texte ?

90voto

Mud Points 12084

Sous Windows, vous pouvez définir ce paramètre avec un appel système ( SystemParametersInfo(SPI_SETFILTERKEYS,...) ).

J'ai écrit un utilitaire pour moi-même : keyrate <delay> <repeat> .

Dépôt Github .

Source complète au cas où ce lien disparaîtrait :

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

BOOL parseDword(const char* in, DWORD* out)
{
   char* end;
   long result = strtol(in, &end, 10);
   BOOL success = (errno == 0 && end != in);
   if (success)
   {
       *out = result;
   }
   return success;
}

int main(int argc, char* argv[])
{
   FILTERKEYS keys = { sizeof(FILTERKEYS) };

   if (argc == 1)
   {
      puts ("No parameters given: disabling.");
   }
   else if (argc != 3)
   {
      puts ("Usage: keyrate <delay ms> <repeat ms>\nCall with no parameters to disable.");
      return 0;
   }
   else if (parseDword(argv[1], &keys.iDelayMSec) 
         && parseDword(argv[2], &keys.iRepeatMSec))
   {
      printf("Setting keyrate: delay: %d, rate: %d\n", (int) keys.iDelayMSec, (int) keys.iRepeatMSec);
      keys.dwFlags = FKF_FILTERKEYSON|FKF_AVAILABLE;
   }

   if (!SystemParametersInfo (SPI_SETFILTERKEYS, 0, (LPVOID) &keys, 0))
   {
      fprintf (stderr, "System call failed.\nUnable to set keyrate.");
   }

   return 0;
}

10 votes

Wow, c'est génial. J'ai cherché quelque chose comme ça pendant des années. Cela fonctionne pour moi sur Win 64. Je me demande pourquoi personne ne l'upvote. Je me demande également comment cela fonctionne en interne. Il semble qu'il y ait des paramètres "normaux" que vous pouvez modifier dans les paramètres du système et que vous pouvez les remplacer par ceux-ci. Mais les valeurs "normales" sont toujours là. D'une certaine manière, c'est superposé à dessein ?!?

1 votes

Mec, c'est incroyable. Tu es une légende !

0 votes

Oui, merci beaucoup - maintenant j'ai la mauvaise habitude de l'OP. (+1)

33voto

hyperlogic Points 2343

Sur Mac OS X, ouvrez le plist des préférences globales

open ~/Library/Preferences/.GlobalPreferences.plist

Puis modifiez le champ KeyRepeat. Des nombres plus petits accéléreront la vitesse de votre curseur. La boîte de dialogue des paramètres ne le règle que sur un minimum de 2, donc si vous passez à 0 ou 1, vous obtiendrez un curseur plus rapide.

J'ai dû redémarrer pour que cela prenne effet.

1 votes

Pour ceux d'entre vous qui n'ont pas BBEdit ou TextWrangler (qui est censé pouvoir éditer les fichiers plist binaires en mode natif - je n'ai pas essayé puisque je n'ai pas ces éditeurs), si le fichier plist global semble être du charabia, convertissez-le d'abord en xml et éditez-le, puis convertissez-le à nouveau comme j'ai dû le faire. Voir discussions.apple.com/thread.jspa?messageID=8359699

1 votes

Vous pouvez également installer XCode et il ouvrira automatiquement l'éditeur de liste de propriétés.

0 votes

Avec Sublime Text, vous pouvez faire comme Eddified. Il suffit d'installer le binaire Plist puis d'exécuter la fonction De/Encode.

33voto

chuckf Points 189

Il m'arrive souvent de vouloir centrer une fonction dans ma fenêtre. Le défilement est le seul moyen. De plus, Ctrl-gauche/droite peut toujours être lent dans un code où il y a beaucoup de caractères non-mots. J'utilise également keyboardking. Il a cependant quelques problèmes pour moi. D'une part, il utilise parfois la vitesse par défaut au lieu de la valeur réelle que j'ai définie. D'autre part, il ignore parfois le délai initial. Je le trouve néanmoins très utile. Ils ont dit il y a 4 ans qu'ils publieraient la source dans 6 mois... :(

Ok, sur la suggestion de quelqu'un qui a modifié HCU \...\Keyboard Réponse, ça marche bien pour moi.

[HKEY_CURRENT_USER\Control Panel\Accessibility\Keyboard Response]
"AutoRepeatDelay"="250"
"AutoRepeatRate"="13"
"BounceTime"="0"
"DelayBeforeAcceptance"="0"
"Flags"="59"

Délai AutoRepeat standard de Windows. Taux de répétition de 13 ms (77 char/sec). Les drapeaux activent les FilterKeys ? Ces valeurs sont lues à la connexion. N'oubliez pas de vous déconnecter et de vous reconnecter pour que cela prenne effet.

2 votes

Excellent. La seule chose que j'ai modifiée est le réglage du DelayBeforeAcceptance à 0. J'ai trouvé cela nécessaire pour l'utilisation de combinaisons de touches telles que Ctrl+Shift (pour l'activation/désactivation des signets). Avec le délai à 6, le fait d'appuyer sur les touches simultanément entraînait plus souvent qu'autrement la "perte" de la deuxième touche, ce qui faisait qu'aucun signet n'était placé.

3 votes

La modification de ces valeurs ne semble pas avoir d'effet sur Windows 7 64bit.

0 votes

Paul, merci. J'ai bien changé DelayBeforeAcceptance en 0 mais j'avais oublié que je l'avais fait. J'ai dû réinstaller l'autre jour mais mon fichier .reg contenait toujours le 6. J'ai dû revenir ici pour me rappeler comment réparer la combinaison de deux touches qui ne fonctionnait pas. Merci. Je vais modifier l'original pour les autres.

8voto

Jake Points 939

Pour Windows, ouvrez regedit.exe et naviguez jusqu'à HKEY_CURRENT_USER\Control Panel\Keyboard . Modifiez KeyboardSpeed à votre convenance.

5 votes

Est-ce que cela fonctionne ? MSDN indique que la valeur maximale est de 31, et vous pouvez déjà la définir normalement dans le Panneau de configuration.

0 votes

Si j'essaie de définir une valeur supérieure à 31, le comportement ne change pas davantage. Sur Win7 64bit.

8voto

Visual Assist dispose d'une option permettant de doubler les mouvements efficaces des touches dans Visual Studio, que j'utilise en permanence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X