NKRO à USB. Problèmes et béquilles dans leurs solutions
Bonjour GT. Dans l'un de mes précédents articles (en particulier sur le clavier SteelSeries Apex M800), l'utilisateur monah_tuka posé une question intéressante dans les commentaires: comment NKRO (n-key rollover, serrage simultané de plusieurs clés) est-il implémenté dans les claviers USB. Cette question m'a intéressé, et quand j'ai creusé un peu plus profondément ... En général, il y a de telles écuries Augéennes qu'il y avait suffisamment d'informations pour un poste entier, quoique un peu. Il semblerait que l’USB 2.0, même en mode basse vitesse, assure une transmission jusqu’à 1500 Kbps (environ 185 Ko / s), quel est le problème de transmission des frappes? Mais pas si simple.
Pour comprendre quel genre de problèmes la connexion USB a, nous devrons nous plonger dans l'histoire, et un peu - dans la conception du clavier.Problèmes de retournement: fantômes
Disons que vous avez un clavier avec des touches standard 104/105. Dans le cas idéal, afin d'obtenir des informations précises à 100% sur les clés qui sont serrées, vous aurez besoin d'un «câblage» de plus qu'il n'y a de boutons: 104/105 fils des boutons et une «masse» commune.Bien sûr, un tel câblage sera difficile et coûteux, donc de nombreux claviers bon marché sont utilisés à l'intérieur de ce qu'on appelle. «Matrix» - un ensemble de contacts horizontaux et verticaux qui se croisent. Le contrôleur balaye chaque colonne, détecte un signal, commence à balayer les «lignes» et calcule la touche enfoncée.Si vous appuyez sur, disons, S et G et que vous souhaitez ajouter une troisième touche dans une ligne différente, le contrôleur ne peut plus dire laquelle des lignes a été fermée: au mieux, il ne détectera pas l' une des trois, au pire - à partir de pour les fonctionnalités de câblage, je vais en tirer un quatrième sur lequel vous n'avez pas cliqué. C'est ce qu'on appelle des images fantômes.Ce comportement est traité avec diverses astuces dans le domaine du câblage: les combinaisons les plus populaires sont accrochées sur différentes "lignes", les lignes de fonction, qui sont souvent des éléments de raccourci, se voient affecter des lignes distinctes. La disposition reste assez simple, mais les claviers pas chers rares 5 + KRO - généralement il est limité à 3-4 tant que la touche est enfoncée.De plus, le contrôleur peut bloquer les "voisins" dans le bloc pour supprimer l'opération "supplémentaire". Autrement dit, formellement, le clavier peut prendre en charge 6KRO et laisser honnêtement CTRL + AWFBNM être appuyé en même temps, mais ne pas laisser AWSD tenir, limité au déclenchement d'un type WAS ou WDS.Vous pouvez vérifier votre clavier avec ce genre de chose . Il a certaines limites, mais elles sont dues au fait que le système interceptera une pression sur un bouton plus tôt que le navigateur. Par exemple, Impr écran ou Alt + Tab fonctionnera avant que la page ne puisse les "attraper".Maintenant, ce système «bon marché» terrible (du point de vue du travail) est presque complètement remplacé par une matrice un peu plus complexe et «ouverte», cependant, des exemples existent toujours, en particulier souvent dans toutes sortes de claviers complets «à un dollar» qui vont à l'ordinateur «de l'extérieur». des boites. "Les plus chers (souvent les jeux ou les claviers professionnels) utilisent des circuits plus complexes, plusieurs contrôleurs, des connexions individuelles, des cartes de circuits imprimés multicouches, en général, diverses approches qui réduisent ou éliminent complètement les images fantômes, mais conduisent à une augmentation du prix de l'appareil. Nous avons compris les problèmes matériels potentiels de NKRO, nous nous tournons vers ceux logiciels.Claviers jusqu'à USB
Le principal connecteur commun pour connecter un clavier et une souris à USB était PS / 2. Voici un ordre bien rangé:
Son charme était que, sous toutes les normes, il était possible de travailler avec une souris et un clavier à partir d'un connecteur et d'un séparateur, et les périphériques d'entrée eux-mêmes ont généré une interruption et envoyé des informations sur les boutons enfoncés / le mouvement du curseur. Là, au moins roulez votre visage sur le clavier, si tout est fait correctement, et le survol ne repose pas sur les capacités matérielles du clavier - le clavier enverra tout ce que le contrôleur «lit».Malheureusement, la PS / 2 avait ses inconvénients (comme des problèmes avec Plug'n'Play et un connecteur peu pratique), et l'omniprésence des périphériques PS / 2 fabriqués par USB était presque complètement évincée du marché. Néanmoins, il existe des cartes mères assez modernes avec USB 3.0 et deux (!) PS / 2:
les ports combinés, en passant, en raison des caractéristiques de brochage (alimentation générale, différentes broches pour les données + / données- dans la souris et le clavier), vous permettent également de vous connecter les deux appareils via un port à l'aide d'un adaptateur:
Problèmes USB NKRO: USB HID est à blâmer
Pour que les claviers USB fonctionnent avant de charger le système (c'est-à-dire dans BIOS / UEFI), le pilote HID standard est utilisé, qui a été développé pour la prise en charge la plus large possible des claviers et des hôtes USB. La classe USB HID décrit les périphériques afin que l'implémentation standard de l'hôte USB et des périphériques USB puisse communiquer sans installer de pilotes spéciaux.Un clavier standard (conçu avec la prise en charge de la norme USB HID) utilise le flux de données de sortie (sortie de l'hôte USB) (point d'extrémité de la pile USB) pour obtenir des informations sur l'état des indicateurs (Num / Caps / Scroll Lock) et le flux d'entrée (provenant du clavier, «Entrant» pour l'hôte USB) pour envoyer des informations sur les touches enfoncées.Si vous suivez la spécification USB HID v1.11 la plus stricte, qui prend en charge le mode de démarrage USB (et vous permet d'utiliser un clavier USB pour entrer dans le BIOS et y travailler), le clavier enverra des interruptions au CPU chaque fois que l'hôte USB l'interroge. , que son état ait changé ou non. Ainsi, le travail des claviers PS / 2 est «émulé» avec une surcharge minimale.Dans ce cas, le clavier fonctionne selon la norme USB 1.1 (parfois 2.0) à faible vitesse, et le taux d'interrogation du port est de 100 Hz. Dans ce mode, la longueur maximale des paquets sur USB est de 8 octets et ils sont envoyés toutes les 10 ms. L'un des octets est réservé, de sorte qu'il reste 7 octets pour que le clavier fonctionne, c'est-à-dire le montant est suffisant pour encoder la pression de n'importe quelle touche de modification et de six autres.Il s'avère que le clavier fonctionne en mode 6-KRO, et il est standard pour la plupart des claviers USB. Faire moins est possible (parfois consciemment, parfois pas, à cause des images fantômes et du brouillage des clés), plus - uniquement en violation des spécifications USB HID.Après le chargement, le système peut augmenter la fréquence d'interrogation d'un port USB, charger un pilote spécial qui permettra, disons, des clés multimédia et des macros.Implémentations USB NKRO
Restrictions de contournement USB HID, en fait, il existe deux types. Dans le premier cas, le clavier est détecté par un logiciel propriétaire, transféré dans un mode spécial et envoie les données du contrôleur directement au pilote, et il communique déjà avec le système. Le moins d'une telle décision est l'augmentation de ce qu'on appelle lag d'entrée: lag d'entrée. En interviewant des connaissances, je n'ai trouvé qu'un seul clavier qui me permettait d'appuyer sur 10 touches lorsqu'il était connecté via USB: un nom éponge chinois avec un zakos sous le "gaming". Le propriétaire vit déjà à Irkoutsk, il n'est donc pas surprenant qu'il n'ait trouvé qu'une telle chose.La deuxième solution séduit par sa simplicité et son ingéniosité, mais en fait c'est une béquille:
merci pour la capture d'écran Myfeargear, une telle chose a été remarquée pour Logitech G710 + Leclavier est simplement présenté au système par plusieurs appareils HID, chacun ayant son propre 6KRO. Une rapide enquête auprès de connaissances leur demandant de spécifier un modèle de clavier et d'envoyer une telle capture d'écran a montré que Logitech , A4tech , Cougar et SteelSeries utilisent ce hack - en général, tous ceux qui ont trouvé NKRO dans la description des claviers USB.Attention! Avant de vérifier votre clavier, assurez-vous qu'aucune souris USB sophistiquée à plusieurs boutons n'est connectée (même sans fil). Étant donné que toutes les magnificences multi-boutons de la même manière peuvent prétendre être des claviers "supplémentaires".Conclusion
En fait, c'est tout. Presque tous les fabricants ont choisi une méthode «béquille», mais qui fonctionne et ne crée pas de problèmes particuliers pour l'utilisateur, et le NKRO honnête (enfin, relativement honnête) sur USB est réalisable. Source: https://habr.com/ru/post/fr384797/
All Articles