Scancode->Ascii->Scancode converter

Miscellaneous Forums/Blitz Showcase/Scancode->Ascii->Scancode converter

Ok, here's another possible use for it (redefining of keys):
Graphics 640,480,0,2


Type controls
	Field kUp
	Field kDown
	Field kLeft
	Field kRight
End Type

Type player
	Field x
	Field y
	Field image
	Field controls.controls
End Type




Global player1.player = New player
	player1\x=320
	player1\y=240
	player1\image = CreateImage(32,32)
	Player1\controls.controls = New controls
	SetBuffer ImageBuffer(player1\image)
	Color 255,0,0
	Rect 0,0,32,32,1

Color 255,255,255
SetBuffer FrontBuffer()

Text 0,0, "press key for up: "
player1\controls\kUp = AsciiToScancode(WaitKey())
Text 22*FontWidth(),0,Chr(ScancodeToAscii(player1\controls\kUp))

Text 0,12, "press key for down: "
player1\controls\kDown = AsciiToScancode(WaitKey())
Text 22*FontWidth(),12,Chr(ScancodeToAscii(player1\controls\kDown))

Text 0,24, "press key for left: "
player1\controls\kLeft = AsciiToScancode(WaitKey())
Text 22*FontWidth(),24,Chr(ScancodeToAscii(player1\controls\kLeft))

Text 0,36, "press key for right: "
player1\controls\kRight = AsciiToScancode(WaitKey())
Text 22*FontWidth(),36,Chr(ScancodeToAscii(player1\controls\kRight))



Text GraphicsWidth()/2,100,"press any key to continue",True
WaitKey()

Cls

SetBuffer BackBuffer()

While Not KeyDown(1)

If KeyDown(player1\controls\kUp) Then 
	player1\Y = player1\y-2
	If player1\y<0 Then player1\y = 0
EndIf

If KeyDown(player1\controls\kDown) Then 
	player1\Y = player1\y+2
	If player1\y > GraphicsHeight()-32 Then player1\y = GraphicsHeight()-32
EndIf

If KeyDown(player1\controls\kLeft) Then 
	player1\x = player1\x-2
	If player1\x<0 Then player1\x = 0
EndIf

If KeyDown(player1\controls\kRight) Then 
	player1\x = player1\x+2
	If player1\x > GraphicsWidth()-32 Then player1\x = GraphicsWidth()-32
EndIf

DrawImage player1\image, player1\x, player1\y


Flip
Cls

Wend

End


*EDIT*

It does however, only work with keys that return valid ascii values.