Hallo, ich möchte eine Matrixtastatur auswerten. Hardwareseitig sind Vorkehrungen gegen PhantomKeys gegeben (Diode vor jedem Taster bzw. eine Diode pro Zeile/Spalte diagonal in der Matrix angeordnet). Allerdings fehlt mir der Ansatz für den Softwaretreiber. Bei der einfachen Matrixtastatur habe ich den Scancode ermittelt, entprellt und dann den Keycode aus einer Tabelle herausgeholt. Die Funktionen zum Auslesen haben haben dann entsprechend den Keycode ausgegeben. Ich frage mich nun, wie ein Softwaretreiber für die Unterstützung zur Erkennung mehrerer Tasten aussieht. Ein einzelnes Byte als Speicher für die Taste reicht ja dann nicht mehr. Aber einen Buffer mit n Bytes (n = Anzahl der Tasten) kann es ja auch nicht sein, oder? Wie wird das dann in der Praxis gehandhabt? Eigentlich würde ja auch ein simpler n-Bit Buffer gehen, das spart schon einiges. Zusätzlich nochmal einen parallelen n-Bit Speicher für Spezialfunktionen wie Shift/Ctrl etc. Oder ist das der Holzweg? Und die Auswerteroutinen an sich können dann auch nicht mehr einen Keycode zurückgeben, wie löst man das dann? -> Richtung umkehren, also von "gib mir die gedrückte Taste" hin zu "Ist die Taste XYZ gerade gedrückt?" ? Ralf
Hallo! Die Methode hängt natürlich von der Art der Matrix ab. Für eine Kippschaltermatrix, bei der von 0 bis n Kontakte auch dauerhaft betätigt sein können verwende ich einen n-Bit-Speicher mit Entprellung. Für Tasten mit Zweit- oder Drittbelegung (Shift, Ctrl, Alt), frage ich bei jedem Timertick diese konkreten Umschalttasten immer mit ab, und korrigiere den Tastencode entsprechend (also z.B.: aus dem gedrückten "a" wird ein "A" oder aus der "1" das Ausrufezeichen). Für ein n-Byte-Puffer kann man bei 10 begrenzen: mehr Finger hat niemand.
Ralf schrieb: > Ich frage mich nun, wie ein Softwaretreiber für die Unterstützung zur > Erkennung mehrerer Tasten aussieht. Wahrscheinlich wie unter Windows: Taste mit Drücken und Loslassen in eine Queue einsortieren. Stichwort n-Key rollover. Das bitfeld macht, wie Route schrieb, eher Sinn bei Schaltern.
@Route 66: Stimmt, eine Begrenzung ist natürlich auch eine Möglichkeit :) Guter Hinweis, danke. @MaWin: Hmja, die Make-/Break-Codes oder wie die genannt werden. Beispielsweise Bit 7 beim Drücken setzen, und beim Loslassen mit gelöschtem Bit 7 in die Queue -> ist notiert. @PeDa: Danke, werd ich heut abend durch durchlesen, bin noch auf der Suche nach geeigneten Tasten. Ralf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.