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.phpI'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=2This 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!