Code: Select all
;
; https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
;
EnableExplicit
Enumeration
#DisableGadget
#ListIconGadget
EndEnumeration
Define.i Event, Exit, i
Dim KeyArray.a(255)
OpenWindow(#ListIconGadget, 0, 0, 400, 600, "KeyboardState", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CheckBoxGadget(#DisableGadget, 10, 10, 100, 20, "Stop scrolling")
ListIconGadget(#ListIconGadget, 10, 40, 380, 550, "Index", 50, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(#ListIconGadget, 1, "Name", 200)
AddGadgetColumn(#ListIconGadget, 2, "Value", 50)
AddGadgetColumn(#ListIconGadget, 3, "State", 50)
For i = 0 To 255
AddGadgetItem(#ListIconGadget, i, Str(i))
Next i
SetGadgetItemText(#ListIconGadget, $01, "VK_LBUTTON", 1) ; Left mouse button
SetGadgetItemText(#ListIconGadget, $02, "VK_RBUTTON", 1) ; Right mouse button
SetGadgetItemText(#ListIconGadget, $03, "VK_CANCEL", 1) ; Control-Break processing
SetGadgetItemText(#ListIconGadget, $04, "VK_MBUTTON", 1) ; Middle mouse button (three-button mouse)
SetGadgetItemText(#ListIconGadget, $05, "VK_XBUTTON1", 1) ; X1 mouse button
SetGadgetItemText(#ListIconGadget, $06, "VK_XBUTTON2", 1) ; X2 mouse button
; 07 Undefined
SetGadgetItemText(#ListIconGadget, $08, "VK_BACK", 1) ; BACKSPACE key
SetGadgetItemText(#ListIconGadget, $09, "VK_TAB", 1) ; TAB key
; 0A-0B Reserved
SetGadgetItemText(#ListIconGadget, $0C, "VK_CLEAR", 1) ; CLEAR key
SetGadgetItemText(#ListIconGadget, $0D, "VK_RETURN", 1) ; ENTER key
; 0E-0F Undefined
SetGadgetItemText(#ListIconGadget, $10, "VK_SHIFT", 1) ; SHIFT key
SetGadgetItemText(#ListIconGadget, $11, "VK_CONTROL", 1) ; CTRL key
SetGadgetItemText(#ListIconGadget, $12, "VK_MENU", 1) ; ALT key
SetGadgetItemText(#ListIconGadget, $13, "VK_PAUSE", 1) ; PAUSE key
SetGadgetItemText(#ListIconGadget, $14, "VK_CAPITAL", 1) ; CAPS LOCK key
SetGadgetItemText(#ListIconGadget, $15, "VK_KANA_HANGUEL_HANGUL", 1) ; IME Kana mode
SetGadgetItemText(#ListIconGadget, $16, "VK_IME_ON", 1) ; IME On
SetGadgetItemText(#ListIconGadget, $17, "VK_JUNJA", 1) ; IME Junja mode
SetGadgetItemText(#ListIconGadget, $18, "VK_FINAL", 1) ; IME final mode
SetGadgetItemText(#ListIconGadget, $19, "VK_HANJA_KANJI", 1) ; IME Hanja mode
SetGadgetItemText(#ListIconGadget, $1A, "VK_IME_OFF", 1) ; IME Off
SetGadgetItemText(#ListIconGadget, $1B, "VK_ESCAPE", 1) ; ESC key
SetGadgetItemText(#ListIconGadget, $1C, "VK_CONVERT", 1) ; IME convert
SetGadgetItemText(#ListIconGadget, $1D, "VK_NONCONVERT", 1) ; IME nonconvert
SetGadgetItemText(#ListIconGadget, $1E, "VK_ACCEPT", 1) ; IME accept
SetGadgetItemText(#ListIconGadget, $1F, "VK_MODECHANGE", 1) ; IME mode change request
SetGadgetItemText(#ListIconGadget, $20, "VK_SPACE", 1) ; SPACEBAR
SetGadgetItemText(#ListIconGadget, $21, "VK_PRIOR", 1) ; PAGE UP key
SetGadgetItemText(#ListIconGadget, $22, "VK_NEXT", 1) ; PAGE DOWN key
SetGadgetItemText(#ListIconGadget, $23, "VK_END", 1) ; End key
SetGadgetItemText(#ListIconGadget, $24, "VK_HOME", 1) ; HOME key
SetGadgetItemText(#ListIconGadget, $25, "VK_LEFT", 1) ; LEFT ARROW key
SetGadgetItemText(#ListIconGadget, $26, "VK_UP", 1) ; UP ARROW key
SetGadgetItemText(#ListIconGadget, $27, "VK_RIGHT", 1) ; RIGHT ARROW key
SetGadgetItemText(#ListIconGadget, $28, "VK_DOWN", 1) ; DOWN ARROW key
SetGadgetItemText(#ListIconGadget, $29, "VK_SELECT", 1) ; Select key
SetGadgetItemText(#ListIconGadget, $2A, "VK_PRINT", 1) ; PRINT key
SetGadgetItemText(#ListIconGadget, $2B, "VK_EXECUTE", 1) ; EXECUTE key
SetGadgetItemText(#ListIconGadget, $2C, "VK_SNAPSHOT", 1) ; PRINT SCREEN key
SetGadgetItemText(#ListIconGadget, $2D, "VK_INSERT", 1) ; INS key
SetGadgetItemText(#ListIconGadget, $2E, "VK_DELETE", 1) ; DEL key
SetGadgetItemText(#ListIconGadget, $2F, "VK_HELP", 1) ; HELP key
SetGadgetItemText(#ListIconGadget, $30, "0 key", 1)
SetGadgetItemText(#ListIconGadget, $31, "1 key", 1)
SetGadgetItemText(#ListIconGadget, $32, "2 key", 1)
SetGadgetItemText(#ListIconGadget, $33, "3 key", 1)
SetGadgetItemText(#ListIconGadget, $34, "4 key", 1)
SetGadgetItemText(#ListIconGadget, $35, "5 key", 1)
SetGadgetItemText(#ListIconGadget, $36, "6 key", 1)
SetGadgetItemText(#ListIconGadget, $37, "7 key", 1)
SetGadgetItemText(#ListIconGadget, $38, "8 key", 1)
SetGadgetItemText(#ListIconGadget, $39, "9 key", 1)
; 3A-40, "Undefined
SetGadgetItemText(#ListIconGadget, $41, "A key", 1)
SetGadgetItemText(#ListIconGadget, $42, "B key", 1)
SetGadgetItemText(#ListIconGadget, $43, "C key", 1)
SetGadgetItemText(#ListIconGadget, $44, "D key", 1)
SetGadgetItemText(#ListIconGadget, $45, "E key", 1)
SetGadgetItemText(#ListIconGadget, $46, "F key", 1)
SetGadgetItemText(#ListIconGadget, $47, "G key", 1)
SetGadgetItemText(#ListIconGadget, $48, "H key", 1)
SetGadgetItemText(#ListIconGadget, $49, "I key", 1)
SetGadgetItemText(#ListIconGadget, $4A, "J key", 1)
SetGadgetItemText(#ListIconGadget, $4B, "K key", 1)
SetGadgetItemText(#ListIconGadget, $4C, "L key", 1)
SetGadgetItemText(#ListIconGadget, $4D, "M key", 1)
SetGadgetItemText(#ListIconGadget, $4E, "N key", 1)
SetGadgetItemText(#ListIconGadget, $4F, "O key", 1)
SetGadgetItemText(#ListIconGadget, $50, "P key", 1)
SetGadgetItemText(#ListIconGadget, $51, "Q key", 1)
SetGadgetItemText(#ListIconGadget, $52, "R key", 1)
SetGadgetItemText(#ListIconGadget, $53, "S key", 1)
SetGadgetItemText(#ListIconGadget, $54, "T key", 1)
SetGadgetItemText(#ListIconGadget, $55, "U key", 1)
SetGadgetItemText(#ListIconGadget, $56, "V key", 1)
SetGadgetItemText(#ListIconGadget, $57, "W key", 1)
SetGadgetItemText(#ListIconGadget, $58, "X key", 1)
SetGadgetItemText(#ListIconGadget, $59, "Y key", 1)
SetGadgetItemText(#ListIconGadget, $5A, "Z key", 1)
SetGadgetItemText(#ListIconGadget, $5B, "VK_LWIN", 1) ; Left Windows key (Natural keyboard)
SetGadgetItemText(#ListIconGadget, $5C, "VK_RWIN", 1) ; Right Windows key (Natural keyboard)
SetGadgetItemText(#ListIconGadget, $5D, "VK_APPS", 1) ; Applications key (Natural keyboard)
; 5E, "Reserved
SetGadgetItemText(#ListIconGadget, $5F, "VK_SLEEP", 1) ; Computer Sleep key
SetGadgetItemText(#ListIconGadget, $60, "VK_NUMPAD0", 1) ; Numeric keypad 0 key
SetGadgetItemText(#ListIconGadget, $61, "VK_NUMPAD1", 1) ; Numeric keypad 1 key
SetGadgetItemText(#ListIconGadget, $62, "VK_NUMPAD2", 1) ; Numeric keypad 2 key
SetGadgetItemText(#ListIconGadget, $63, "VK_NUMPAD3", 1) ; Numeric keypad 3 key
SetGadgetItemText(#ListIconGadget, $64, "VK_NUMPAD4", 1) ; Numeric keypad 4 key
SetGadgetItemText(#ListIconGadget, $65, "VK_NUMPAD5", 1) ; Numeric keypad 5 key
SetGadgetItemText(#ListIconGadget, $66, "VK_NUMPAD6", 1) ; Numeric keypad 6 key
SetGadgetItemText(#ListIconGadget, $67, "VK_NUMPAD7", 1) ; Numeric keypad 7 key
SetGadgetItemText(#ListIconGadget, $68, "VK_NUMPAD8", 1) ; Numeric keypad 8 key
SetGadgetItemText(#ListIconGadget, $69, "VK_NUMPAD9", 1) ; Numeric keypad 9 key
SetGadgetItemText(#ListIconGadget, $6A, "VK_MULTIPLY", 1) ; Multiply key
SetGadgetItemText(#ListIconGadget, $6B, "VK_ADD", 1) ; Add key
SetGadgetItemText(#ListIconGadget, $6C, "VK_SEPARATOR", 1) ; Separator key
SetGadgetItemText(#ListIconGadget, $6D, "VK_SUBTRACT", 1) ; Subtract key
SetGadgetItemText(#ListIconGadget, $6E, "VK_DECIMAL", 1) ; Decimal key
SetGadgetItemText(#ListIconGadget, $6F, "VK_DIVIDE", 1) ; Divide key
SetGadgetItemText(#ListIconGadget, $70, "VK_F1", 1) ; F1 key
SetGadgetItemText(#ListIconGadget, $71, "VK_F2", 1) ; F2 key
SetGadgetItemText(#ListIconGadget, $72, "VK_F3", 1) ; F3 key
SetGadgetItemText(#ListIconGadget, $73, "VK_F4", 1) ; F4 key
SetGadgetItemText(#ListIconGadget, $74, "VK_F5", 1) ; F5 key
SetGadgetItemText(#ListIconGadget, $75, "VK_F6", 1) ; F6 key
SetGadgetItemText(#ListIconGadget, $76, "VK_F7", 1) ; F7 key
SetGadgetItemText(#ListIconGadget, $77, "VK_F8", 1) ; F8 key
SetGadgetItemText(#ListIconGadget, $78, "VK_F9", 1) ; F9 key
SetGadgetItemText(#ListIconGadget, $79, "VK_F10", 1) ; F10 key
SetGadgetItemText(#ListIconGadget, $7A, "VK_F11", 1) ; F11 key
SetGadgetItemText(#ListIconGadget, $7B, "VK_F12", 1) ; F12 key
SetGadgetItemText(#ListIconGadget, $7C, "VK_F13", 1) ; F13 key
SetGadgetItemText(#ListIconGadget, $7D, "VK_F14", 1) ; F14 key
SetGadgetItemText(#ListIconGadget, $7E, "VK_F15", 1) ; F15 key
SetGadgetItemText(#ListIconGadget, $7F, "VK_F16", 1) ; F16 key
SetGadgetItemText(#ListIconGadget, $80, "VK_F17", 1) ; F17 key
SetGadgetItemText(#ListIconGadget, $81, "VK_F18", 1) ; F18 key
SetGadgetItemText(#ListIconGadget, $82, "VK_F19", 1) ; F19 key
SetGadgetItemText(#ListIconGadget, $83, "VK_F20", 1) ; F20 key
SetGadgetItemText(#ListIconGadget, $84, "VK_F21", 1) ; F21 key
SetGadgetItemText(#ListIconGadget, $85, "VK_F22", 1) ; F22 key
SetGadgetItemText(#ListIconGadget, $86, "VK_F23", 1) ; F23 key
SetGadgetItemText(#ListIconGadget, $87, "VK_F24", 1) ; F24 key
; 88-8F, "Unassigned
SetGadgetItemText(#ListIconGadget, $90, "VK_NUMLOCK", 1) ; NUM LOCK key
SetGadgetItemText(#ListIconGadget, $91, "VK_SCROLL", 1) ; SCROLL LOCK key
; 92-96, "OEM specific
; 97-9F, "Unassigned
SetGadgetItemText(#ListIconGadget, $A0, "VK_LSHIFT", 1) ; Left SHIFT key
SetGadgetItemText(#ListIconGadget, $A1, "VK_RSHIFT", 1) ; Right SHIFT key
SetGadgetItemText(#ListIconGadget, $A2, "VK_LCONTROL", 1) ; Left CONTROL key
SetGadgetItemText(#ListIconGadget, $A3, "VK_RCONTROL", 1) ; Right CONTROL key
SetGadgetItemText(#ListIconGadget, $A4, "VK_LMENU", 1) ; Left ALT key
SetGadgetItemText(#ListIconGadget, $A5, "VK_RMENU", 1) ; Right ALT key
SetGadgetItemText(#ListIconGadget, $A6, "VK_BROWSER_BACK", 1) ; Browser Back key
SetGadgetItemText(#ListIconGadget, $A7, "VK_BROWSER_FORWARD", 1) ; Browser Forward key
SetGadgetItemText(#ListIconGadget, $A8, "VK_BROWSER_REFRESH", 1) ; Browser Refresh key
SetGadgetItemText(#ListIconGadget, $A9, "VK_BROWSER_STOP", 1) ; Browser Stop key
SetGadgetItemText(#ListIconGadget, $AA, "VK_BROWSER_SEARCH", 1) ; Browser Search key
SetGadgetItemText(#ListIconGadget, $AB, "VK_BROWSER_FAVORITES", 1) ; Browser Favorites key
SetGadgetItemText(#ListIconGadget, $AC, "VK_BROWSER_HOME", 1) ; Browser Start And Home key
SetGadgetItemText(#ListIconGadget, $AD, "VK_VOLUME_MUTE", 1) ; Volume Mute key
SetGadgetItemText(#ListIconGadget, $AE, "VK_VOLUME_DOWN", 1) ; Volume Down key
SetGadgetItemText(#ListIconGadget, $AF, "VK_VOLUME_UP", 1) ; Volume Up key
SetGadgetItemText(#ListIconGadget, $B0, "VK_MEDIA_NEXT_TRACK", 1) ; Next Track key
SetGadgetItemText(#ListIconGadget, $B1, "VK_MEDIA_PREV_TRACK", 1) ; Previous Track key
SetGadgetItemText(#ListIconGadget, $B2, "VK_MEDIA_STOP", 1) ; Stop Media key
SetGadgetItemText(#ListIconGadget, $B3, "VK_MEDIA_PLAY_PAUSE", 1) ; Play/Pause Media key
SetGadgetItemText(#ListIconGadget, $B4, "VK_LAUNCH_MAIL", 1) ; Start Mail key
SetGadgetItemText(#ListIconGadget, $B5, "VK_LAUNCH_MEDIA_SELECT", 1) ; Select Media key
SetGadgetItemText(#ListIconGadget, $B6, "VK_LAUNCH_APP1", 1) ; Start Application 1 key
SetGadgetItemText(#ListIconGadget, $B7, "VK_LAUNCH_APP2", 1) ; Start Application 2 key
; B8-B9, "Reserved
SetGadgetItemText(#ListIconGadget, $BA, "VK_OEM_1", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key
SetGadgetItemText(#ListIconGadget, $BB, "VK_OEM_PLUS", 1) ; For any country/region, the '+' key
SetGadgetItemText(#ListIconGadget, $BC, "VK_OEM_COMMA", 1) ; For any country/region, the ',' key
SetGadgetItemText(#ListIconGadget, $BD, "VK_OEM_MINUS", 1) ; For any country/region, the '-' key
SetGadgetItemText(#ListIconGadget, $BE, "VK_OEM_PERIOD", 1) ; For any country/region, the '.' key
SetGadgetItemText(#ListIconGadget, $BF, "VK_OEM_2", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key
SetGadgetItemText(#ListIconGadget, $C0, "VK_OEM_3", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key
; C1-D7, "Reserved
; D8-DA, "Unassigned
SetGadgetItemText(#ListIconGadget, $DB, "VK_OEM_4", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key
SetGadgetItemText(#ListIconGadget, $DC, "VK_OEM_5", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '\|' key
SetGadgetItemText(#ListIconGadget, $DD, "VK_OEM_6", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key
SetGadgetItemText(#ListIconGadget, $DE, "VK_OEM_7", 1) ; Used For miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key
SetGadgetItemText(#ListIconGadget, $DF, "VK_OEM_8", 1) ; Used For miscellaneous characters; it can vary by keyboard.
; E0, "Reserved
; E1, "OEM specific
SetGadgetItemText(#ListIconGadget, $E2, "VK_OEM_102", 1) ; The <> keys on the US standard keyboard, Or the \\| key on the non-US 102-key keyboard
; E3-E4, "OEM specific
SetGadgetItemText(#ListIconGadget, $E5, "VK_PROCESSKEY", 1) ; IME PROCESS key
; E6, "OEM specific
SetGadgetItemText(#ListIconGadget, $E7, "VK_PACKET", 1) ; Used To pass Unicode characters As If they were keystrokes. The SetGadgetItemText(#ListIconGadget, 1, "VK_PACKET key is the low word of a 32-bit Virtual key value used For non-keyboard input methods. For more information, see Remark in keyBDINPUT, SendInput, WM_KEYDOWN, And WM_KEYUP
; E8, "Unassigned
; E9-F5, "OEM specific
SetGadgetItemText(#ListIconGadget, $F6, "VK_ATTN", 1) ; Attn key
SetGadgetItemText(#ListIconGadget, $F7, "VK_CRSEL", 1) ; CrSel key
SetGadgetItemText(#ListIconGadget, $F8, "VK_EXSEL", 1) ; ExSel key
SetGadgetItemText(#ListIconGadget, $F9, "VK_EREOF", 1) ; Erase EOF key
SetGadgetItemText(#ListIconGadget, $FA, "VK_PLAY", 1) ; Play key
SetGadgetItemText(#ListIconGadget, $FB, "VK_ZOOM", 1) ; Zoom key
SetGadgetItemText(#ListIconGadget, $FC, "VK_NONAME", 1) ; Reserved
SetGadgetItemText(#ListIconGadget, $FD, "VK_PA1", 1) ; PA1 key
SetGadgetItemText(#ListIconGadget, $FE, "VK_OEM_CLEAR", 1) ; Clear key
Repeat
Event = WindowEvent()
While Event
Select Event
Case #PB_Event_CloseWindow
Exit = #True
Case #PB_Event_Gadget
Select EventGadget()
Case #DisableGadget
DisableGadget(#ListIconGadget, GetGadgetState(#DisableGadget))
SetActiveGadget(-1)
EndSelect
EndSelect
Event = WindowEvent()
Wend
GetKeyboardState_(@KeyArray(0))
For i = 0 To 255
SetGadgetItemText(#ListIconGadget, i, Str(KeyArray(i)), 2)
If KeyArray(i) & %10000000
SetGadgetItemText(#ListIconGadget, i, "down", 3)
Else
SetGadgetItemText(#ListIconGadget, i, "up", 3)
EndIf
Next i
Delay(50)
Until Exit