detect a keypress

Blitz3D Forums/Blitz3D Programming/detect a keypress

Amanda Dearheart(Posted 2006) [#1]
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!!!


Dreamora(Posted 2006) [#2]
What you are looking for is most likely GetKey
This returns you the ascii of the key pressed.


Jeppe Nielsen(Posted 2006) [#3]
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



b32(Posted 2006) [#4]
Else, try GetASyncKeyState in user32.dll, it returns all keypresses no matter if the app has focus.


Amanda Dearheart(Posted 2006) [#5]
bram32,

By keypresses, do youi mean the scancode?


b32(Posted 2006) [#6]
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.


Moraldi(Posted 2006) [#7]
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?


jfk EO-11110(Posted 2006) [#8]
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.


kevin8084(Posted 2006) [#9]
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


Moraldi(Posted 2006) [#10]
Thanks guys. I have allready edited my post!