Vous savez, l’autre jour je parlais du debounce rate, mais le temps de réaction (linput lag) d’un clavier dépend de plusieurs facteurs.
Vous devez vous dire que votre frappe n’est pas détectée immédiatement. En réalité, il y’a plusieurs étapes entre le moment où les contacteurs métalliques se touchent et celui où l’ordinateur reçoit le signal.
Il y’a 4 grandes étapes :
- La détection de la frappe par la matrice
- Le debounce rate
- Le temps de traitement par le micro contrôleur
- Le polling rate, ou fréquence du port USB
I/ La matrice
O.k, commençons par expliquer la matrice. Non, rien à voir avec Matrix, Néo n’est pas caché dans le clavier.
Les touches du clavier forment ce qu’on appelle une matrice. Comme vous vous en doutez, il serait incroyablement complexe de relier chaque touche à deux pattes du micro contrôleur.
Vous imaginez, 104 touches, avec 208 connexions sur un microcontrôleur? Ouais non, vaut mieux pas imaginer et de toutes façons, ce n’est pas le cas. Notre micro contrôleur ne dispose que de 64 pattes au total.
Les touches du claviers sont donc disposés sur une espèce de grille, une matrice. Et au lieu d’avoir 208 connexions totalement indépendante, on a 6 rangée et 21 lignes. Soit… 27 connexions seulement.
Avantage : Une simplification du circuit imprimé.
Inconvénient : Il est impossible de lire toutes les touches du clavier en même temps.
Le microcontrôleur du clavier va effectuer un balayage en vérifiant à chaque fois si une touche a été pressée ou pas.
Il va vérifier la case A1, puis A2, puis A3, A4, A5, A6, B1, B2, B3 etc etc… Jusqu’à ce qu’il arrive à la case V6, où il termine son job et recommence à partir de la case A1.
La fréquence, le nombre de fois par seconde où la matrice est lu de A1 à V6, c’est ce qu’on appelle le scan rate.
Sur un clavier entrée de gamme, la fréquence du scan est de 125Hz, ce qui signifie que le clavier va scanner la matrice 125 fois par seconde.
Ce qui signifie que si votre frappe tombe juste après un scan, vous allez devoir attendre jusqu’à 8 millisecondes pour que votre frappe soit relevé.
Dans le cas du Bane, c’est bien entendu une fréquence de 1000Hz. C’est à dire que le microcontrôleur va lire la matrice 1000 fois par seconde. Au pire des cas, votre frappe sera relevée 1ms plus tard.
Note : Juste, ne vous faites pas avoir par un clavier au look “gamer”. Avoir un microcontrôleur qui va lire les touches 1000 fois par seconde nécessite une certaine puissance de calcul. Parfois vous avez des claviers au look extravagant et pour économiser un peu sur les coûts de fabrication, ils mettent des microcontrôleurs tout juste capable de faire du 125Hz. Bonjour l’input lag.
II/ Le debounce rate
J’ai déjà fait un article relativement détaillé par rapport au debounce rate, ici.
Je vais résumer l’explication de manière assez succincte.
En gros, lorsque vous appuyez sur une touche, deux feuilles en métal se touchent.
Ce contact n’est pas parfait. Les contacteurs vont rebondir l’un contre l’autres comme un ballon jeté au sol.
Problème : s’il y a plusieurs contacts, le clavier risque de détecter plusieurs frappes.
Solution : le debounce.
Le debounce peut se traduire par un “si tu pense détecter une frappe, tu attends quelques millisecondes et re-vérifie si c’est le cas.”
Si vous avez pas de debounce, la moindre vibration va provoquer une frappe détectée.
Si vous avez un debounce trop faible, une frappe va être enregistrée comme une frappe multiple ( c’est ce qu’on appelle le key chatter).
Si vous avez un debounce trop long, le contact va se stabiliser et vous allez attendre pour rien, vous faisant perdre de précieuses millisecondes en terme de réactivité.
En moyenne, le temps de debounce est réglé sur 10 à 15 millisecondes. Parfois 5 millisecondes sur des claviers “gamer”.
Dans le cas du Bane, le debounce rate est réglable entre 4 valeurs : 5 ms, 10ms, 15ms et 20ms.
Pourquoi? Parce que comme vous le savez, le Bane est capable d’accueillir plus ou moins n’importe quels switches du marché, qui sont d’une qualité variable.
Si vous installez des switches de bonne qualité, vous pouvez le régler sur 5ms. Si vous installez des switches de moins bonne qualité, il faudra sans doute le régler dans les 15 ms pour éviter le key chatter.
Note : Vous devez aussi savoir que les switches s’usent au fil du temps. La plupart des switches neufs se contentent de 5ms, cependant, après quelques années la qualité des contacteurs s’effritent et vous devrez sans doute augmenter le temps de debounce.
D’ailleurs, c’est aussi l’une des raisons pour laquelle j’ai tellement travaillé l’idée des switches hotswappables. Même si la durabilité est annoncée à 50 Millions de frappes, en réalité, elle perds ses qualités bien plus rapidement.
III/ Le temps de traitement par le microcontrôleur
Une fois que la frappe est prise en compte par un scan de la matrice, puis l’attente liée au debounce fait, il reste le temps de traitement de la commande par le microcontrôleur.
En général, le temps de traitement par le micro contrôleur varie de 2 à 5 ms suivant l’optimisation du firmware.
Dans le cas du Bane, les ingénieurs ont annoncés 3 ms. Je ferais les mesures plus tard.
IV/ Le polling rate ou le taux de rafraîchissement USB
Le taux de rafraîchissement USB, je ne devrais même pas en parler, c’est sans doute l’information qui se trouve le plus facilement sur les emballages, EN GROS, EN GRAS, 1000Hz.
Donc de ce côté là, je ne me fais pas de soucis. 1000 Hz, c’est un peu la norme quand on essaie de faire un produit gamer.
Conclusion
Pour faire court, le temps de réaction d’un clavier dépend de 4 facteurs.
Sur un clavier basique, avec un scan rate de 125Hz, un debounce de 20 ms parce que les switches sont de mauvaise qualité, un firmware “ok” et un taux de rafraîchissement à 125Hz, on a typiquement un input lag de 40 ms +/-.
Pour le Bane, avec un scan rate de 1000Hz, un debounce à 5ms, le firmware actuel et le taux de rafraîchissement actuel, on devrait être dans les 10ms +/- d’input lag.
Bref, ça ne vous fera pas gagner les parties mais ça vous donnera un confort supplémentaire.