Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 29.10.2009, 10:49 Titel: SDL-Tastatureingaben |
|
|
Hallo
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 |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.10.2009, 11:26 Titel: |
|
|
Ü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 |
|
|
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 29.10.2009, 12:04 Titel: |
|
|
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 |
|
|
|