Here's a code snippet from my game that's related to the keystate stuff:
sync on
sync rate 0
cls
hide mouse
do
cls
print key_char(scancode())
sync
loop
function key_char(num)
n=0
if num=n:exitfunction "No key pressed":endif
inc n:if num=n:exitfunction "Esc":endif
inc n:if num=n:exitfunction "1":endif
inc n:if num=n:exitfunction "2":endif
inc n:if num=n:exitfunction "3":endif
inc n:if num=n:exitfunction "4":endif
inc n:if num=n:exitfunction "5":endif
inc n:if num=n:exitfunction "6":endif
inc n:if num=n:exitfunction "7":endif
inc n:if num=n:exitfunction "8":endif
inc n:if num=n:exitfunction "9":endif
inc n:if num=n:exitfunction "0":endif
inc n:if num=n:exitfunction "-":endif
inc n:if num=n:exitfunction "=":endif
inc n:if num=n:exitfunction "Backspace":endif
inc n:if num=n:exitfunction "Tab":endif
inc n:if num=n:exitfunction "Q":endif
inc n:if num=n:exitfunction "W":endif
inc n:if num=n:exitfunction "E":endif
inc n:if num=n:exitfunction "R":endif
inc n:if num=n:exitfunction "T":endif
inc n:if num=n:exitfunction "Y":endif
inc n:if num=n:exitfunction "U":endif
inc n:if num=n:exitfunction "I":endif
inc n:if num=n:exitfunction "O":endif
inc n:if num=n:exitfunction "P":endif
inc n:if num=n:exitfunction "[":endif
inc n:if num=n:exitfunction "]":endif
inc n:if num=n:exitfunction "Enter":endif
inc n:if num=n:exitfunction "L Ctrl":endif
inc n:if num=n:exitfunction "A":endif
inc n:if num=n:exitfunction "S":endif
inc n:if num=n:exitfunction "D":endif
inc n:if num=n:exitfunction "F":endif
inc n:if num=n:exitfunction "G":endif
inc n:if num=n:exitfunction "H":endif
inc n:if num=n:exitfunction "J":endif
inc n:if num=n:exitfunction "K":endif
inc n:if num=n:exitfunction "L":endif
inc n:if num=n:exitfunction ";":endif
inc n:if num=n:exitfunction "'":endif
inc n:if num=n:exitfunction "`":endif
inc n:if num=n:exitfunction "L Shift":endif
inc n:if num=n:exitfunction "\":endif
inc n:if num=n:exitfunction "Z":endif
inc n:if num=n:exitfunction "X":endif
inc n:if num=n:exitfunction "C":endif
inc n:if num=n:exitfunction "V":endif
inc n:if num=n:exitfunction "B":endif
inc n:if num=n:exitfunction "N":endif
inc n:if num=n:exitfunction "M":endif
inc n:if num=n:exitfunction ",":endif
inc n:if num=n:exitfunction ".":endif
inc n:if num=n:exitfunction "/":endif
inc n:if num=n:exitfunction "R Shift":endif
inc n:if num=n:exitfunction "Num *":endif
inc n:if num=n:exitfunction "L Alt":endif
inc n:if num=n:exitfunction "Space":endif
inc n:if num=n:exitfunction "Caps Lock":endif
inc n:if num=n:exitfunction "F1":endif
inc n:if num=n:exitfunction "F2":endif
inc n:if num=n:exitfunction "F3":endif
inc n:if num=n:exitfunction "F4":endif
inc n:if num=n:exitfunction "F5":endif
inc n:if num=n:exitfunction "F6":endif
inc n:if num=n:exitfunction "F7":endif
inc n:if num=n:exitfunction "F8":endif
inc n:if num=n:exitfunction "F9":endif
inc n:if num=n:exitfunction "F10":endif
inc n:if num=n:exitfunction "Num Lk":endif
inc n:if num=n:exitfunction "???":endif
inc n:if num=n:exitfunction "Num 7":endif
inc n:if num=n:exitfunction "Num 8":endif
inc n:if num=n:exitfunction "Num 9":endif
inc n:if num=n:exitfunction "Num -":endif
inc n:if num=n:exitfunction "Num 4":endif
inc n:if num=n:exitfunction "Num 5":endif
inc n:if num=n:exitfunction "Num 6":endif
inc n:if num=n:exitfunction "Num +":endif
inc n:if num=n:exitfunction "Num 1":endif
inc n:if num=n:exitfunction "Num 2":endif
inc n:if num=n:exitfunction "Num 3":endif
inc n:if num=n:exitfunction "Num 0":endif
inc n:if num=n:exitfunction "Num .":endif
inc n:if num=n:exitfunction "???":endif
inc n:if num=n:exitfunction "???":endif
inc n:if num=n:exitfunction "???":endif
inc n:if num=n:exitfunction "F11":endif
inc n:if num=n:exitfunction "F12":endif
for x=1 to 67
inc n:if num=n:exitfunction "???":endif
next x
inc n:if num=n:exitfunction "Num Enter":endif
inc n:if num=n:exitfunction "R Ctrl":endif
for x=1 to 25
inc n:if num=n:exitfunction "???":endif
next x
inc n:if num=n:exitfunction "Prt Sc":endif
inc n:if num=n:exitfunction "R Alt":endif
s$=str$(num)
for x=1 to 14
inc n:if num=n:exitfunction "???":endif
next x
inc n:if num=n:exitfunction "Home":endif
inc n:if num=n:exitfunction "Up":endif
inc n:if num=n:exitfunction "Page Up":endif
inc n:if num=n:exitfunction "???":endif
inc n:if num=n:exitfunction "Left":endif
inc n:if num=n:exitfunction "???":endif
inc n:if num=n:exitfunction "Right":endif
inc n:if num=n:exitfunction "???":endif
inc n:if num=n:exitfunction "End":endif
inc n:if num=n:exitfunction "Down":endif
inc n:if num=n:exitfunction "Page Down":endif
inc n:if num=n:exitfunction "Insert":endif
inc n:if num=n:exitfunction "Delete":endif
for x=1 to 7
inc n:if num=n:exitfunction "???":endif
next x
inc n:if num=n:exitfunction "Windows Key":endif
inc n:if num=n:exitfunction "???":endif
inc n:if num=n:exitfunction "System Key":endif
endfunction s$
Pass the function a keystate number and the function will return the name of the key.
-----------------------------------
To delete the bug, delete the code.
Specs: Sony VAIO Laptop, Windows XP, P4 2.8Ghz, 512MB RAM, ATI Radeon 64MB video memory, DBP Upgrade 5.3.