Le clavier n'a besoin d'aucun signal de l'ordinateur, juste de l'alimentation, n'est-ce pas? OU a-t-il besoin de recevoir des signaux et de les envoyer?
Edit: Je ne m'attendais pas à ce que cette question suscite autant d'intérêt! Je l’ai demandé parce que je rêvais de construire un doohickey qui dupliquait le signal afin que le clavier puisse envoyer la même lettre à deux ordinateurs à la fois. Puisque (d'après ce que je peux comprendre dans les réponses) l'ordinateur contrôle activement le clavier comme tout autre appareil, ce n'est clairement pas possible. Ce n’est pas grave car je n’avais pratiquement pas les compétences nécessaires pour le construire!
Réponses:
De la spécification " Définition de classe d'appareil pour dispositifs d'interface utilisateur (HID)" version 11.1 :
Pour changer les voyants du clavier, le clavier accepte une commande. Il ne s’agit donc pas d’un périphérique «uniquement en entrée» (c’est-à-dire qu’il ne transmet que des données à l’hôte).
Cela étant dit, il existe un processus de négociation et d’énumération avec tous les périphériques USB qui nécessitent une conversation aller-retour entre l’hôte et le périphérique. Vous ne pouvez pas avoir un périphérique USB "en lecture seule".
Même avant l'USB, le contrôleur de clavier du PC acceptait les commandes car il faisait autre chose que lire le clavier ( référence ):
la source
So it is not an "input-only" device (meaning it only outputs data to the host)
qui me confondTout périphérique USB, quelle que soit sa classe, nécessite une communication bidirectionnelle pour fonctionner . Chaque périphérique USB (ou fonction en termes de spécifications USB) est représenté comme un ensemble de points de terminaison pouvant être considérés comme des tampons qui acceptent ou reçoivent des données. Toutefois, même les points d'extrémité qui peuvent uniquement envoyer des données attendent un paquet spécial appelé jeton avant de pouvoir répondre:
(image à partir d' ici , les cases grises représentent l'hôte USB, les cases blanches représentent la fonction USB)
Même ce que l’on appelle les transferts d’interruptions se fait de cette manière, les hôtes USB interrogeant les périphériques connectés à l’aide de paquets de jetons. Ce qui diffère entre les transferts réguliers (en masse) et les transferts d'interruption, c'est que le temps d'interrogation est court et garanti dans ce dernier cas. Cependant, tous les transferts sont initiés par l'hôte.
la source
La question reflète une idée fausse commune selon laquelle les périphériques USB "envoient" quelque chose au PC quand ils appuient sur une touche (ou que la souris se déplace), voilà pourquoi une si grande attention est accordée. En fait, les périphériques USB n'envoient rien tant qu'ils ne reçoivent pas la demande correspondante de l'hôte. Une exception est un processus de réveil à partir d'un périphérique suspendu.
Alors que la clé USB semble simple en surface, son fonctionnement est plutôt compliqué. Tout nouveau périphérique USB doit être "énuméré" avant de commencer à fonctionner. La séquence est la suivante:
Une fois le clavier branché, le port hôte reçoit le signal "Connect Status" (pour les signaux LS, D- est tiré sur HIGH par le clavier).
Ensuite, l'hôte définit le port en mode "réinitialisation de port" et le pilote USB PHY (pilote de couche physique) envoie "USB_RESET" aux lignes D + / D- (les deux lignes sont réduites à l'état BAS pendant un laps de temps prescrit). Certaines informations sur la "réinitialisation du port" pour les périphériques FS / HS sont disponibles ici .
Ensuite, l’hôte commence à émettre des paquets de limites de trame toutes les 1 ms. Pour les périphériques à faible vitesse (LS) en tant que clavier câblé ordinaire, il ne s'agit que d'impulsions "de maintien en vie", alors que pour FS, les paquets spéciaux SOF - sont générés. Ces paquets maintiennent l'appareil en mode actif et l'empêchent de passer en mode SUSPEND basse consommation.
Ensuite, l'énumération commence. L'hôte envoie une demande pour obtenir un descripteur de périphérique. La demande est envoyée à "canal par défaut" avec l'adresse de périphérique "0". [Il n'y a qu'un seul périphérique de ce type à l'heure actuelle - le clavier - puisque tous les autres périphériques du bus devraient déjà avoir leurs adresses USB attribuées individuellement.]
Le clavier renvoie les informations demandées afin que l'hôte puisse déterminer quel type de pilote doit être chargé.
L'hôte envoie une transaction demandant au périphérique de changer son adresse par défaut en nouvelle adresse attribuée.
Ensuite, l'hôte commence une nouvelle série de communications avec le périphérique, maintenant à la nouvelle adresse attribuée. Tous les autres appareils ignorent cette communication car elle ne leur est pas destinée.
L'hôte peut lire beaucoup plus d'informations à partir de plusieurs autres descripteurs et éventuellement sélectionner "configuration du périphérique". Ceci termine le processus de dénombrement.
En fonction de la classe de périphérique USB, l'hôte commence à communiquer avec le périphérique. Dans le cas d'un clavier, l'hôte envoie essentiellement une requête "IN" périodiquement, en interrogeant essentiellement le périphérique (même si ce canal périodique est appelé canal "d'interruption"). Si l'une des touches du clavier est enfoncée / enfoncée, le clavier renvoie ces informations. Sinon, aucune donnée ne sera renvoyée au pilote de périphérique.
En bref, chaque périphérique USB doit recevoir une adresse unique de l'hôte USB et deux hôtes USB auront des difficultés à communiquer avec un périphérique: collision de bus, discordance d'adresse, interception aléatoire de données enfoncées, etc. Le protocole USB rend impossible le partage d'une appareil entre deux hôtes USB.
la source
If keyboard has any key pressed/depressed, the keyboard will return this information
- comment les clés fantômes se produiraient alors? J'avais l'impression que les claviers doivent envoyer des événements de touches et de touches en bas, ce qui expliquerait pourquoi, si un événement de touche en était oublié, vous auriez des clés fantômes ...Comme d'autres réponses l'ont expliqué, l'USB nécessite une communication bidirectionnelle dans le cadre de son fonctionnement. Le protocole PS / 2, tout en permettant une communication bidirectionnelle, ne l’exige pas pour pouvoir envoyer des touches à l’ordinateur, mais nécessite le réglage des voyants du clavier.
Théoriquement, vous pouvez créer un périphérique pour dupliquer le signal PS / 2, l'envoyer à un deuxième ordinateur et ignorer les commandes des ordinateurs. Vous pourrez ainsi appuyer sur les touches de votre clavier pour les envoyer sur plusieurs ordinateurs. répondez aux états Verrouillage numérique, Verrouillage majuscule et Verrouillage défilement (ou tout autre changement d'état des voyants, par exemple sous Linux, les voyants du clavier sont parfois utilisés à des fins alternatives).
Je ne suis pas sûr de la complexité d'un tel projet. Cela fait longtemps que je ne travaille pas avec PS / 2, donc je ne sais pas si vous pouvez simplement relier deux fils / connecteurs ou si vous avez besoin d’un périphérique actif (un microcontrôleur, par exemple) pour transmettre des commandes dans un sens mais les ignorer. dans l'autre. Si vous avez un microcontrôleur, vous pouvez même configurer le périphérique de manière à ce qu'il puisse interpréter les commandes du clavier et les "combiner" pour les afficher (par exemple, le témoin clignote longtemps s'il est allumé sur l'ordinateur 1 mais éteint sur l'ordinateur 2, clignotement court le voyant s’il est allumé sur l’ordinateur 2, mais éteint, le voyant reste allumé s’il est allumé sur les deux ordinateurs et éteint s’il est éteint sur les deux ordinateurs). Ce serait plus avancé cependant.
En outre, si votre objectif est de pouvoir contrôler un ordinateur à partir d'un autre ordinateur, ou de deux ordinateurs à partir du même bureau, ou autre, vous voudrez peut-être examiner:
la source
Avant les claviers USB, les claviers PS / 2 utilisaient un protocole beaucoup plus simple dans lequel il est possible d’avoir un clavier connecté à 2 périphériques et de le faire fonctionner. Une simple connexion en Y suffit.
Les anciens claviers USB ont toujours le mode d'émulation PS / 2 intégré; L'utilisation de l'un de ces adaptateurs de connecteur violet vous permet de le brancher sur un port PS / 2 situé à l'arrière d'un ordinateur. Donc, en utilisant un câble épanoui USB vers PS / 2 sur 2 ordinateurs, un adaptateur violet pour votre clavier USB pourrait bien fonctionner.
Les claviers USB les plus récents ont abandonné le mode PS / 2 hérité; ils ne fonctionneront donc pas dans ce cas.
la source