Page 1 sur 1
gestion du clavier
Publié : mar. 06/avr./2010 15:41
par dayvid
salut
je cherche un code pour prendre 100 % en charge le clavier "toutes les touches" en mode fenetré
par exemple je sais que avec la console ont peut prendre en charge toutes les touches
mais en mode fenêtré c'est autre chose, j'ai bien essayer des raccourcie clavier mais
il ne prennent pas toutes les touches du clavier en charge
comment puis-je dire a mon programme:
si une touche est appuyer
qu'il me renvoie le code de la touche
je pense que avec l'api de windows se serai possible non ?

Re: gestion du clavier
Publié : lun. 26/avr./2010 19:03
par Backup
pour répondre a la question posé voici un debut de réponse :
Code : Tout sélectionner
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
Re: gestion du clavier
Publié : lun. 26/avr./2010 19:13
par Backup
Merci de ne pas transformer les topics de Dayvid a chaque fois en règlement de compte
personne ne nous oblige a répondre, mais inutile d'ajouter de l'huile sur le feu
Dayvid fait des fautes.. on ne pourra pas le changer... apprenons lui au maximum a écrire comme il faut... ça sera deja bénéfique
j'ai nettoyé le topic des messages en dehors de la question

désolé...
Re: gestion du clavier
Publié : lun. 26/avr./2010 19:25
par boddhi
Il ne pouvait y avoir plus intelligente réponse...
Cordialement.