Seite 1 von 1
Tastendruck simulieren im Openscreen
Verfasst: 20.08.2010 09:43
von dysti
Hallo,
ich bekomme es einfach nicht hin, das er nach dem ersten drücken der Entertaste in der zweiten Repeat-Schleife bleibt.
Er zeigt den Text "Test2" kurz an und steigt dann aus, weil er immer noch die Entertaste im Tastaturspeicher hat.
Er sollte aber in der zweiten Repeat-Schleife hängen bleiben.
Wie kann ich den Tastendruck simulieren oder Tataturspeicher löschen?
Auf jeden Fall sollten beide Repeat-Schleifen nur mit der Entertaste verlassen werden.
Code: Alles auswählen
InitKeyboard()
InitSprite()
OpenScreen(800,600,32,"")
EnableGraphicalConsole(1)
Repeat
ExamineKeyboard()
L$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
L$ = Left(input$, Len(L$)-1)
EndIf
ClearScreen(RGB(7, 133, 248))
StartDrawing(ScreenOutput())
DrawText(70,120,"Test1")
DrawText(70,150,L$ )
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Return)
keybd_event_(#PB_Key_Escape,0, 0, 0)
Repeat
ExamineKeyboard()
L$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
L$ = Left(input$, Len(L$)-1)
EndIf
ClearScreen(RGB(7, 133, 248))
StartDrawing(ScreenOutput())
DrawText(70,120,"Test2")
DrawText(70,150,L$ )
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Return)
CloseScreen()
Re: Tastendruck simulieren im Openscreen
Verfasst: 20.08.2010 09:59
von Christian+
Du solltest KeyboardReleased(#PB_Key_Return) statt KeyboardPushed(#PB_Key_Return) in diesem Fall verwenden da dann die Schleife erst verlassen wird wenn die Return Taste wieder Losgelassen wird und nicht sofort wenn sie gedrückt wird denn wenn du sie schon beim Drücken verlässt hast du immer das Problem das die Taste in Schliefe zwei immer noch gedrückt sein kann weshalb diese auch verlassen wird.
Re: Tastendruck simulieren im Openscreen
Verfasst: 20.08.2010 10:46
von dysti
Danke, das war die Lösung.
Edit:
Etwas zu vorschnell.
So z.B. überspringt es "Test3" und geht gleich zu "Test4"
Gibt es noch eine andere Lösung?
Code: Alles auswählen
InitKeyboard()
InitSprite()
OpenScreen(800,600,32,"")
EnableGraphicalConsole(1)
Repeat
ExamineKeyboard()
L$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
L$ = Left(input$, Len(L$)-1)
EndIf
ClearScreen(RGB(7, 133, 248))
StartDrawing(ScreenOutput())
DrawText(70,120,"Test1")
DrawText(70,150,L$ )
StopDrawing()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Return)
Repeat
ExamineKeyboard()
L$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
L$ = Left(input$, Len(L$)-1)
EndIf
ClearScreen(RGB(7, 133, 248))
StartDrawing(ScreenOutput())
DrawText(70,120,"Test2")
DrawText(70,150,L$ )
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Return)
Repeat
ExamineKeyboard()
L$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
L$ = Left(input$, Len(L$)-1)
EndIf
ClearScreen(RGB(7, 133, 248))
StartDrawing(ScreenOutput())
DrawText(70,120,"Test3")
DrawText(70,150,L$ )
StopDrawing()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Return)
Repeat
ExamineKeyboard()
L$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
L$ = Left(input$, Len(L$)-1)
EndIf
ClearScreen(RGB(7, 133, 248))
StartDrawing(ScreenOutput())
DrawText(70,120,"Test4")
DrawText(70,150,L$ )
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Return)
CloseScreen()
Re: Tastendruck simulieren im Openscreen
Verfasst: 20.08.2010 12:44
von dysti
Ich weiß nicht ob das die ultimative Lösung ist, aber so funktioniert es:
Code: Alles auswählen
InitKeyboard()
InitSprite()
OpenScreen(800,600,32,"")
EnableGraphicalConsole(1)
Repeat
ExamineKeyboard()
L$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
L$ = Left(input$, Len(L$)-1)
EndIf
ClearScreen(RGB(7, 133, 248))
StartDrawing(ScreenOutput())
DrawText(70,120,"Test1")
DrawText(70,150,L$ )
StopDrawing()
FlipBuffers()
If KeyboardReleased(#PB_Key_Return)
Goto a2
EndIf
Until KeyboardPushed(#PB_Key_Escape)
a2:
Repeat
ExamineKeyboard()
L$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
L$ = Left(input$, Len(L$)-1)
EndIf
ClearScreen(RGB(7, 133, 248))
StartDrawing(ScreenOutput())
DrawText(70,120,"Test2")
DrawText(70,150,L$ )
StopDrawing()
FlipBuffers()
If KeyboardReleased(#PB_Key_Return)
Goto a3
EndIf
Until KeyboardPushed(#PB_Key_Escape)
a3:
Repeat
ExamineKeyboard()
L$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
L$ = Left(input$, Len(L$)-1)
EndIf
ClearScreen(RGB(7, 133, 248))
StartDrawing(ScreenOutput())
DrawText(70,120,"Test3")
DrawText(70,150,L$ )
StopDrawing()
FlipBuffers()
If KeyboardReleased(#PB_Key_Return)
Goto a4
EndIf
Until KeyboardPushed(#PB_Key_Escape)
a4:
Repeat
ExamineKeyboard()
L$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
L$ = Left(input$, Len(L$)-1)
EndIf
ClearScreen(RGB(7, 133, 248))
StartDrawing(ScreenOutput())
DrawText(70,120,"Test4")
DrawText(70,150,L$ )
StopDrawing()
FlipBuffers()
If KeyboardReleased(#PB_Key_Return)
Break
EndIf
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End
Re: Tastendruck simulieren im Openscreen
Verfasst: 20.08.2010 13:01
von Christian+
In deinem Code der Test 3 überspringt ist bei Test 2 noch ein KeyboardPushed(#PB_Key_Return) statt KeyboardReleased(#PB_Key_Return) drin genau wie bei Test 4. Da Test 2 deshalb beim Drücken von Return und Test 3 anschließend beim Loslassen auf den Tastendruck reagiert wird Test 3 übersprungen. Auch hier behebt also KeyboardReleased(#PB_Key_Return) das Problem und du kannst dir das unschöne Goto sparen.
Re: Tastendruck simulieren im Openscreen
Verfasst: 20.08.2010 14:10
von dysti
....sehr komisch. Genauso wie du es beschrieben hast, habe ich es gemacht.
Funktionierte nicht.
Jetzt hatte ich den PC neu gestartet und das wieder so umgeändert wie du es beschrieben hast.
Nun funtz es. Mag verstehen wer will, ich verstehe es nicht.
Murphy´s Gesetze!
Nochmals Danke @Christian+

Re: Tastendruck simulieren im Openscreen
Verfasst: 22.08.2010 03:08
von Renovatio
Ich programmiere es zur Zeit für ein Projekt so:
Ich habe eine Variable, als Beispiel: AktuellesRepeat = ErsteRepeatSchleife
Wenn man nun eine Taste drücken soll dann frage ich das hiermit ab: If KeyboardReleased(#PB_Key_IrgendeineTaste) ...
Sollte dann wirklich eine Taste gedrückt worden sein dann folgendes im kurzen (ungetestet und auf die schnelle):
RepeatBereich = 1
If KeyboardReleased(#PB_Key_Return)
RepeatBereich = 2
EndIf
Du kannst es auch einfach schon komplett vorbereiten, so in etwa:
RepeatBereich = 1
If RepeatBereich = 1 And KeyboardReleased(#PB_Key_Return)
RepeatBereich = 2
ElseIf RepeatBereich = 2 And KeyboardReleased(#PB_Key_Return)
RepeatBereich = 3
ElseIf RepeatBereich = 3 And KeyboardReleased(#PB_Key_Return)
...
EndIf
Wie Du es brauchst, also je nachdem wie viele Schleifen oder Bereiche Du gerade hast.

Re: Tastendruck simulieren im Openscreen
Verfasst: 28.08.2010 14:17
von dysti
Hallo @Renovatio,
danke für den Tip.