Du bist nicht angemeldet.

Werbeanzeige

Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 720

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

1

04.06.2019, 00:04

Tastatur abstrahieren?

Hallo allerseits!

Vor zwei Wochen habe ich angefangen an einem eigenen, kleinen Open-Source-Projekt zu arbeiten. Es handelt sich dabei um eine Library, welche ähnlich wie GLFW, das Erstellen von Fenstern, das Abfragen von Tastatur- und Mauseingaben sowie das Erstellen eines OpenGL/OpenGL ES/WebGL Kontexts vereinfachen soll. Des Weiteren habe ich noch einige weitere Features in Planung, welche zur Zeit nicht von GLFW abgedeckt werden.

Aktuell frage ich mich, wie ich die Tastatur am besten abstrahieren soll. Der derzeitige Stand der Dinge beinhaltet eine Klasse mit einer statischen Methode `Keyboard::is_pressed(...)` sowie einer Enumeration, mit eigenen Virtual Keys.

Ich finde die aktuelle Implementierung nicht gerade schön, jedoch weiß ich nicht, wie ich das besser machen könnte; bzw. was am Sinnvollsten erscheint. Suche daher hier nach Inspiration und Anregungen! :-)

Ist es zum Beispiel sinnvoll, dass ich mir für die virtuellen Keycodes eine ANSI-Tastatur als Vorbild nehme?
Wie soll ich am besten Tasten unter Bezugnahme des Tastaturlayouts verarbeiten?
Gibt es vielleicht Lösungen, die Ihr als besonders gut erachtet?

TL;DR
Ich schreibe eine Library und will eine Klasse zur Abfrage der Tastenzustände einer Tastatur schreiben. Bin mir aber nicht sicher, wie diese am besten für den "Endnutzer" aussehen sollte.

Mit freundlichen Grüßen
Julien
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

2

04.06.2019, 06:13

Ich würde es so machen, wie du sagst. Du könntest für die Virtual Keys A-Z und 0-9 auch den entsprechenden ASCII-Code der Zeichen nehmen. Du brauchst aber auch eine weitere Methode für den eingegebenen Text, die z.B. ein â zurückliefert, wenn jemand ^ und a getippt hat.
Cube Universe
Entdecke fremde Welten auf deiner epischen Reise durchs Universum.

Schrompf

Alter Hase

Beiträge: 1 321

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

3

04.06.2019, 11:48

Ich habe das vor ner Weile mal gemacht: https://www.github.com/Schrompf/sniis

Ich erinnere mich nicht mehr so genau, was da alles nötig war. Aber:

a) Tastaturen sind nur der Anfang.
b) Tastaturen der ganzen Welt haben manchmal absurde Tasten
c) Die Konvertierung von einem Tastendruch zu einem Zeichen ist alles andere als einfach
d) Beachte die Fokusbehandlung, z.B. bei Alt+Tab. Key Pressed Alt, Key Pressed Tab, Focus Loss -> Mööp
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Schorsch

Supermoderator

Beiträge: 5 187

Wohnort: Wickede

Beruf: Student

  • Private Nachricht senden

4

04.06.2019, 14:12

Ist es nicht sinnvoll wenn du einfach mal guckst wie andere diese Probleme lösen? Gibt ja genügend Open Source Projekte bei denen du gucken kannst. Beispielsweise SFML und Godot.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Julién

Alter Hase

  • »Julién« ist der Autor dieses Themas

Beiträge: 720

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

5

11.06.2019, 01:15

Hey, danke für die Antworten!

@Schrompf: Danke für deinen Link. Ich schaue mir das ganze mal in Ruhe an.

@Schorsch: Bisher habe ich mich auch an SFML orientiert; jedoch habe ich mich trotzdem gefragt, ob es nicht eine besser Lösung vielleicht gibt ;)
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

BlueCobold

Community-Fossil

Beiträge: 10 890

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

12.06.2019, 08:06

Bei Tastaturen, Sonderzeichen und Keycodes, die in jedem Land andere Buchstaben bedeuten, gibt es keine hübsche Lösung. Nur Fickel-Mist. Deswegen macht das normalerweise das Betriebssystem ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige