WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Detect Keyboard Tricks

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Read Keys from Keyboard

Keywords:   iskeydown waitforkey read keys from keyboard trapkeys  GetKeyboardState

#definefunction GetKeyboardState(buf)
   sDLLName = StrCat(DirWindows(1), "user32.dll")
   DLLCall(sDLLName, long:"GetKeyboardState", lpbinary:buf)
   BinaryEodSet(buf, 256) 
   return buf
#endfunction

;==============================
;start
;==============================

boxopen("","Press any key.")

buf1 = binaryalloc(256)
buf2 = binaryalloc(256)

before = GetKeyboardState(buf1)
after  = GetKeyboardState(buf2)
while BinaryCompare(before, 0, after, 0, 256)==@true
   after = GetKeyboardState(buf2)
endwhile
gosub get_the_key

binaryfree(buf1)
binaryfree(buf2)

;==============================
exit
;==============================


:get_the_key
key = ""
for count = 0 to 255
   x=binarypeek(buf2,count)
   if x<>0 && x<>1 then break
next

select count
      case 9  
         key = "Tab"
         break
      case 13 
         key = "Enter"
         break
      case 16 
         key = "Shift"
         break
      case 17 
         key = "Ctrl"
         break
      case 18 
         key = "Alt"
         break
      case 20 
         key = "CapsLock"
         break
      case 27 
         key = "Escape"
         break
      case 32 
         key = "Space"
         break
      case 33
         key = "PgUp"
         break
      case 34
         key = "PgDn"
         break
      case 35
         key = "End"
         break
      case 36
         key = "Home"
         break
      case 37
         key = "Left arrow"
         break
      case 38
         key = "Up arrow"
         break
      case 39
         key = "Right arrow"
         break
      case 40
         key = "Down arrow"
         break
      case 45
         key = "Insert"
         break
      case 46
         key = "Delete"
         break
      case 187
         key = "="
         break
      case 189
         key = "-"
         break
      
      case 112 
         key = "F1"
         break
      case 113 
         key = "F2"
         break
      case 114 
         key = "F3"
         break
      case 115 
         key = "F4"
         break
      case 116 
         key = "F5"
         break
      case 117 
         key = "F6"
         break
      case 118 
         key = "F7"
         break
      case 119 
         key = "F8"
         break
      case 120 
         key = "F9"
         break
      case 121 
         key = "F10"
         break
      case 122 
         key = "F11"
         break
      case 123 
         key = "F12"
         break
endselect
         
if key == "" then key = num2char(count)
message(count, key)

return




Article ID:   W15291
File Created: 2002:09:05:13:51:04
Last Updated: 2002:09:05:13:51:04