Detecting a key press.

BlitzMax Forums/MaxGUI Module/Detecting a key press.

Ryan Burnside(Posted 2009) [#1]
The following function is meant to assign key values to my game. The problem is in the waiting for a key press. My logic was to click the key that represents the button your wish to map. The label then changes to a waiting message and the program halts until a key is pressed. When a key is pressed it should re label the label with the new key code.

Function request_controls()
	' create a window
	Local ControlWindow:TGadget = CreateWindow("Key Editor", 232, 232, 320, 240)
	Local gup_button:TGadget = CreateButton("Up Key", 16, 16, 64, 16, ControlWindow)
	Local gup_tag:TGadget = CreateLabel("Key " + String(up_button), 96, 16, 200, 16, ControlWindow)
	
	Local gdown_button:TGadget = CreateButton("Down Key", 16, 32, 64, 16, ControlWindow)
	Local gdown_tag:TGadget = CreateLabel("Key " + String(down_button), 96, 32, 200, 16, ControlWindow)
	
	Local gleft_button:TGadget = CreateButton("Left Key", 16, 48, 64, 16, ControlWindow)
	Local gleft_tag:TGadget = CreateLabel("Key " + String(left_button), 96, 48, 200, 16, ControlWindow)
	
	Local gright_button:TGadget = CreateButton("Right Key", 16, 64, 64, 16, ControlWindow)
	Local gright_tag:TGadget = CreateLabel("Key " + String(right_button), 96, 64, 200, 16, ControlWindow)
	
	Local gkey1_button:TGadget = CreateButton("Key 1 Key", 16, 80, 64, 16, ControlWindow)
	Local gkey1_tag:TGadget = CreateLabel("Key " + String(button_1), 96, 80, 200, 16, ControlWindow)
	
	Local gkey2_button:TGadget = CreateButton("Key 2 Key", 16, 96, 64, 16, ControlWindow)
	Local gkey2_tag:TGadget = CreateLabel("Key " + String(button_2), 96, 96, 200, 16, ControlWindow)

	Local set_button:TGadget = CreateButton("Set Current", 16, 128, 64, 16, ControlWindow)
	Local cancel_button:TGadget = CreateButton("Cancel", 16, 128 + 16, 64, 16, ControlWindow)
	
	Repeat
	WaitEvent()
	' choose the event that tripped the wait event
	Select EventID()
		Case EVENT_WINDOWCLOSE
			ControlWindow.Free()
			Return
	End Select
	
	Select EventSource()
		Case gup_button
			gup_tag.SetText("Waiting, press key for 'up'")
			up_button=WaitChar()
			gup_tag.SetText("Key " + String(up_button))
	End Select
Forever
End Function



jsp(Posted 2009) [#2]
Something like this?




Ryan Burnside(Posted 2009) [#3]
That looks good, I'll test when I get home thanks!