detect a keypress

Blitz3D Forums/Blitz3D Programming/detect a keypress

I'm looking for a way to detect what key is being pressed and to return the scancode.

First off guys,
Before you start laying down advice, I know about keydown() and keyhit(), and I know how to use them, but they are not quite what I'm looking for.
I also know that there are two pages of published lists where a programmer can find scancodes for all the keys in the help section of the BLitz3d IDE. I want to use them as a last resort.

I want to write something like this

while not keydown(1)

scancode = keypress()
print scancode

wend

Get my drift??? BTW, keypress() is not a Blitz3d command, and you must assume that scancode is a variable (identifier) i just made up. I did it to explain my example!!!

Hey guys, I apologize for the attitude. But any help would be appreciated!!!

What you are looking for is most likely GetKey
This returns you the ascii of the key pressed.

something like this ?:

While Not KeyDown(1)

scancode=0
For n=2 To 237
	If KeyDown(n)
		scancode=n
		Exit
	EndIf
Next
Print scancode

Wend


Else, try GetASyncKeyState in user32.dll, it returns all keypresses no matter if the app has focus.

bram32,

By keypresses, do youi mean the scancode?

no, you have to check the values 0-255, just as in Jeppe's example. So the scancode should be passed as a parameter.
The difference with keydown() is, that getasynckeystate returns all keypresses even when the application has no focus.

I hope that this helps:

Const SCANCODE_MIN = 1
Const SCANCODE_MAX = 237

Const KEY_ESC				= 1
Const KEY_1				= 2
Const KEY_2				= 3
Const KEY_3				= 4
Const KEY_4				= 5
Const KEY_5				= 6
Const KEY_6				= 7
Const KEY_7				= 8
Const KEY_8				= 9
Const KEY_9				= 10
Const KEY_0				= 11
Const KEY_MINUS				= 12
Const KEY_EQUALS			= 13
Const KEY_BACKSPACE			= 14
Const KEY_TAB				= 15
Const KEY_Q				= 16
Const KEY_W				= 17
Const KEY_E				= 18
Const KEY_R				= 19
Const KEY_T				= 20
Const KEY_Y				= 21
Const KEY_U				= 22
Const KEY_I				= 23
Const KEY_O				= 24
Const KEY_P				= 25
Const KEY_LBRACKET			= 26
Const KEY_RBRACKET			= 27
Const KEY_ENTER				= 28
Const KEY_LCTRL				= 29
Const KEY_A				= 30
Const KEY_S				= 31
Const KEY_D				= 32
Const KEY_F				= 33
Const KEY_G				= 34
Const KEY_H				= 35
Const KEY_J				= 36
Const KEY_K				= 37
Const KEY_L				= 38
Const KEY_SEMICOLON			= 39
Const KEY_APOSTROPHE		        = 40
Const KEY_GRAVE				= 41
Const KEY_LSHIFT			= 42
Const KEY_BACKSLASH			= 43
Const KEY_Z				= 44
Const KEY_X				= 45
Const KEY_C				= 46
Const KEY_V				= 47
Const KEY_B				= 48
Const KEY_N				= 49
Const KEY_M				= 50
Const KEY_COMMA				= 51
Const KEY_PERIOD			= 52
Const KEY_SLASH				= 53
Const KEY_RSHIFT			= 54
Const KEY_NUMMULT			= 55
Const KEY_LALT				= 56
Const KEY_SPACE				= 57
Const KEY_CAPSLOCK			= 58
Const KEY_F1				= 59
Const KEY_F2				= 60
Const KEY_F3				= 61
Const KEY_F4				= 62
Const KEY_F5				= 63
Const KEY_F6				= 64
Const KEY_F7				= 65
Const KEY_F8				= 66
Const KEY_F9				= 67
Const KEY_F10				= 68
Const KEY_NUMLOCK			= 69
Const KEY_SCROLLOCK			= 70
Const KEY_NUM7				= 71
Const KEY_NUM8				= 72
Const KEY_NUM9				= 73
Const KEY_NUMMINUS			= 74
Const KEY_NUM4				= 75
Const KEY_NUM5				= 76
Const KEY_NUM6				= 77
Const KEY_NUMPLUS			= 78
Const KEY_NUM1				= 79
Const KEY_NUM2				= 80
Const KEY_NUM3				= 81
Const KEY_NUM0				= 82
Const KEY_NUMDOT			= 83
Const KEY_OEM102			= 86
Const KEY_F11				= 87
Const KEY_F12				= 88
Const KEY_F13				= 100
Const KEY_F14				= 101
Const KEY_F15				= 102
Const KEY_KANA				= 112
Const KEY_ABNT_C1			= 115
Const KEY_CONVERT			= 121
Const KEY_NOCONVERT			= 123
Const KEY_YEN				= 125
Const KEY_ABNT_C2			= 126
Const KEY_NUMEQUALS			= 141
Const KEY_PREVTRACK			= 144
Const KEY_AT				= 145
Const KEY_COLON				= 146
Const KEY_UNDERLINE			= 147
Const KEY_KANJI				= 148
Const KEY_STOP				= 149
Const KEY_AX 				= 150
Const KEY_UNLABELED			= 151
Const KEY_NEXTTRACK			= 153
Const KEY_NUMENTER			= 156
Const KEY_RCTRL				= 157
Const KEY_MUTE				= 160
Const KEY_CALCULATOR		        = 161
Const KEY_PLAYPOUSE 		        = 162
Const KEY_MEDIASTOP			= 164
Const KEY_VOLUMEDOWN		        = 174
Const KEY_VOLUMEUP			= 176
Const KEY_WEBHOME			= 178
Const KEY_NUMCOMMA			= 179
Const KEY_NUMDIV			= 181
Const KEY_SYSREQ			= 183
Const KEY_RALT				= 184
Const KEY_PAUSE				= 197
Const KEY_HOME				= 199
Const KEY_UPARROW			= 200
Const KEY_PGUP				= 201
Const KEY_LEFTARROW			= 203
Const KEY_RIGHTARROW		        = 205
Const KEY_END				= 207
Const KEY_DOWNARROW			= 208
Const KEY_PGDOWN			= 209
Const KEY_INSERT			= 210
Const KEY_DEL				= 211
Const KEY_LEFTWINDOWS		        = 219
Const KEY_RIGHTWINDOWS		        = 220
Const KEY_APPS				= 221
Const KEY_POWER				= 222
Const KEY_SLEEP				= 223
Const KEY_WAKE				= 227
Const KEY_WEBSEARCH			= 229
Const KEY_WEBFAVORITES		        = 230
Const KEY_WEBREFRESH		        = 231
Const KEY_WEBSTOP			= 232
Const KEY_WEBFORWARD		        = 233
Const KEY_WEBBACK			= 234
Const KEY_MYCOMPUTER		        = 235
Const KEY_MAIL				= 236
Const KEY_MEDIASELECT		        = 237

Function Key_GetName$(key%)

	Select key
		Case KEY_ESC
			Return "ESC"
		Case KEY_1
			Return "1"
		Case KEY_2
			Return "2"
		Case KEY_3
			Return "3"
		Case KEY_4
			Return "4"
		Case KEY_5
			Return "5"
		Case KEY_6
			Return "6"
		Case KEY_7
			Return "7"
		Case KEY_8
			Return "8"
		Case KEY_9
			Return "9"
		Case KEY_0
			Return "0"
		Case KEY_NUM0
			Return "NUM 0"
		Case KEY_NUM1
			Return "NUM 1"
		Case KEY_NUM2
			Return "NUM 2"
		Case KEY_NUM3
			Return "NUM 3"
		Case KEY_NUM4
			Return "NUM 4"
		Case KEY_NUM5
			Return "NUM 5"
		Case KEY_NUM6
			Return "NUM 6"
		Case KEY_NUM7
			Return "NUM 7"
		Case KEY_NUM8
			Return "NUM 8"
		Case KEY_NUM9
			Return "NUM 9"
		Case KEY_NUMMINUS
			Return "NUM MINUS"
		Case KEY_NUMPLUS
			Return "NUM PLUS"
		Case KEY_NUMDOT
			Return "NUM DOT"
		Case KEY_NUMDIV
			Return "NUM DIV"
		Case KEY_NUMCOMMA
			Return "NUM COMMA"
		Case KEY_NUMEQUALS
			Return "NUM EQUALS"
		Case KEY_F1
			Return "F1"
		Case KEY_F2
			Return "F2"
		Case KEY_F3
			Return "F3"
		Case KEY_F4
			Return "F4"
		Case KEY_F5
			Return "F5"
		Case KEY_F6
			Return "F6"
		Case KEY_F7
			Return "F7"
		Case KEY_F8
			Return "F8"
		Case KEY_F9
			Return "F9"
		Case KEY_F10
			Return "F10"
		Case KEY_F11
			Return "F11"
		Case KEY_F12
			Return "F12"
		Case KEY_F13
			Return "F13"
		Case KEY_F14
			Return "F14"
		Case KEY_F15
			Return "F15"
		Case KEY_A
			Return "A"
		Case KEY_B
			Return "B"
		Case KEY_C
			Return "C"
		Case KEY_D
			Return "D"
		Case KEY_E
			Return "E"
		Case KEY_F
			Return "F"
		Case KEY_G
			Return "G"
		Case KEY_H
			Return "H"
		Case KEY_I
			Return "I"
		Case KEY_J
			Return "J"
		Case KEY_K
			Return "K"
		Case KEY_L
			Return "L"
		Case KEY_M
			Return "M"
		Case KEY_N
			Return "N"
		Case KEY_O
			Return "O"
		Case KEY_P
			Return "P"
		Case KEY_Q
			Return "Q"
		Case KEY_R
			Return "R"
		Case KEY_S
			Return "S"
		Case KEY_T
			Return "T"
		Case KEY_U
			Return "U"
		Case KEY_V
			Return "V"
		Case KEY_W
			Return "W"
		Case KEY_X
			Return "X"
		Case KEY_Y
			Return "Y"
		Case KEY_Z
			Return "Z"
		Case KEY_COMMA
			Return "COMMA"
		Case KEY_PERIOD
			Return "PERIOD"
		Case KEY_SEMICOLON
			Return "SEMICOLON"
		Case KEY_APOSTROPHE
			Return "APOSTROPHE"
		Case KEY_GRAVE
			Return "GRAVE"
		Case KEY_BACKSLASH
			Return "BACKSLASH"
		Case KEY_MINUS
			Return "MINUS"
		Case KEY_EQUALS
			Return "EQUALS"
		Case KEY_BACKSPACE
			Return "BACKSPACE"
		Case KEY_TAB
			Return "TAB"
		Case KEY_LBRACKET
			Return "L BRACKET"
		Case KEY_RBRACKET
			Return "R BRACKET"
		Case KEY_ENTER
			Return "ENTER"
		Case KEY_NUMENTER
			Return "NUM ENTER"
		Case KEY_UPARROW
			Return "UP"
		Case KEY_DOWNARROW
			Return "DOWN"
		Case KEY_LEFTARROW
			Return "LEFT"
		Case KEY_RIGHTARROW
			Return "RIGHT"
		Case KEY_PGDOWN
			Return "PG DOWN"
		Case KEY_PGUP
			Return "PG UP"
		Case KEY_LCTRL
			Return "L CTRL"
		Case KEY_RCTRL
			Return "R CTRL"
		Case KEY_LSHIFT
			Return "L SHIFT"
		Case KEY_RSHIFT
			Return "R SHIFT"
		Case KEY_SPACE
			Return "SPACE"
		Case KEY_LALT
			Return "L ALT"
		Case KEY_RALT
			Return "R ALT"
		Case KEY_NUMMULT
			Return "NUM MULT"
		Case KEY_NUMLOCK
			Return "PAUSE"
		Case KEY_SCROLLOCK
			Return "SCROLLOCK"
		Case KEY_OEM102
			Return "OEM102"
		Case KEY_HOME
			Return "HOME"
		Case KEY_INSERT
			Return "INSERT"
		Case KEY_DEL
			Return "DEL"
		Case KEY_COLON
			Return "COLON"
		Case KEY_SYSREQ
			Return "SYSREQ"
		Case KEY_PAUSE
			Return "NUMLOCK"
		Case KEY_END
			Return "END"
		Case KEY_CAPSLOCK
			Return "CAPSLOCK"
		Case KEY_SLASH
			Return "SLASH"
		Case KEY_APPS
			Return "APPS"
	End Select
End Function

Function Key_GetScanCode%()

	For i% = SCANCODE_MIN To SCANCODE_MAX
		If KeyHit(i)
			Return i
		EndIf
	Next
	Return 0

End Function


How can I post code like Jeppe Nielsen post?

Moraldi: http://www.blitzbasic.com/faq/faq.php

I'd also say, use a for loop to check all keys, then return the pressed. You may even return up to 4 pressed keys, in a 32bit int.

Useful would also be an Asciicode/Scancode lookup table.

http://www.blitzbasic.com/faq/faq_entry.php?id=2
This link will tell you all you need to know about how to post code, etc. in the forum
***EDIT*****
didn't notice that jfk answered...sorry about that

Thanks guys. I have allready edited my post!