Was hat es mit den Tastaturlayouts auf sich?

An drei Stellen innerhalb der Programmausführung muss calc.pw eine Umkodierung von der Encodierung, die Tastaturen verwenden, in ISO 8859-1 und umgekehrt vornehmen. Hierfür wird eine Lookup-Tabelle benötigt. Da dem Arduino nicht genug Speicher zur Verfügung steht, um solche Tabelle für alle möglichen Tastaturen vorzuhalten (neben der QWERTZ-Tastatur aus Deutschland, gibt es eine QWERTY-Tastatur aus den USA, eine QWERTY-Tastatur aus Großbitannien und unzählige weitere), gibt es die Möglichkeit, ein Tastaturlayout in den EEPROM von calc.pw zu flashen. Das Tastaturlayout, das geflasht werden kann, hat eine vorgegebene Struktur. Diese soll anhand eines Beispieles gezeigt werden.

Beispiel:

63616C632E7077 00080002 01 000000

Ein Tastaturlayout wird grundsätzlich in großgeschriebener Hexadezimalschreibweise angegeben. Das Beispiel besteht aus mehreren Elementen. Das Tastaturlayout beginnt mit einem Header. Dieser hat den Inhalt "calc.pw" in ISO 8859-1 Codierung ("63616C632E7077"). Anschließend folgt eine Adler-32 Prüfsumme ("00080002"). Diese erstreckt sich über alle folgenden Daten. Als nächstes folgt ein Längenfeld ("01"), das angibt, wieviele Tastenkombinationen das Tastaturlayout beinhaltet. Anschließend folgenden die eigentlichen Tastenkombinationen ("000000"). Die ersten zwei Ziffern geben den Scancode entsprechend der USB HID Usage Table für Tastaturen an. Die folgenden zwei Ziffern geben den Modifikator an. Die letzten zwei Ziffern geben die ISO 8859-1 Repräsentation des Zeichens an.

Folgende Werte sind für den Modifikator möglich:

00 - es darf keine Steuertaste gedrückt sein
01 - es muss AltGr (alternativ Strg+Alt) gedrückt sein
02 - es muss Shift gedrückt sein
40 - NumLock muss aktiv sein (für das Numpad)
80 - die gedrückte Steuertaste ist egal (Space, Enter, Tab, Backspace)

Da das gezeigte Beispiel keine Funktion hat und nur als strukturelles Beispiel dient, ist im nächsten Bild das Tastaturlayout für die deutsche QWERTZ-Tastatur abgebildet. Dieses besteht ebenfalls aus dem Header ("63616C632E7077"), der Prüfsumme ("00EB00D7"), dem Längenfeld ("81"), gefolgt von den eigentlichen Tastenkombinationen ("040061 040241...").

QWERTZ Layout
(das QWERTZ-Layout)

Beim Hochfahren und beim Reset von calc.pw wird geprüft, ob ein ordentliches Tastaturlayout auf die Hardware geflasht worden ist. Falls ja, wird mit dem normalen Nutzungsablauf fortgefahren. Falls nein, wird eine entsprechende Fehlermeldung ausgegeben. Dies kann zum Beispiel dann der Fall sein, wenn calc.pw das erste Mal gestartet wurde oder wenn beim letzten Flashen etwas schief gelaufen ist. Dies ist jedoch kein Grund zur Besorgnis, da die Behebung relativ einfach ist.

Fehlendes Layout
(Fehlermeldung bei fehlendem Layout)

Um ein neues Tastaturlayout auf calc.pw zu flashen, muss dieses zuerst in den Flash-Modus versetzt werden. Hierzu muss der Reset-Button gedrückt und gehalten werden, bis die rote und grüne LED gleichzeitig aufleuchten. Darüber hinaus gibt das Display einen Hinweis darauf, dass das Gerät in den Flash-Modus gewechselt ist. In diesem Flash-Modus öffnet calc.pw eine serielle Schnittstelle mit einer Geschwindigkeit von 9600 Baud, über die das neue Tastaturlayout übertragen werden muss.

Flash A Flash B Flash C Flash D
(Statusanzeige bei Flashvorgang)

Über die serielle Schnittstelle gibt calc.pw zudem Auskunft über den Fortschritt des Flashvorgangs. Nach dem Flashen (egal ob erfolgreich oder nicht) führt das Gerät einen Reset durch. Sollte der Flashvorgang erfolgreich gewesen sein, kann nun mit der Verwendung des Gerätes begonnen werden. Sollte der Flashvorgang fehlgeschlagen sein, wird empfohlen, das Gerät kurz vom Netz zu trennen, bevor ein erneuter Flashversuch gestartet wird.

Layout Flashed
(Flash-Nachrichten über die serielle Schnittstelle)

Inhalt:

  1. Weshalb calc.pw?
  2. Wie funktioniert calc.pw?
  3. Wie muss ich die Information eingeben?
  4. Wie funktioniert die Passwortgenerierung?
  5. Wie wurde calc.pw aufgebaut?
  6. Wie wurde calc.pw programmiert?
  7. Was hat es mit den Tastaturlayouts auf sich?
  8. Wer steckt hinter calc.pw?
  9. Downloads
© 2013-2017 Kenneth Newwood (@weizenspreu)
no-www.org extra-www.org IPv6 ready
Datenbank: 25 Abfragen | Generierung: 0,31543 Sekunden Top