Configurable Buttons

 von Bernhard Klemenjak Jedes Mal, wenn ich jemandem eine Implementierung von mir erkläre, von der ich nicht 100%ig überzeugt bin, fange ich an mit den Worten „Ich weiß nicht, ob das so gescheit ist“. Deshalb beginne ich diesen Eintrag mit: Ich weiß nicht, ob das so gescheit ist. Viele viele Stunden habe ich mich mit der Tastenbelegung in Schein auseinandergesetzt. Zuerst hatten wir ein einfaches Bild, auf dem die Belegung…

von Bernhard Klemenjak

Jedes Mal, wenn ich jemandem eine Implementierung von mir erkläre, von der ich nicht 100%ig überzeugt bin, fange ich an mit den Worten „Ich weiß nicht, ob das so gescheit ist“.
Deshalb beginne ich diesen Eintrag mit:
Ich weiß nicht, ob das so gescheit ist. Viele viele Stunden habe ich mich mit der Tastenbelegung in Schein auseinandergesetzt. Zuerst hatten wir ein einfaches Bild, auf dem die Belegung für Tastatur und Gamepad abgebildet waren. Genügt ja für den Anfang.
Dann war der Wunsch da, die Gamepad Tasten konfigurierbar zu machen, denn es gibt ja (ungefähr) zehn Trillionen verschiedene Gamepad Designs und fast genauso viele unterschiedliche „Lieblingskonfigurationen“.
Also gut, jetzt können die Gamepad Tasten frei belegt werden. Für die Tastaturbelegung sollten erstmal statische Bilder reichen; vielleicht machen wir die auch irgendwann konfigurierbar. Und irgendwann war es auch wirklich soweit. „Kein Problem“ dachte ich, ich kann ja sicher das meiste von der bereits vorhandenen Gamepad Konfiguration übernehmen.

Button Configuration
Im Nachhinein kann ich nur müde darüber lächeln. Nachfolgend ein paar Erkenntnisse:
Bei den Gamepad Tasten hab ich vorerst nur Text für die Darstellung verwendet, also zum Beispiel „Links“, „A“, „Button 5“. Für die Tastatur dachte ich, dass es wohl eine coole „Gedrückte-Taste-zu-Zeichen-Funktion“ geben wird. Gibt es aber nicht – zumindest nicht wirklich. Nach weiterem Grübeln und Probieren kam ich schließlich zu folgendem Ergebnis: 3 verschiedene Implementierungen/Darstellungen, je nach Taste.

  1. Tasten die sich 1:1 in ein einzelnes Zeichen/Buchstaben umwandeln lassen
    zum Beispiel A/S/1/*
  2. Tasten die als Symbol dargestellt werden
    zum Beispiel Enter/Shift/Leertaste
  3. Tasten die mit (teils) sprachabhängigem Kürzel dargestellt werden
    zum Beispiel STRG/ALT/ENTF

Außerdem gibt es Tasten, die mit DirectInput (zumindest meiner Meinung nach) nicht gut auf ein Zeichen übertragbar sind (darunter fallen leider auch Ö/Ü/Ä). Deshalb habe ich die Tasten der Kategorie 1 auf jene reduziert, die mit ASCII Werten zwischen „!“ (33) und „~“ (126) dargestellt werden, alles darüber oder darunter wird ignoriert. Schlussendlich mussten noch ein paar Tasten explizit verboten werden – aber ich hoffe niemand ist böse, dass er die Windows-Taste nicht belegen darf.