Seite 1 von 3

Problem mit KeyboardInkey()

Verfasst: 29.12.2006 16:07
von sen-me
Mir scheint so als würde dieser auf #PB_Key_Left und so auch reagieren...
Er schreibt bei allen 4 Pfeiltasten eine 2
Wie kann ich das unterbinden? (Hab versucht die Asc von 32 bis 126 nur zu aktzeptieren, klapt auch nit)

Verfasst: 29.12.2006 18:07
von THEEX
Schau Dir mal RawKey() an, ich habs jetzt nicht nachkontrolliert, aber das wird wohl die Lösung sein.

Verfasst: 29.12.2006 18:40
von sen-me
RawKey ist doch ein Console befehl Oo

EDIT:
Alle Tasten geben 2 zurück außer die Buchstaben und Zahlen...
(Sprich Crtl, Pfeiltasten, Alt, Shift, F1, F2, ....)
ESC gibt nen |

Kann ja schlecht jetzt abfragen ob all diese Tasten gedrückt sind oder nicht Oo

Code: Alles auswählen

   #PB_Key_Escape
    #PB_Key_Back
    #PB_Key_Tab
    #PB_Key_LeftBracket
    #PB_Key_RightBracket
    #PB_Key_LeftControl
    #PB_Key_LeftShift
    #PB_Key_RightShift
    #PB_Key_LeftAlt
    #PB_Key_F1
    #PB_Key_F2
    #PB_Key_F3
    #PB_Key_F4
    #PB_Key_F5
    #PB_Key_F6
    #PB_Key_F7
    #PB_Key_F8
    #PB_Key_F9
    #PB_Key_F10
    #PB_Key_F11
    #PB_Key_F12
    #PB_Key_NumLock
    #PB_Key_Scroll
    #PB_Key_Add
    #PB_Key_PadEnter
    #PB_Key_RightControl
    #PB_Key_RightAlt
    #PB_Key_Pause
    #PB_Key_Home
    #PB_Key_Up
    #PB_Key_Down
    #PB_Key_Left
    #PB_Key_Right
    #PB_Key_End
    #PB_Key_PageUp
    #PB_Key_PageDown
    #PB_Key_Insert
    #PB_Key_Delete
Die alle bis auf Escape geben 2 zurück...

Er gibt erst die 2 zurück wenn man die Taste wieder los gelassen hat

Verfasst: 29.12.2006 23:13
von Kaeru Gaman
öhm.. willst du den rückgabe-wert interpretieren?

normal sollte ein "#True" ausreichen...

wenn nicht, damit hab ich keine erfahrung, das pressed/still-pressed ist
eigentlich ne API sache, das is schon systemseitig gut ausgelegt....

Verfasst: 29.12.2006 23:15
von sen-me
Nein, ich will eine Eingabebox machen im Spiel...
Aber weil er Crtl und Alt unw. auch in die Box reinschreibt mit einer 2 ist das ziemlich scheiße

Verfasst: 29.12.2006 23:17
von Kaeru Gaman
ne die steuertasten musst du extra prüfen...

Verfasst: 30.12.2006 00:21
von THEEX
Äh, ich glaube ihr redet da etwas annander vorbei... vorallem funktioniert doch das Beispiel von KeyboardInkey() einwandfrei?
Oder liege ich da jetzt falsch, Du willst doch nur Zahlen und Buchstaben einegben können?

Verfasst: 30.12.2006 00:52
von sen-me
Richtig...
Aber er schreibt wenn ich Alt drücke und loslasse ne 2 rein
Das PB beispiel funktionier hmm aber wie kann es sein das er bei mir das reinschreibt Oo im ganzen Spiel kommt keine 2 vor Oo

EDIT

Code: Alles auswählen

DrawText(menu_items, 200, client_language, $00FFFF)
  ; DrawText(menu_items, 224, Str(client_sound)+"%", $00FFFF)
   DrawText(menu_items, 248, client_user, $00FFFF)
   DrawText(menu_items, 328, server_style, $00FFFF)
  ; DrawText(menu_items, 352, Str(server_turn), $00FFFF)
  ; DrawText(menu_items, 376, Str(server_port), $00FFFF)
Nur so funktioniert es...
Kann es sein das Str() im DrawText Keyboard funktionen durcheinander bringt? Zumindest KeyboardInkey()?

Ohman ich hab keine Ahnung....
im PB Beispiel mit Drawtext und Str darin funktionierts aber trotzdem...
Selbst wenn ich bei meinem Code +"%" mache funktionierts nicht mehr, beim PB Beispiel schon, woran liegt der Dreck...
Irgendeine Funktion muss den doch beeinträchtigen


EDIT

lol das gibts ja nicht

NUR weil ich string = KeyboardInkey() gemacht hab anstatt string + ... Oo
Also das is jan dicker Hund! Das müsste man in die Hilfe schreiben -.-
Kommt nehmlich lustiges bei raus..
Testet mal:

Code: Alles auswählen

If InitSprite() And InitKeyboard() And OpenScreen(800,600,16,"")
    Repeat
      FlipBuffers()
      ClearScreen(RGB(0, 0, 0))
      
      ExamineKeyboard()
      FullText$=""
      FullText$ = KeyboardInkey()  ; fügt das nächste Zeichen zum aktuellen Text (sofern vorhanden) hinzu
      s.s+FullText$
      
      ; Wenn wir die 'Backspace'-Taste drücken, löschen wir das letzte Zeichen
      ;
      If KeyboardReleased(#PB_Key_Back)  
        s = Left(s, Len(s)-1)
      EndIf

      ; Ergebnis darstellen
      ;
      If StartDrawing(ScreenOutput())
        DrawingMode(1)
        FrontColor(RGB(128, 255, 0))
        DrawText(20, 20, "Gib einfach etwas Text ein...:")
        DrawText(20, 40, s)
        StopDrawing()
      EndIf
    Until KeyboardPushed(#PB_Key_Escape)
  EndIf
Gebt als erstes ein Buchstabe oder so ein, dann drückt ne Pfeiltaste oder sonst was (nur keine Bcuhstaben/Zahlen)
Er wiederholt das Zeichen, was ganz am Anfang steht (löscht nochmal gebt andres Zeichen ein am Anfang und drückt wieder eine Pfeiltaste, nun wiederholt e rimmer diese, selbst wenn man zwischendurch was andres drückt an Buchstabe/Zahl) Oo

Verfasst: 30.12.2006 12:29
von THEEX
Hmmm, sieht mir schwer nach einem PB-Bug aus. Irgendwie total seltsam.

Verfasst: 30.12.2006 15:37
von edel
Pruef doch einfach ob in FullText$ ueberhaupt etwas steht,
wenn nicht gibt es auch nichts zum zusammenfuegen.