Code: Select all
Procedure.s KeyName(vk_code)
Select vk_code
Case $01 : ret$ = "#VK_LBUTTON"
Case $02 : ret$ = "#VK_RBUTTON"
Case $03 : ret$ = "#VK_CANCEL"
Case $04 : ret$ = "#VK_MBUTTON"
Case $05 : ret$ = "#VK_XBUTTON1"
Case $06 : ret$ = "#VK_XBUTTON2"
Case $08 : ret$ = "#VK_BACK"
Case $09 : ret$ = "#VK_TAB"
Case $0C : ret$ = "#VK_CLEAR"
Case $0D : ret$ = "#VK_RETURN"
Case $10 : ret$ = "#VK_SHIFT"
Case $11 : ret$ = "#VK_CONTROL"
Case $12 : ret$ = "#VK_MENU"
Case $13 : ret$ = "#VK_PAUSE"
Case $14 : ret$ = "#VK_CAPITAL"
Case $15 : ret$ = "#VK_KANA"
Case $15 : ret$ = "#VK_HANGEUL"
Case $15 : ret$ = "#VK_HANGUL"
Case $17 : ret$ = "#VK_JUNJA"
Case $18 : ret$ = "#VK_FINAL"
Case $19 : ret$ = "#VK_HANJA"
Case $19 : ret$ = "#VK_KANJI"
Case $1B : ret$ = "#VK_ESCAPE"
Case $1C : ret$ = "#VK_CONVERT"
Case $1D : ret$ = "#VK_NONCONVERT"
Case $1E : ret$ = "#VK_ACCEPT"
Case $1F : ret$ = "#VK_MODECHANGE"
Case $20 : ret$ = "#VK_SPACE"
Case $21 : ret$ = "#VK_PRIOR"
Case $22 : ret$ = "#VK_NEXT"
Case $23 : ret$ = "#VK_END"
Case $24 : ret$ = "#VK_HOME"
Case $25 : ret$ = "#VK_LEFT"
Case $26 : ret$ = "#VK_UP"
Case $27 : ret$ = "#VK_RIGHT"
Case $28 : ret$ = "#VK_DOWN"
Case $29 : ret$ = "#VK_SELECT"
Case $2A : ret$ = "#VK_PRINT"
Case $2B : ret$ = "#VK_EXECUTE"
Case $2C : ret$ = "#VK_SNAPSHOT"
Case $2D : ret$ = "#VK_INSERT"
Case $2E : ret$ = "#VK_DELETE"
Case $2F : ret$ = "#VK_HELP"
Case $30 : ret$ = "#VK_0"
Case $31 : ret$ = "#VK_1"
Case $32 : ret$ = "#VK_2"
Case $33 : ret$ = "#VK_3"
Case $34 : ret$ = "#VK_4"
Case $35 : ret$ = "#VK_5"
Case $36 : ret$ = "#VK_6"
Case $37 : ret$ = "#VK_7"
Case $38 : ret$ = "#VK_8"
Case $39 : ret$ = "#VK_9"
Case $41 : ret$ = "#VK_A"
Case $42 : ret$ = "#VK_B"
Case $43 : ret$ = "#VK_C"
Case $44 : ret$ = "#VK_D"
Case $45 : ret$ = "#VK_E"
Case $46 : ret$ = "#VK_F"
Case $47 : ret$ = "#VK_G"
Case $48 : ret$ = "#VK_H"
Case $49 : ret$ = "#VK_I"
Case $4A : ret$ = "#VK_J"
Case $4B : ret$ = "#VK_K"
Case $4C : ret$ = "#VK_L"
Case $4D : ret$ = "#VK_M"
Case $4E : ret$ = "#VK_N"
Case $4F : ret$ = "#VK_O"
Case $50 : ret$ = "#VK_P"
Case $51 : ret$ = "#VK_Q"
Case $52 : ret$ = "#VK_R"
Case $53 : ret$ = "#VK_S"
Case $54 : ret$ = "#VK_T"
Case $55 : ret$ = "#VK_U"
Case $56 : ret$ = "#VK_V"
Case $57 : ret$ = "#VK_W"
Case $58 : ret$ = "#VK_X"
Case $59 : ret$ = "#VK_Y"
Case $5A : ret$ = "#VK_Z"
Case $5B : ret$ = "#VK_LWIN"
Case $5C : ret$ = "#VK_RWIN"
Case $5D : ret$ = "#VK_APPS"
Case $5F : ret$ = "#VK_SLEEP"
Case $60 : ret$ = "#VK_NUMPAD0"
Case $61 : ret$ = "#VK_NUMPAD1"
Case $62 : ret$ = "#VK_NUMPAD2"
Case $63 : ret$ = "#VK_NUMPAD3"
Case $64 : ret$ = "#VK_NUMPAD4"
Case $65 : ret$ = "#VK_NUMPAD5"
Case $66 : ret$ = "#VK_NUMPAD6"
Case $67 : ret$ = "#VK_NUMPAD7"
Case $68 : ret$ = "#VK_NUMPAD8"
Case $69 : ret$ = "#VK_NUMPAD9"
Case $6A : ret$ = "#VK_MULTIPLY"
Case $6B : ret$ = "#VK_ADD"
Case $6C : ret$ = "#VK_SEPARATOR"
Case $6D : ret$ = "#VK_SUBTRACT"
Case $6E : ret$ = "#VK_DECIMAL"
Case $6F : ret$ = "#VK_DIVIDE"
Case $70 : ret$ = "#VK_F1"
Case $71 : ret$ = "#VK_F2"
Case $72 : ret$ = "#VK_F3"
Case $73 : ret$ = "#VK_F4"
Case $74 : ret$ = "#VK_F5"
Case $75 : ret$ = "#VK_F6"
Case $76 : ret$ = "#VK_F7"
Case $77 : ret$ = "#VK_F8"
Case $78 : ret$ = "#VK_F9"
Case $79 : ret$ = "#VK_F10"
Case $7A : ret$ = "#VK_F11"
Case $7B : ret$ = "#VK_F12"
Case $7C : ret$ = "#VK_F13"
Case $7D : ret$ = "#VK_F14"
Case $7E : ret$ = "#VK_F15"
Case $7F : ret$ = "#VK_F16"
Case $80 : ret$ = "#VK_F17"
Case $81 : ret$ = "#VK_F18"
Case $82 : ret$ = "#VK_F19"
Case $83 : ret$ = "#VK_F20"
Case $84 : ret$ = "#VK_F21"
Case $85 : ret$ = "#VK_F22"
Case $86 : ret$ = "#VK_F23"
Case $87 : ret$ = "#VK_F24"
Case $90 : ret$ = "#VK_NUMLOCK"
Case $91 : ret$ = "#VK_SCROLL"
Case $A0 : ret$ = "#VK_LSHIFT"
Case $A1 : ret$ = "#VK_RSHIFT"
Case $A2 : ret$ = "#VK_LCONTROL"
Case $A3 : ret$ = "#VK_RCONTROL"
Case $A4 : ret$ = "#VK_LMENU"
Case $A5 : ret$ = "#VK_RMENU"
Case $A6 : ret$ = "#VK_BROWSER_BACK"
Case $A7 : ret$ = "#VK_BROWSER_FORWARD"
Case $A8 : ret$ = "#VK_BROWSER_REFRESH"
Case $A9 : ret$ = "#VK_BROWSER_STOP"
Case $AA : ret$ = "#VK_BROWSER_SEARCH"
Case $AB : ret$ = "#VK_BROWSER_FAVORITES"
Case $AC : ret$ = "#VK_BROWSER_HOME"
Case $AD : ret$ = "#VK_VOLUME_MUTE"
Case $AE : ret$ = "#VK_VOLUME_DOWN"
Case $AF : ret$ = "#VK_VOLUME_UP"
Case $B0 : ret$ = "#VK_MEDIA_NEXT_TRACK"
Case $B1 : ret$ = "#VK_MEDIA_PREV_TRACK"
Case $B2 : ret$ = "#VK_MEDIA_STOP"
Case $B3 : ret$ = "#VK_MEDIA_PLAY_PAUSE"
Case $B4 : ret$ = "#VK_LAUNCH_MAIL"
Case $B5 : ret$ = "#VK_LAUNCH_MEDIA_SELECT"
Case $B6 : ret$ = "#VK_LAUNCH_APP1"
Case $B7 : ret$ = "#VK_LAUNCH_APP2"
Case $BA : ret$ = "#VK_OEM_1"
Case $BB : ret$ = "#VK_OEM_PLUS"
Case $BC : ret$ = "#VK_OEM_COMMA"
Case $BD : ret$ = "#VK_OEM_MINUS"
Case $BE : ret$ = "#VK_OEM_PERIOD"
Case $BF : ret$ = "#VK_OEM_2"
Case $C0 : ret$ = "#VK_OEM_3"
Case $DB : ret$ = "#VK_OEM_4"
Case $DC : ret$ = "#VK_OEM_5"
Case $DD : ret$ = "#VK_OEM_6"
Case $DE : ret$ = "#VK_OEM_7"
Case $DF : ret$ = "#VK_OEM_8"
Case $E1 : ret$ = "#VK_OEM_AX"
Case $E2 : ret$ = "#VK_OEM_102"
Case $E3 : ret$ = "#VK_ICO_HELP"
Case $E4 : ret$ = "#VK_ICO_00"
Case $E5 : ret$ = "#VK_PROCESSKEY"
Case $E6 : ret$ = "#VK_ICO_CLEAR"
Case $E7 : ret$ = "#VK_PACKET"
Case $E9 : ret$ = "#VK_OEM_RESET"
Case $EA : ret$ = "#VK_OEM_JUMP"
Case $EB : ret$ = "#VK_OEM_PA1"
Case $EC : ret$ = "#VK_OEM_PA2"
Case $ED : ret$ = "#VK_OEM_PA3"
Case $EE : ret$ = "#VK_OEM_WSCTRL"
Case $EF : ret$ = "#VK_OEM_CUSEL"
Case $F0 : ret$ = "#VK_OEM_ATTN"
Case $F1 : ret$ = "#VK_OEM_FINISH"
Case $F2 : ret$ = "#VK_OEM_COPY"
Case $F3 : ret$ = "#VK_OEM_AUTO"
Case $F4 : ret$ = "#VK_OEM_ENLW"
Case $F5 : ret$ = "#VK_OEM_BACKTAB"
Case $F6 : ret$ = "#VK_ATTN"
Case $F7 : ret$ = "#VK_CRSEL"
Case $F8 : ret$ = "#VK_EXSEL"
Case $F9 : ret$ = "#VK_EREOF"
Case $FA : ret$ = "#VK_PLAY"
Case $FB : ret$ = "#VK_ZOOM"
Case $FC : ret$ = "#VK_NONAME"
Case $FD : ret$ = "#VK_PA1"
Case $FE : ret$ = "#VK_OEM_CLEAR"
Default : ret$ = "UNKNOWN"
EndSelect
ProcedureReturn ret$
EndProcedure
Procedure KeyCode(vk_name$)
If Left(vk_name$, 1) <> "#"
vk_name$ = "#"+vk_name$
EndIf
Select UCase(vk_name$)
Case "#VK_LBUTTON" : ret = $01
Case "#VK_RBUTTON" : ret = $02
Case "#VK_CANCEL" : ret = $03
Case "#VK_MBUTTON" : ret = $04
Case "#VK_XBUTTON1" : ret = $05
Case "#VK_XBUTTON2" : ret = $06
Case "#VK_BACK" : ret = $08
Case "#VK_TAB" : ret = $09
Case "#VK_CLEAR" : ret = $0C
Case "#VK_RETURN" : ret = $0D
Case "#VK_SHIFT" : ret = $10
Case "#VK_CONTROL" : ret = $11
Case "#VK_MENU" : ret = $12
Case "#VK_PAUSE" : ret = $13
Case "#VK_CAPITAL" : ret = $14
Case "#VK_KANA" : ret = $15
Case "#VK_HANGEUL" : ret = $15
Case "#VK_HANGUL" : ret = $15
Case "#VK_JUNJA" : ret = $17
Case "#VK_FINAL" : ret = $18
Case "#VK_HANJA" : ret = $19
Case "#VK_KANJI" : ret = $19
Case "#VK_ESCAPE" : ret = $1B
Case "#VK_CONVERT" : ret = $1C
Case "#VK_NONCONVERT" : ret = $1D
Case "#VK_ACCEPT" : ret = $1E
Case "#VK_MODECHANGE" : ret = $1F
Case "#VK_SPACE" : ret = $20
Case "#VK_PRIOR" : ret = $21
Case "#VK_NEXT" : ret = $22
Case "#VK_END" : ret = $23
Case "#VK_HOME" : ret = $24
Case "#VK_LEFT" : ret = $25
Case "#VK_UP" : ret = $26
Case "#VK_RIGHT" : ret = $27
Case "#VK_DOWN" : ret = $28
Case "#VK_SELECT" : ret = $29
Case "#VK_PRINT" : ret = $2A
Case "#VK_EXECUTE" : ret = $2B
Case "#VK_SNAPSHOT" : ret = $2C
Case "#VK_INSERT" : ret = $2D
Case "#VK_DELETE" : ret = $2E
Case "#VK_HELP" : ret = $2F
Case "#VK_0" : ret = $30
Case "#VK_1" : ret = $31
Case "#VK_2" : ret = $32
Case "#VK_3" : ret = $33
Case "#VK_4" : ret = $34
Case "#VK_5" : ret = $35
Case "#VK_6" : ret = $36
Case "#VK_7" : ret = $37
Case "#VK_8" : ret = $38
Case "#VK_9" : ret = $39
Case "#VK_A" : ret = $41
Case "#VK_B" : ret = $42
Case "#VK_C" : ret = $43
Case "#VK_D" : ret = $44
Case "#VK_E" : ret = $45
Case "#VK_F" : ret = $46
Case "#VK_G" : ret = $47
Case "#VK_H" : ret = $48
Case "#VK_I" : ret = $49
Case "#VK_J" : ret = $4A
Case "#VK_K" : ret = $4B
Case "#VK_L" : ret = $4C
Case "#VK_M" : ret = $4D
Case "#VK_N" : ret = $4E
Case "#VK_O" : ret = $4F
Case "#VK_P" : ret = $50
Case "#VK_Q" : ret = $51
Case "#VK_R" : ret = $52
Case "#VK_S" : ret = $53
Case "#VK_T" : ret = $54
Case "#VK_U" : ret = $55
Case "#VK_V" : ret = $56
Case "#VK_W" : ret = $57
Case "#VK_X" : ret = $58
Case "#VK_Y" : ret = $59
Case "#VK_Z" : ret = $5A
Case "#VK_LWIN" : ret = $5B
Case "#VK_RWIN" : ret = $5C
Case "#VK_APPS" : ret = $5D
Case "#VK_SLEEP" : ret = $5F
Case "#VK_NUMPAD0" : ret = $60
Case "#VK_NUMPAD1" : ret = $61
Case "#VK_NUMPAD2" : ret = $62
Case "#VK_NUMPAD3" : ret = $63
Case "#VK_NUMPAD4" : ret = $64
Case "#VK_NUMPAD5" : ret = $65
Case "#VK_NUMPAD6" : ret = $66
Case "#VK_NUMPAD7" : ret = $67
Case "#VK_NUMPAD8" : ret = $68
Case "#VK_NUMPAD9" : ret = $69
Case "#VK_MULTIPLY" : ret = $6A
Case "#VK_ADD" : ret = $6B
Case "#VK_SEPARATOR" : ret = $6C
Case "#VK_SUBTRACT" : ret = $6D
Case "#VK_DECIMAL" : ret = $6E
Case "#VK_DIVIDE" : ret = $6F
Case "#VK_F1" : ret = $70
Case "#VK_F2" : ret = $71
Case "#VK_F3" : ret = $72
Case "#VK_F4" : ret = $73
Case "#VK_F5" : ret = $74
Case "#VK_F6" : ret = $75
Case "#VK_F7" : ret = $76
Case "#VK_F8" : ret = $77
Case "#VK_F9" : ret = $78
Case "#VK_F10" : ret = $79
Case "#VK_F11" : ret = $7A
Case "#VK_F12" : ret = $7B
Case "#VK_F13" : ret = $7C
Case "#VK_F14" : ret = $7D
Case "#VK_F15" : ret = $7E
Case "#VK_F16" : ret = $7F
Case "#VK_F17" : ret = $80
Case "#VK_F18" : ret = $81
Case "#VK_F19" : ret = $82
Case "#VK_F20" : ret = $83
Case "#VK_F21" : ret = $84
Case "#VK_F22" : ret = $85
Case "#VK_F23" : ret = $86
Case "#VK_F24" : ret = $87
Case "#VK_NUMLOCK" : ret = $90
Case "#VK_SCROLL" : ret = $91
Case "#VK_LSHIFT" : ret = $A0
Case "#VK_RSHIFT" : ret = $A1
Case "#VK_LCONTROL" : ret = $A2
Case "#VK_RCONTROL" : ret = $A3
Case "#VK_LMENU" : ret = $A4
Case "#VK_RMENU" : ret = $A5
Case "#VK_BROWSER_BACK" : ret = $A6
Case "#VK_BROWSER_FORWARD" : ret = $A7
Case "#VK_BROWSER_REFRESH" : ret = $A8
Case "#VK_BROWSER_STOP" : ret = $A9
Case "#VK_BROWSER_SEARCH" : ret = $AA
Case "#VK_BROWSER_FAVORITES" : ret = $AB
Case "#VK_BROWSER_HOME" : ret = $AC
Case "#VK_VOLUME_MUTE" : ret = $AD
Case "#VK_VOLUME_DOWN" : ret = $AE
Case "#VK_VOLUME_UP" : ret = $AF
Case "#VK_MEDIA_NEXT_TRACK" : ret = $B0
Case "#VK_MEDIA_PREV_TRACK" : ret = $B1
Case "#VK_MEDIA_STOP" : ret = $B2
Case "#VK_MEDIA_PLAY_PAUSE" : ret = $B3
Case "#VK_LAUNCH_MAIL" : ret = $B4
Case "#VK_LAUNCH_MEDIA_SELECT" : ret = $B5
Case "#VK_LAUNCH_APP1" : ret = $B6
Case "#VK_LAUNCH_APP2" : ret = $B7
Case "#VK_OEM_1" : ret = $BA
Case "#VK_OEM_PLUS" : ret = $BB
Case "#VK_OEM_COMMA" : ret = $BC
Case "#VK_OEM_MINUS" : ret = $BD
Case "#VK_OEM_PERIOD" : ret = $BE
Case "#VK_OEM_2" : ret = $BF
Case "#VK_OEM_3" : ret = $C0
Case "#VK_OEM_4" : ret = $DB
Case "#VK_OEM_5" : ret = $DC
Case "#VK_OEM_6" : ret = $DD
Case "#VK_OEM_7" : ret = $DE
Case "#VK_OEM_8" : ret = $DF
Case "#VK_OEM_AX" : ret = $E1
Case "#VK_OEM_102" : ret = $E2
Case "#VK_ICO_HELP" : ret = $E3
Case "#VK_ICO_00" : ret = $E4
Case "#VK_PROCESSKEY" : ret = $E5
Case "#VK_ICO_CLEAR" : ret = $E6
Case "#VK_PACKET" : ret = $E7
Case "#VK_OEM_RESET" : ret = $E9
Case "#VK_OEM_JUMP" : ret = $EA
Case "#VK_OEM_PA1" : ret = $EB
Case "#VK_OEM_PA2" : ret = $EC
Case "#VK_OEM_PA3" : ret = $ED
Case "#VK_OEM_WSCTRL" : ret = $EE
Case "#VK_OEM_CUSEL" : ret = $EF
Case "#VK_OEM_ATTN" : ret = $F0
Case "#VK_OEM_FINISH" : ret = $F1
Case "#VK_OEM_COPY" : ret = $F2
Case "#VK_OEM_AUTO" : ret = $F3
Case "#VK_OEM_ENLW" : ret = $F4
Case "#VK_OEM_BACKTAB" : ret = $F5
Case "#VK_ATTN" : ret = $F6
Case "#VK_CRSEL" : ret = $F7
Case "#VK_EXSEL" : ret = $F8
Case "#VK_EREOF" : ret = $F9
Case "#VK_PLAY" : ret = $FA
Case "#VK_ZOOM" : ret = $FB
Case "#VK_NONAME" : ret = $FC
Case "#VK_PA1" : ret = $FD
Case "#VK_OEM_CLEAR" : ret = $FE
Default : ret = 0
EndSelect
ProcedureReturn ret
EndProcedure
;---------------------------------------------------
; Test Program, key in some codes or names
;---------------------------------------------------
ProcedureDLL.l IsSimpleNumber(String$)
If String$
*p.character = @String$
Repeat
char = *p\c
If (char >= '0' And char <= '9') Or char=0
*p+1
Else
ProcedureReturn 0
EndIf
Until char = 0
ProcedureReturn 1
EndIf
EndProcedure
OpenWindow(0,0,0,320,120,"KeyName/Code ID",$cf0001)
CreateGadgetList(WindowID(0))
TextGadget(0,100,20,200,20, "")
StringGadget(1, 20, 50, 200, 20, "")
ButtonGadget(2, 225, 50, 60, 20, "Show")
Repeat
ev = WaitWindowEvent()
Select ev
Case #PB_Event_Gadget
Select EventGadget()
Case 2
If IsSimpleNumber(GetGadgetText(1))
SetGadgetText(0, UCase(GetGadgetText(1))+"= " + KeyName(Val(GetGadgetText(1))))
Else
SetGadgetText(0, UCase(GetGadgetText(1))+"= " + Str(KeyCode(GetGadgetText(1))))
EndIf
EndSelect
Case #WM_KEYDOWN
SetGadgetText(0, KeyName(EventwParam()))
EndSelect
Until ev = #WM_CLOSE