Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

SDL-Tastatureingaben

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 29.10.2009, 09:49    Titel: SDL-Tastatureingaben Antworten mit Zitat

Hallo lächeln

Hat einer eine Idee wie man das klassische Inkey-Funktion in SDL nachbauen könnte?

Bisher erscheint mir das voll umständlich.. und das funktioniert noch lange nich so wie es soll:
[edit]
Code:

function SDLInkey(SEvent as any ptr) as string
    DIM SDLEvent as SDL_Event ptr = SEvent
    Dim Tmp as string
    if SDL_PollEvent ( SDLEvent ) then
        if SDLEvent->type = SDL_KEYDOWN then
            with *SDLEvent
                if .Key.KeySym.sym > 126 then
                    return CHR(255, .key.keysym.scancode)
                else
                    TMP = CHR(.key.keysym.sym)
                end if
                if .key.keysym.mod_ = 4097 then Tmp = ucase(Tmp)
                if ( .key.keysym.mod_ = 4160 or .key.keysym.mod_ = 4224) and CHR(.key.keysym.sym) = "v" then tmp = CHR(22)
                if ( .key.keysym.mod_ = 4160 or .key.keysym.mod_ = 4224) and CHR(.key.keysym.sym) = "c" then tmp = CHR(3)
            end with
            return TMP
        else
            return ""
        end if
    end if
end function


Hab leider auch keine SDL-native funktion gefunden die in etwa an das verhalten des klassischen inkey rankommt... Tastatureingaben sind unter SDL echt nicht einfach zu händeln böse
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 29.10.2009, 10:26    Titel: Antworten mit Zitat

Überlege dir doch einfach mal, was zu inkey dazu gehört:
- Erkennen der gedrückten Taste - einfach. Durch alle möglichen Scancodes durchgehen und schauen, welcher gerade true ist.
- Eine Verzögerungsvariable, die benutzt wird, wenn die selbe Taste zweimal registriert wird und z.B. 0.2 Sekunden wartet
Schwer? Nöö.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 29.10.2009, 11:04    Titel: Antworten mit Zitat

Von schwer hab ich nichts gesagt, eher umständlich und aufwändig!

Aus meiner sicht wäre der einzig korrekte weg eine komplette übersetzungstabelle erstellen. Dabei muss man die modifier und die virtuellen symbole auf die entsprechenden Inkey-strings übersetzen.. und das IST aufwändig! Vor allem weil man dafür alle tastatur-layouts ausprobieren müsste um auch tastaturen in anderen ländern zu berücksichtigen..
Zitat:
Durch alle möglichen Scancodes durchgehen
ist dann leichter gesagt (bzw. geschrieben) als getan..

Die verzögerung ist in SDL kein problem. Das hab ich im griff... dafür gibts "SDL_EnableKeyRepeat"

Ich dachte ehrlichgesagt eher daran, ob vielleicht jemand eine ganz andere idee hat, wie man tastatureingaben in einem SDL-Fenster in Inkey-übliche strings übersetzt...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz