Wie gehen Tastaturen mit gleichzeitigen Eingaben um?

807
Bennett Yeo

In letzter Zeit beschäftige ich mich mit den grundlegenden Konzepten der Parallelität in der Programmierung. Ein Gedanke, der mir in den Sinn kam, war das gleichzeitige Eingeben von Keyboards. Bei der Programmierung wird eine Methode oder Funktion über einen Ereignis-Listener aufgerufen, der jeweils nur einen Tastendruck durchläuft. Ein Programmierer muss den Code auf eine bestimmte Weise programmieren, um das gleichzeitige Drücken mehrerer Tasten auszuführen. Ich frage mich, wie Hardware eine "wirklich gleichzeitige" Eingabe verarbeitet. Gibt es einen Mechanismus, der die wahrgenommenen Eingaben in einer bestimmten Reihenfolge automatisch priorisiert?

0
Nichts ist wirklich gleichzeitig. Zeitstempel können Millisekundengenauigkeit haben ... DavidPostill vor 9 Jahren 0
es ist also völlig unmöglich, die "gleichzeitige Eingabe" absichtlich oder zufällig zu erreichen? Bennett Yeo vor 9 Jahren 0

2 Antworten auf die Frage

0
user3767013

Jedes Drücken oder Loslassen der Taste wird über das USB-Kabel von der Tastatur an den Computer übertragen, sodass die Tastatur keine echten Tasten gleichzeitig senden kann. Die Tastatur sendet nur Nachrichten, wenn eine Taste gedrückt oder losgelassen wird. Der Computer teilt der Anwendung mit, dass zwei Tasten gedrückt werden, wenn eine Meldung "Taste gedrückt" vor der Meldung "Taste losgelassen" für die zuletzt gedrückte Taste eingeht.

guter Punkt, es bekommt nur eine 0 oder eine 1. Ich frage mich, ob Quantenelektronik Parallelität erreichen könnte ... Bennett Yeo vor 9 Jahren 0
0
Chenmunka

Ihre spezifische Frage zu Tastatureingaben beantworten. Der Computer empfängt Tastenanschläge an einer seriellen Verbindung, damit die Tastenanschläge werden nicht gleichzeitig, wie sie empfangen werden müssen - er - seriell.

Die Tastatur selbst ist ein kleiner Prozessor, der Tastendrücke liest und sie über die serielle Verbindung an den Computer sendet. Betrachten wir den Fall, in dem jemand zwei Tasten gleichzeitig "drücken" muss (was auch immer im Hinblick auf die zeitliche Genauigkeit bedeutet). Der Tastaturprozessor tastet eine Matrix digitaler Eingänge ab, die ihm die Tastendrücke geben. Es wird immer ein Druck vor dem anderen angezeigt, einfach aufgrund der Tastenüberprüfung. Selbst bei diesem Scan werden Mikrosekunden benötigt, ein Tastendruck wird vor dem anderen erkannt.

Es ist in der Tat möglich, dass die Pressen aufgrund dieses Scannens sehr nahe beieinander liegen, die zweite jedoch zuerst zu sehen ist.

Im allgemeineren Bereich der Echtzeit-Prozesssteuerungen ist es wahrscheinlich, dass ein Interrupt-Mechanismus verwendet wird, durch den Eingänge einen Prozessor unterbrechen, um ihn über ein Ereignis zu informieren. Auch wenn die Ereignisse nicht zeitlich getrennt werden können, kommt ein Interrupt vor dem anderen zum Prozessor.

Eine anständig geschriebene ereignisgesteuerte Software muss berücksichtigen, dass zwei Ereignisse sehr nahe beieinander erkannt werden können und tatsächlich in umgekehrter Reihenfolge gesehen werden können.

Andere Sequenzierungs-Gotchas können in Fällen gefunden werden, in denen E / A-Prozessoren an einen Controller-Computer mit einem Protokoll berichten, das die Eingaben effektiv zusammenfasst.

Zusammenfassend kann wirklich eine gleichzeitige Eingabe erzielt werden - Nein.

Ich hatte den Verdacht, dass Tastaturen ein 'Array' verwenden und eine 'Eingabe' immer zuerst registriert wird, aber jetzt weiß ich es genau. Bennett Yeo vor 9 Jahren 0