polled input sticking

Archives Forums/Linux Discussion/polled input sticking

Nigel Brown(Posted 2006) [#1]
Have just got Pushy compiled and running, and I am having problems with polled input.

When holding a key down continuously the key eventually stops returning its pressed state until you release and press again?

I am running in windowed mode. And calling enablepolledinput() All works fine under Windows and OSX.


Nigel Brown(Posted 2006) [#2]
Here is an example of the problem, use the left arrow key to change screen colour.

Also if you change KEY_LEFT to KEY_ESCAPE then nothing ever happens?

I am using Suse 10.1 not sure if this matters or not.

Const WINDOW_WIDTH=640
Const WINDOW_HEIGHT=384

Local wx=(GadgetWidth(Desktop())-WINDOW_WIDTH)/2
Local wy=(GadgetHeight(Desktop())-WINDOW_HEIGHT)/2
Global main_window:TGadget = CreateWindow( Title$,wx,wy,WINDOW_WIDTH,WINDOW_HEIGHT,Null,WINDOW_TITLEBAR | WINDOW_CLIENTCOORDS)
Global canvas:TGadget=CreateCanvas(0,0,WINDOW_WIDTH,WINDOW_HEIGHT,main_window)
SetGraphics CanvasGraphics(canvas)

ActivateGadget canvas

CreateTimer(10)

enablepolledinput()

While WaitEvent()

	Select	EventID()

		Case EVENT_WINDOWCLOSE
			End

		Case EVENT_TIMERTICK

			If KeyDown(KEY_LEFT)
				SetClsColor Rnd(255),Rnd(255),Rnd(255)
				Cls
				Flip
			EndIf

	EndSelect

End While




Wellmt(Posted 2006) [#3]
Guess I'll have to reply to this again since the posts have all gone missing.

It sticks on my Linux box too (Ubuntu 6.10) so it's not a SuSE problem.

I did notice an error in the output tab of the editor whilst the program was running though. I'll have to check later to see what it was.


Wellmt(Posted 2006) [#4]
The error is this:

bad fl_display= 136741528

Don't know what it means though.


Nigel Brown(Posted 2006) [#5]
Wellmt, I have posted that as a bug. Brucey seemed to think it may be a module not being loaded?


Nigel Brown(Posted 2006) [#6]
The problem seems to be worse than just polled input. I get KEYUP events when holding a key down? look at this:

Const WINDOW_WIDTH=640
Const WINDOW_HEIGHT=384

Global hit[1024]

Function MyKeyDown( key:Int )
	Return HIT[Key]
End Function

Local wx=(GadgetWidth(Desktop())-WINDOW_WIDTH)/2
Local wy=(GadgetHeight(Desktop())-WINDOW_HEIGHT)/2
Global main_window:TGadget = CreateWindow( Title$,wx,wy,WINDOW_WIDTH,WINDOW_HEIGHT,Null,WINDOW_TITLEBAR | WINDOW_CLIENTCOORDS)
Global canvas:TGadget=CreateCanvas(0,0,WINDOW_WIDTH,WINDOW_HEIGHT,main_window)
SetGraphics CanvasGraphics(canvas)

ActivateGadget canvas

CreateTimer(10)

'enablepolledinput()

While WaitEvent()

	Select	EventID()

		Case EVENT_WINDOWCLOSE
			End

		Case EVENT_KEYUP
			DebugLog "KEY UP"
			Select EventData()
				Case KEY_LEFT
					HIT[KEY_LEFT]=0
			End Select
			
		Case EVENT_KEYDOWN
			DebugLog "KEY DOWN"
			Select EventData()
				Case KEY_LEFT
					HIT[KEY_LEFT]=1
			End Select

		Case EVENT_TIMERTICK

			If MyKeyDown(KEY_LEFT)
				SetClsColor Rnd(255),Rnd(255),Rnd(255)
				Cls
				Flip
			EndIf

	EndSelect

End While