utiliser le joystick a la place du clavier

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

utiliser le joystick a la place du clavier

Message par Zorro »

j'aime jouer a World Of tanks :)

alors je me suis dis, pourquoi pas utiliser le joystick a la place du Clavier ?

malheureusement, avec world OF tanks, ce code ne marchera pas, car je pense que WOT utilise une gestion Personalisé du clavier ....
seul la souris simulée par le joystick fonctionne !

je voulais asservir les mouvements du tanks au joystick , et garder la souris pour pointer et tourner la tourrelle du char
les boutons du jsoystick (tir et visé auto) fonctionne , mais des qu'il sagit de simuler une touche clavier, ça ne marche plus !!

cependant mon code fonctionne tres bien !
c'est juste le Jeux World Of Tanks qui semble ne pas vouloir Obtempérer au commande clavier envoyé par le prg ...
on dirai qu'ils detecte l'appuis d'une touche de façon physique 8O , je ne sais vraiment pas comment il peuvent proceder

si vous avez un prg de jeux qui soit moins "bloqué" essayez mon code si dessous !

a savoir que le touches Flechées du clavier sont simulé si on bouge le manche du jostick (haut bas ,gauche/droite )
comme j'ai un joystick qui permet la rotation de l'axe (mouvement Z) , j'ai quand meme asservi ce mouvement au touche flechées gauche/droite
le but etant de faire pivoter mon char sur lui meme a l'origine :)

les boutons du joystick son eux reconnu sans probleme puisque ils asservisent les touches de la souris (bouton 1 joystick = bouton souris gauche //bouton 2 joystick = bouton souris droite)

dans ce code, et pour bien le comprendre, j'ai donc cherché a simuler les mouvements de mon char dont voici les commandes clavier


mouvement gauche du joystick /ou rotation gauche du manche du joystick => appuis sur Clavier fleche gauche
mouvement droite du joystick / ou rotation droite du manche du joystick = > appuis sur clavier fleche droite
mouvement vertical haut du joystick => appuis sur Clavier fleche Haut
mouvement vertical bas du joystick => appuis sur Clavier fleche bas
;*
Appuis sur bouton 1 joystick => Appuis sur bouton Gauche de la souris (sensé tirer dans WOT )
Appuis sur bouton 2 joystick => appuis sur bouton droit de la souris (sensé visé automatique dans WOT )

appuis sur bouton 4 joystick => appuis sur barre d'espace (sensé Visé Sniper dans WOT )

voici le code, qui fera de toute façon une base pour faire ce genre de bidouille sur l'un de vos jeux :)

Code : Tout sélectionner


;***********************************************
;Titre  :*joystick_clavier
;Auteur  : Zorro
;Date  :21/06/2017
;Heure  :09:49:23
;Version Purebasic :  PureBasic 5.60 (Windows - x86)
;Version de l'editeur :EPB V2.64
; Libairies necessaire : Aucune 
;***********************************************

; utilisation de la procedure  SendKeys(Handle,window$,keys$) en lieu et place des appel directe a l'api keybd_event_(  #VK_DOWN ,0,0,0)  et keybd_event_(  #VK_DOWN ,0,2,0) 
; cette procedure est visible dans les tutos sur la souris dans le forum , et proviens d'un code du forum Anglais ...
; pour la souris, et ses touches c'est l'api  	mouse_event_(#MOUSEEVENTF_RIGHTDOWN,xm,ym,0,1) ; qui est utilisé


#MOUSEEVENTF_RIGHTDOWN=8
;#MOUSEEVENTF_RIGHTUP=10

Declare sendkeys(handle,window$,keys$)
; a utiliser si on utilise les Api directement au lieu de la procedure
;Window$="Client de WoT"
;Handle=FindWindow_(0,window$) 
; ----------- exemples d'utilisation de la procedure ------------------
; ** soit pour envoyer une sequence de caractere a une application ouverte
;SendKeys(0,"japbe",";on va ecrire une nouvelle ligne{ENTER}")
; ** soit pour envoyer l'appuis d'une touche (ici la touche flechée haut )
;SendKeys(0,""Client de WoT"","{UP}")

OpenWindow(0, 0, 0, 320, 200, "Joystick_Clavier", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

If InitJoystick()=0
		MessageRequester("Mouser Error","No controller detected",#MB_ICONSTOP)
		End
EndIf

Global Flag_Haut=0
Global Flag_Bas=0
Global Flag_Rot_Gauche=0
Global Flag_Rot_Droite=0
Global Flag_bouton1=0
Global Flag_bouton2=0
Global Flag_bouton4=0

Window$="Client de WoT"

Handle=FindWindow_(0,window$) 
If Handle
		SetForegroundWindow_(handle)
Else
		MessageRequester("Info","le prg :" +Window$+" n'est pas lancé")
		End 
Endif

Repeat
		Event=	WaitWindowEvent(20)
		
		If ExamineJoystick(0)
				dx=JoystickAxisX(0,#PB_Absolute)
				dy=JoystickAxisY(0,#PB_Absolute)
				Dz=JoystickAxisZ(0,#PB_Relative)  ; Absolute dont Work !!!! 
				bouton1=JoystickButton(0,1) 
				bouton2= JoystickButton(0,2)
				bouton3=JoystickButton(0,3)
				bouton4=JoystickButton(0,4)
				bouton5=JoystickButton(0,5)
				bouton6=JoystickButton(0,6)
				bouton7=JoystickButton(0,7)
				bouton8=JoystickButton(0,8)
				bouton9=JoystickButton(0,9)
				bouton10=JoystickButton(0,10)
				bouton11=JoystickButton(0,11)
				bouton12=JoystickButton(0,12)
				; ***
				Select bouton1
				Case 0
						If 	Flag_bouton1=1
								Flag_bouton1=0
								mouse_event_(#MOUSEEVENTF_LEFTUP,xm,ym,0,1) ; relache
						Endif
				Case 1						
						debug "bouton 1 " +str(bouton1)
						mouse_event_(#MOUSEEVENTF_LEFTDOWN,xm,ym,0,1) 
						
						Flag_bouton1=1
						Delay(50)
						mouse_event_(#MOUSEEVENTF_LEFTUP,xm,ym,0,1) ; relache
						
				EndSelect
				; ***
				Select bouton2
				Case 0				
						if Flag_bouton2=1
								Flag_bouton2=0
								mouse_event_(#MOUSEEVENTF_RIGHTUP,xm,ym,0,1) ;appuis
						Endif
				Case 1
						debug "bouton 2 " +str(bouton2)
						mouse_event_(#MOUSEEVENTF_RIGHTDOWN,xm,ym,0,1) ; appuis
						Flag_bouton2=1
						Delay(50)					
						mouse_event_(#MOUSEEVENTF_RIGHTUP,xm,ym,0,1) ;relache	
				EndSelect
				; ***
				Select bouton3
				Case 0
						;debug "bouton 3 " +str(bouton3)
				Case 1
						debug "bouton 3 " +str(bouton3)
				EndSelect
				; ***
				Select bouton4
				Case 0
						;debug "bouton 4 " +str(bouton4)
						if 	Flag_bouton4 = 1
								Delay(50)
								keybd_event_( #VK_SPACE ,0,2,0) ;relache	
								Flag_bouton4 = 0
						Endif
				Case 1				
						debug "bouton 4 " +str(bouton4)
						keybd_event_( #VK_SPACE ,0,0,0) ;Press
						Flag_bouton4 = 1
				EndSelect
				; ***
				Select bouton5
				Case 0					
				Case 1
						debug "bouton 5 " +str(bouton5)
				EndSelect
				; ***
				Select bouton6
				Case 0					
				Case 1
						debug "bouton 6 " +str(bouton6)
				EndSelect
				; ***
				Select bouton7
				Case 0					
				Case 1
						debug "bouton 7 " +str(bouton7)
				EndSelect
				; ***
				Select bouton8
				Case 0					
				Case 1
						debug "bouton 8 " +str(bouton8)
				EndSelect
				;***;
				Select bouton9
				Case 0					
				Case 1
						debug "bouton 9 " +str(bouton9)
				EndSelect
				;***;
				Select bouton10
				Case 0					
				Case 1
						debug "bouton 10 " +str(bouton10)
				EndSelect
				;***;
				Select bouton11
				Case 0					
				Case 1
						debug "bouton 11 " +str(bouton11)
				EndSelect
				;***;
				Select bouton12
				Case 0					
				Case 1
						debug "bouton 12 " +str(bouton12)
				EndSelect
				; **************************LE CLAVIER **************************
				
				Select  DX
				Case 0						; plus d'action sur l'axe des X du joystick
						if Flag_droite=1
								Flag_droite=0												
								debug "X" +str(DX)
						Endif
						if Flag_Gauche=1
								Flag_Gauche=0											
								debug "X" +str(DX)
						Endif
				Case 1 ; droite
						Flag_droite=1
						Flag_gauche=0
						debug "X" +str(DX)	
						SendKeys(0,Window$,"{RIGHT}") ; action sur l'axe des X du joystick , donc on press la touche flechée droite				
				Case -1 ; Gauche
						Flag_gauche=1
						Flag_droite=0
						debug "X" +str(DX)
						;	keybd_event_(  #VK_LEFT ,0,0,0)  ; autre façon de faire
							SendKeys(0,Window$,"{LEFT}"); action sur l'axe des X du joystick , donc on press la touche flechée gauche	
				EndSelect
				;***
				Select Dy
				Case 0
						If Flag_haut=1
								debug "Y"+str(DY)
								Flag_haut=0				
						Endif
						if Flag_bas=1
								Flag_bas=0
								debug "Y"+str(DY)								;
						Endif
				Case 1 ; Bas
						debug "Y"+str(DY)
						;keybd_event_(  #VK_DOWN ,0,0,0) ;  ; autre façon de faire
						SendKeys(0,Window$,"{DOWN}") ;; action sur l'axe des Y du joystick , donc on press la touche flechée bas		
						Flag_bas=1
						Flag_haut=0
						;keybd_event_(  #VK_UP ,0,2,0) ; relache  ; autre façon de faire
				Case -1 ; Haut
						debug "Y"+str(DY)
						SendKeys(0,Window$,"{UP}") ; action sur l'axe des Y du joystick , donc on press la touche flechée Haute
						Flag_haut=1
						Flag_bas=0
						;keybd_event_(  #VK_Down ,0,2,0) ; relache  ; autre façon de faire
				EndSelect
				;***
				select Dz
				Case 0
						if Flag_rot_Droite=1
								Flag_rot_Droite=0
								debug "Z" +str(Dz)
								;	keybd_event_(  #VK_RIGHT ,0,2,0) ; relache  ; autre façon de faire
						Endif
						If Flag_rot_Gauche=1
								Flag_rot_Gauche=0
								debug "Z" +str(Dz)
								;	keybd_event_(  #VK_LEFT ,0,2,0) ; Relache  ; autre façon de faire
						Endif
				Case 1 ; ROT Droite
						debug "Z" +str(Dz)
						;keybd_event_( #VK_RIGHT ,0,0,0) ; press  ; autre façon de faire
						SendKeys(0,Window$,"{RIGHT}") ; action sur l'axe des Z du joystick , donc on press la touche flechée droite		
						Flag_rot_Droite=1
						Flag_rot_Gauche=0
						;		keybd_event_(  #VK_LEFT ,0,2,0) ; Relache  ; autre façon de faire
				Case -1 ; ROT Gauche
						debug "Z" +str(Dz)
						;	keybd_event_( #VK_LEFT ,0,0,0)
						SendKeys(0,Window$,"{LEFT}") ;; action sur l'axe des Z du joystick , donc on press la touche flechée Gauche	
						Flag_rot_Gauche=1
						Flag_rot_Droite=0
						;	keybd_event_(  #VK_RIGHT ,0,2,0) ; relache  ; autre façon de faire
				Endselect
				
				
		Endif
Until Event = #PB_Event_CloseWindow

Procedure SendKeys(Handle,window$,keys$)
		If window$<>"" : Handle=FindWindow_(0,window$) : EndIf ; Use window$ instead of handle.
		If IsWindow_(Handle)=0 ; Does the target window actually exist?
				ProcedureReturn 0 ; Nope, so report 0 for failure to type.
		Else
				; This block gives the target window the focus before typing.
				thread1=GetWindowThreadProcessID_(GetForegroundWindow_(),0)
				thread2=GetWindowThreadProcessID_(Handle,0)
				If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#True) : EndIf
				SetForegroundWindow_(Handle) ; Target window now has the focus for typing.
				Sleep_(125) ; 1/8 second pause before typing to prevent fast CPU problems.
				; Now the actual typing starts.
				keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT key before typing.
				keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL key before typing.
				keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT key before typing.
				keybd_event_(#VK_LWIN,0,#KEYEVENTF_KEYUP,0) ; Release WINDOWS key before typing.
				For r=1 To Len(keys$)
						vk$=Mid(keys$,r,1)
						If vk$="{" ; Special key found.
								s=FindString(keys$,"}",r+1)-(r+1) ; Get length of special key.
								s$=Mid(keys$,r+1,s) ; Get special key name.
								Select s$ ; Get virtual key code of special key.
								Case "ALTDOWN" : keybd_event_(#VK_MENU,0,0,0) ; Hold ALT down.
								Case "ALTUP" : keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT.
								Case "BACKSPACE" : vk=#VK_BACK
								Case "CONTROLDOWN" : keybd_event_(#VK_CONTROL,0,0,0) ; Hold CONTROL down.
								Case "CONTROLUP" : keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL.
								Case "DELAY" : vk=0 : Sleep_(1000) ; Delay typing for one second.
								Case "DELETE" : vk=#VK_DELETE
								Case "DOWN" : vk=#VK_DOWN
								Case "END" : vk=#VK_END
								Case "ENTER" : vk=#VK_RETURN
								Case "ESCAPE" : vk=#VK_ESCAPE
								Case "F1" : vk=#VK_F1
								Case "F2" : vk=#VK_F2
								Case "F3" : vk=#VK_F3
								Case "F4" : vk=#VK_F4
								Case "F5" : vk=#VK_F5
								Case "F6" : vk=#VK_F6
								Case "F7" : vk=#VK_F7
								Case "F8" : vk=#VK_F8
								Case "F9" : vk=#VK_F9
								Case "F10" : vk=#VK_F10
								Case "F11" : vk=#VK_F11
								Case "F12" : vk=#VK_F12
								Case "HOME" : vk=#VK_HOME
								Case "INSERT" : vk=#VK_INSERT
								Case "LEFT" : vk=#VK_LEFT
								Case "PAGEDOWN" : vk=#VK_NEXT
								Case "PAGEUP" : vk=#VK_PRIOR
								Case "PRINTSCREEN" : vk=#VK_SNAPSHOT
								Case "RETURN" : vk=#VK_RETURN
								Case "RIGHT" : vk=#VK_RIGHT
								Case "SPACE" : vk=#VK_SPACE
								Case "SHIFTDOWN" : shifted=1 : keybd_event_(#VK_SHIFT,0,0,0) ; Hold SHIFT down.
								Case "SHIFTUP" : shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT.
								Case "TAB" : vk=#VK_TAB
								Case "UP" : vk=#VK_UP
								Case "WINDOWS" : vk=#VK_LWIN
								EndSelect
								If Left(s$,3)<>"ALT" And Left(s$,7)<>"CONTROL" And Left(s$,5)<>"SHIFT"
										keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the special key.
								EndIf
								r+s+1 ; Continue getting the keystrokes that follow the special key.
						Else
								vk=VkKeyScanEx_(Asc(vk$),GetKeyboardLayout_(0)) ; Normal key found.
								If vk>303 And shifted=0 : keybd_event_(#VK_SHIFT,0,0,0) : EndIf ; Due to shifted character.
								keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the normal key.
								If vk>303 And shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) : EndIf ; Due to shifted character.
						EndIf
				Next
				If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#False) : EndIf ; Finished typing to target window!
				keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT key in case user forgot.
				keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL key in case user forgot.
				keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT key in case user forgot.
				keybd_event_(#VK_LWIN,0,#KEYEVENTF_KEYUP,0) ; Release WINDOWS key in case user forgot.
				ProcedureReturn 1 ; Report successful typing!  :)
		EndIf
EndProcedure






a noter que j'ai signalé un bug sur le forum de Purebasic anglais
a propos de la fonction

Code : Tout sélectionner

            Dz=JoystickAxisZ(0,#PB_Relative)  ; Absolute dont Work !!!! 
qui en mode #PB_Relative renvoie en fait la valeur 0/1 que devrai renvoyer #PB_Absolute
et que #PB_Absolute, ne renvoie rien ....
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: utiliser le joystick a la place du clavier

Message par djes »

Deux idées, l'interception des événements par un autre processus/thread que tu n'as pas repéré, ou alors l'utilisation d'une autre API plus bas niveau. :?:
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: utiliser le joystick a la place du clavier

Message par Zorro »

oui je suis d'accord avec ça, (le Trhead caché)il va falloir
que j’investigue ... :)

pour ce qui est de l'api plus bas niveau, je ne pense pas qu'il existe plus bas niveau que

Code : Tout sélectionner

keybd_event_( #VK_SPACE ,0,2,0)
mais bon, je ne suis pas expert API :)

ps: bon je vais passer le motoculteur dans le jardin, ça me permet de reflechir :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: utiliser le joystick a la place du clavier

Message par Kwai chang caine »

Une fois j'ai essayé de piloter vnc, et en l'occurrence appuyer sur le bouton qui valide la prise de contrôle (c'est paaaas bien !!!) :oops:
J'ai d'abord essayé ce que je connaissais, c'est à dire pas grand chose :mrgreen: et je me suis cassé les chaillotes
Puis j'ai fait appel aux copains caids de l'us et pas des moindres (Danilo, rashad, etc..) tu pourras retrouver le post car noir d'exemples de pilotage api, y sont du coups donnés

Je crois qu'ils ont épuisé toutes les api que crosoft a créé, et peut être même celles qu'il inventera plus tard...
Et pas mieux, mon simple bouton malgré toutes mes attaques est resté de marbre :?

Alors ne reculant derriere aucune honte, je suis allé chercher dans le source en C de vnc et j'ai trouvé par miracle, une espèce d'annulation de tout ce qui peut être event sur ce bouton.
Bien sûr, ils avaient pensé aux petits cons comme moi, qui veulent jouer avec la sécurité, même si c'est dans un mode honnête :oops:

Je reste persuadé qu'il existe une différence entre l'intervention physique et virtuelle du clavier, car passionné de pilotage d'application par une autre, à d'autres reprises j'ai eu ce genre de cas ou les nombreuses methodes données sur les forums ne fonctionnent pas...même les keybd :|
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: utiliser le joystick a la place du clavier

Message par Zorro »

oui, je plussoie :)
il y a peut etre moyen en lisant/ecrivant direct dans le buffer clavier ...
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: utiliser le joystick a la place du clavier

Message par Ar-S »

Kwai chang caine a écrit :Une fois j'ai essayé de piloter vnc, et en l'occurrence appuyer sur le bouton qui valide la prise de contrôle (c'est paaaas bien !!!) :oops:
J'ai d'abord essayé ce que je connaissais, c'est à dire pas grand chose :mrgreen: et je me suis cassé les chaillotes
Puis j'ai fait appel aux copains caids de l'us et pas des moindres (Danilo, rashad, etc..) tu pourras retrouver le post car noir d'exemples de pilotage api, y sont du coups donnés

Je crois qu'ils ont épuisé toutes les api que crosoft a créé, et peut être même celles qu'il inventera plus tard...
Et pas mieux, mon simple bouton malgré toutes mes attaques est resté de marbre :?

Alors ne reculant derriere aucune honte, je suis allé chercher dans le source en C de vnc et j'ai trouvé par miracle, une espèce d'annulation de tout ce qui peut être event sur ce bouton.
Bien sûr, ils avaient pensé aux petits cons comme moi, qui veulent jouer avec la sécurité, même si c'est dans un mode honnête :oops:

Je reste persuadé qu'il existe une différence entre l'intervention physique et virtuelle du clavier, car passionné de pilotage d'application par une autre, à d'autres reprises j'ai eu ce genre de cas ou les nombreuses methodes données sur les forums ne fonctionnent pas...même les keybd :|
J'ai pas pigé ce que tu souhaitez faire KCC, mais si c'est appuyé sur un bouton d'un soft, il aurait fallu que tu déplace ton curseur en Xy et que tu simules un clic non ? Du bon vieux SendMessage_ des familles. A moins que je n'ai pas pigé.
Mais j'ai fait ça pour un jeu ou fallait attendre 3 plombes avant de cliquer à un endroit, je l'ai fait sans mal.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: utiliser le joystick a la place du clavier

Message par Kwai chang caine »

Rigole pas....ça aussi j'ai essayé :lol:
En fait j'y ai passé plusieurs jours à faire chier tout le forum us :oops:
Et rien...mais alors rien n'a marché
Put....au bout de x jours à regarder ce con me narguer (il lui manquait plus que une langue et 2 mains pour me faire un pied de nez) j'avais envie de mettre un coup de boule dans l'écran, comme ça, il l'aurait eu cette fois l'intervention de l'utilisateur :?

Donc, je rejoins Zorro dans sa theorie du "ya une différence entre executer un clic souris ou un press clavier à la mano, ou par code"
Je sais pas où, mais windows le sait.

Je pense que comme vous avez dit il doit falloir descendre tout en bas, peut être en asm, et peut être, mais rien n'est sur, on pourrait tromper windows.
Ils ont peut être mis des interupteurs, sous les touches :lol:

En tout cas en C, les développeurs de vnc sont arrivé à annuler tout ce qui n'est pas une intervention physique...donc il faut bien que windows sache faire la différence, non ??

Du coups bien que j'aime pas ça, et forcé. ..j'ai abandonné :|
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Tonio
Messages : 95
Inscription : ven. 07/avr./2017 14:49
Localisation : Sud Est

Re: utiliser le joystick a la place du clavier

Message par Tonio »

salut Zorro

as tu essayer ce logiciel JoyToKey ?

http://www.oneswitch.org.uk/2/I/JoyToKey/JoyToKey.htm
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: utiliser le joystick a la place du clavier

Message par Zorro »

oui, il fait pas mieux que mon code ci dessus ;)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Tonio
Messages : 95
Inscription : ven. 07/avr./2017 14:49
Localisation : Sud Est

Re: utiliser le joystick a la place du clavier

Message par Tonio »

Zorro a écrit :oui, il fait pas mieux que mon code ci dessus ;)
ok tu es le meilleur ..
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: utiliser le joystick a la place du clavier

Message par Zorro »

ce n'est pas ce que je dit !

je dis que le prg que tu cites, offre une interface, mais coté fonctionnel
fait exactement ce que le code que j'ai posté fait !

et pour World Of Tanks, se casse les dents pareil !
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: utiliser le joystick a la place du clavier

Message par Zorro »

Pour World Of Tanks
des russes ont mis au point un prg qui permet d'utiliser le joystick avec World Of Tank

je supposes qu'ils ont du "poker" directement les buffer du jeux ..
car par les Api , ça ne marche pas (voir mon code plus haut )

donc si vous voulez utiliser un joystick avec World Of Tanks (et uniquement ce jeux )
utilisez ceci : http://www.worldofjoysticks.com/

perso sur mon portable, j'utilise le joystick pour avancer/reculer --- tourner (par pivo du manche et ou inclinaison )---- tirer --- vue Sniper/normal -- target automatique ...

ça marche plutot bien :)
le logiciel permet un mode de mise au point , et un mode Gaming , ne pas ooublier de passer en gaming, pour pouvoir jouer :)

le lien direct vers le telechargement est celui ci
http://www.worldofjoysticks.com/download.html

il faut "liker" avant de telecharger
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Répondre