BASIC

Author Topic: Tastendruck wird nicht erkannt  (Read 1640 times)

gliep

  • Guest
Tastendruck wird nicht erkannt
« on: 2010-Feb-12 »
Hallo,

ich habe Probleme drei gleichzeitig gedrückte Tasten zu erkennen.

Beispielcode:
Code: GLBasic [Select]
GLOBAL  BUTTON_RIGHT%   =   205
GLOBAL  BUTTON_LEFT%    =   203
GLOBAL  BUTTON_DOWN%    =   208
GLOBAL  BUTTON_UP%      =   200
GLOBAL  BUTTON_FIRE%    =   45// Key X

WHILE TRUE

IF KEY(BUTTON_RIGHT)
        PRINT "Right", 100, 50
    ENDIF
    IF KEY(BUTTON_LEFT)
        PRINT "Left", 100, 60
    ENDIF
    IF KEY(BUTTON_DOWN)
        PRINT "Down", 100, 70
    ENDIF
    IF KEY(BUTTON_UP)
        PRINT "Up", 100, 80
    ENDIF
        IF KEY(BUTTON_FIRE)
                PRINT "Fire", 100, 100
    ENDIF
    SHOWSCREEN
WEND

Wenn ich die Tasten "Hoch", "Rechts" und "Fire" (=X) drücke, dann wird auch alles brav erkannt und der Text angezeigt.

Drücke ich "Runter", "Rechts" und dann auf "Fire" steht auf dem Bildschirm nur der Text "Left" und "Down".
Fire wird verschluckt.  :(

Das Probelm tritt auch bei "Runter" und "Links" auf.

Ist das nicht komisch?

Nachtrag:

Es scheint an der Taste "X" zuliegen mit "Q" funktionierts. *noch komischer*

Viele Grüße und Danke

Stefan
« Last Edit: 2010-Feb-12 by gliep »

Offline Kosta

  • Mr. Polyvector
  • ***
  • Posts: 167
  • nothing.....except 'Kosta'
    • View Profile
    • Kosta's Blog
Re: Tastendruck wird nicht erkannt
« Reply #1 on: 2010-Feb-12 »
hmmm...engl/amerikanischer Tastaturtreiber?

versuch mal, ob Fire erscheint wenn du die Taste "Y" drückst
Intel QuadCore, Geforce8600GT,512MB,4GB Ram, 26" TFT
HP nw8440 Schläppy
GP2X Mk2 (Firmware 3.0)

GLBASIC Blog:
http://www.glbasic.com/forum/index.php?blog=51.0

Offline Trabant 500

  • Mr. Drawsprite
  • **
  • Posts: 95
    • View Profile
Re: Tastendruck wird nicht erkannt
« Reply #2 on: 2010-Feb-12 »
hmmm...engl/amerikanischer Tastaturtreiber?

versuch mal, ob Fire erscheint wenn du die Taste "Y" drückst

Ich glaube nicht das es daran liegen könnte, da auf einer englischen Tastatur Z und Y vertauscht sind. Das X ist aber bei beiden gleich.


@gliep
Das hat jetzt nichts mit Deinem eigentlichen Problem zu tun, aber ich würde Dir vorschlagen die Tasten nicht als globale Variablen, sondern als Konstanten zu deklarieren.
IF was <> passt
   was = passt
ENDIF

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Re: Tastendruck wird nicht erkannt
« Reply #3 on: 2010-Feb-12 »
kann keinen Fehler feststellen. Funktioniert bei mir in allen möglichen Variationen einwandfrei.

Tastatur defekt?
Hatte ich mal, als ich ein Glas Wasser über meine Tastatur verteilt hatte. Nach dem Trocknen gings zwar wieder, aber bei bestimmten Tasten wurden dann doch auch mal andere Tasten "simuliert" :)


gliep

  • Guest
Re: Tastendruck wird nicht erkannt
« Reply #4 on: 2010-Feb-13 »
Hallo,

danke für Eure Rückmeldungen.

Ich bin jetzt etwas schlauer. Das Verhalten scheint abhängig von der Hardware zu sein. Habe das Programm auf einem anderen Rechner ausprobiert und da klappt es einwandfrei.

Der Fehler taucht bei meinem Lenovo Netbook auf. Evtl. kann die Tastatur von dem Rechner gewisse Tastenkombination nicht "zurückgeben"?! Die Tastatur ist ansonst einwandfrei. Deutsches layout, und noch keine Berührung mit Wasser oder so.

Die Tasten "A" und "S" gehen auch. "D" wiederum will nicht. Ich nehme jetzt erst mal die Tasten die wollen.

Und Danke für den Tipp mit den Konstanten. Ich arbeite mich gerade erst in GL Basic ein und forste die Tutorials durch. Wie mache ich einen Variable konstant? "static final" habe ich nicht gefunden. :)

Viele Grüße

Stefan
« Last Edit: 2010-Feb-13 by gliep »

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Re: Tastendruck wird nicht erkannt
« Reply #5 on: 2010-Feb-13 »
bei Laptop-Tastaturen sind manche Tasten noch mit Sonderfunktionen belegt, die man mit der [Fn] Taste aktivieren kann. Sind diese Buchstaben evtl. damit belegt?

STATIC ist für Funktionen gedacht, damit damit deklarierte Variablen zwischen den Funktionsaufrufen ihren Wert behalten.
Für Konstanten kannst du CONSTANT verwenden, auch wenn dieser Befehl, glaube ich, noch nicht 100%ig funzt und auch bisher in der Hilfe noch nicht zu finden ist.