Page 1 sur 1

[R] Détection de touches, sans aucune conséquence

Posté : sam. 10 mai 2008 11:16
par jbnh
Bonjour à tous,

j'aimerais trouver, si possible, comment un script peut-il détecter une touche, et si il la détecte, executer une scéance quelconque. Par exemple si j'appuie sur une touche (prenons pour exemple la touche "e"), cette touche "e" n'a pas d'effet, mais ça entraine la touche "a" puis "e"

en gros

Code : Tout sélectionner

if "on detecte la touche e" then ;elle n'a pas d'effet
Send("{a}")
Send("{e}")

else
sleep(100)
 
EndIf
Merci d'avance

Re: [..] Détection de touches, sans aucune conséquence

Posté : sam. 10 mai 2008 11:56
par Tlem
Pour commencer : http://autoitscript.fr/forum/viewtopic.php?f=20&t=595

Puis :
Le sujet à été traiter de nombreuses fois, donc merci de faire un minimum de recherches.
Voir : HotKeySet

Re: [..] Détection de touches, sans aucune conséquence

Posté : sam. 10 mai 2008 19:33
par jbnh
Rebonjour,

Désolé Tlem pour ne pas m'être plié aux règles du forum mais j'ai fait mon post en speed ce matin car je n'avais pas trop le temps

Voilà à quoi je suis arrivé apres quelques recherches:

Code : Tout sélectionner

Global $start 

HotKeySet("é", "Test")
HotKeySet("{ESC}", "MyExit")

While 1 
If $start Then 
 
Send("{F2}")
Send("{é}") 
Send("{F1}")
EndIf 
Sleep(20) 
WEnd 

Func Test()
$start = 1
EndFunc

Func MyExit()
    Exit 
EndFunc
Les problèmes, 1) il execute la boucle à l'infini alors que j'aimerais qu'il ne le fasse qu'une fois
2) il n'exécute pas le "é"

Merci d'avance.

Re: [..] Détection de touches, sans aucune conséquence

Posté : sam. 10 mai 2008 19:56
par genaille08
salut
alors je vais essayer de t'aider
alors apparemment tu cherche a ce que tu appui sur "é" donc "2", le script lui fasse "F1", "é", "F2"

donc pour cela tu fais

Code : Tout sélectionner

HotKeySet ( "é", "é" ) ; detection de l'appui de la touche é

Func é()
    Send ( "{F2} {é} {F1}" ) ; appui sur F2, é, F1
EndFunc

While 1
    sleep (100)
WEnd ; pour que le script ne se finisse jammais ( toujours a la fin )
par contre pour "myexit" c'est bon
je pense que tu n'a pas besoin de ta fonction "globale"
si ce n'était pas ta question merci de me détailler plus tes attentes

Re: [..] Détection de touches, sans aucune conséquence

Posté : sam. 10 mai 2008 20:23
par jbnh
Merci de ta réponse, genaille08...

...seulement voila,

le:

Code : Tout sélectionner

 Send ( "{F2} {é} {F1}" )
envoi aussi des espace, j'ai donc opté pour :

Code : Tout sélectionner

 Send ( "{F2}{é}{F1}" )
Malheureusement il n'execute pas la touche "é"

Ensuite aussi ai-je fait:

Code : Tout sélectionner

Send ("{F2}") 
Send ("{é}")
Send ("{F1}")
Sans réels résultats, car il ne fait que le F2

De plus il le fait a l'infini.

Merci d'avance.

Re: [..] Détection de touches, sans aucune conséquence

Posté : sam. 10 mai 2008 20:40
par genaille08
oui il faut que tu prenne une touche autre que F1 or je ne sais pas si pour ton application tu peux le faire

Code : Tout sélectionner

AutoItSetOption ( "SendKeyDownDelay" , 10 ) ; qui va faire que l'appui des touche va etre plus long ( modifie 10 a ta guise
HotKeySet ( "{é}", "fonction" ) ; detection de l'appui de la touche é

Func fonction()
    send ( "{f2}" )
    Send ( "é" )
    Send ( "{f1}" )
EndFunc

While 1
    sleep (100)
WEnd ; pour que le script ne se finisse jammais ( toujours a la fin )

Re: [..] Détection de touches, sans aucune conséquence

Posté : sam. 10 mai 2008 21:40
par Tlem
@jbnh Juste pour l'explication de pourquoi votre code boucle indéfiniment :

Dans la fonction Test(), vous dites que $start = 1.
Et dans la boucle principale, vous tester la condition de $start.
Comme $start=1 il fait donc la boucle If indéfiniment ...
Si vous vouliez exécuter le code une seule fois, alors avant de sortir de la boucle If, initialisez $start à 0.

Re: [..] Détection de touches, sans aucune conséquence

Posté : dim. 11 mai 2008 07:58
par jbnh
Bonjour à tous,

Voilà, en suivant vos conseils, à quoi je suis arrivé:

Code : Tout sélectionner

Global $start 
AutoItSetOption ( "SendKeyDownDelay" , 10 )
HotKeySet("§", "Test")
HotKeySet("{ESC}", "MyExit")


While 1 
If $start Then 
 
Send("{F2}")
Send("{§}") 
Send("{F1}")
$start = 0
EndIf 
Sleep(20) 

WEnd 

Func Test()
$start = 1
EndFunc

Func MyExit()
    Exit 
EndFunc
Le problème de la boucle infinie est résolu mais il ne fait pas toute la séquence, comme d'habitude, il fait que le f2.
Pourquoi? Je ne sais pas quoi faire.

Merci d'avance

Re: [..] Détection de touches, sans aucune conséquence

Posté : dim. 11 mai 2008 12:04
par genaille08
jbnh a écrit : If $start = 1 Then
je pense que ton erreur vient de la
je ne suis pas sur

Re: [..] Détection de touches, sans aucune conséquence

Posté : dim. 11 mai 2008 12:29
par tolf
Essaye

Code : Tout sélectionner

Send("{ASC 233}")
pour envoyer la lettre "é"

Re: [..] Détection de touches, sans aucune conséquence

Posté : dim. 11 mai 2008 12:38
par jbnh
genaille => je comprend pas

Tolf,

Code : Tout sélectionner

Send("{ASC 233}")
m'envoi un Ú

Pourtant j'ai vérifé , é est bien 233, pourquoi?

Re: [..] Détection de touches, sans aucune conséquence

Posté : dim. 11 mai 2008 12:41
par tolf
peut-être

Code : Tout sélectionner

Send("{ASC 0xE9}")
marche mieux (avec le code hexadécimal)

Re: [..] Détection de touches, sans aucune conséquence

Posté : dim. 11 mai 2008 12:52
par jbnh
Waw, ca à l'air de marcher aurais tu aussi le code hexadécimal pour le "2"? Ou alors, où puis je le trouver.

Merci encore.

Edit: Tout simplement:

Code : Tout sélectionner

Send("+{ASC 0xE9}")
Tout grand merci à Tolf, genaille et telm.[/size][/color]

Re: [..] Détection de touches, sans aucune conséquence

Posté : dim. 11 mai 2008 13:03
par tolf
jbnh a écrit :aurais tu aussi le code hexadécimal pour le "2"? Ou alors, où puis je le trouver
Il se trouve dans l'aide d'AutoIt : ici

Re: [R] Détection de touches, sans aucune conséquence

Posté : mar. 27 mai 2008 12:43
par cortx
Bonjour,

le fait d'appuyer sur é pour déclencher le scirpt, ne provoque pas l'écriture normal de la touche ?
Ca me parait surprennant tout de meme

Re: [R] Détection de touches, sans aucune conséquence

Posté : mar. 27 mai 2008 19:05
par jbnh
Normal, c'est un HotKeySet :

Code : Tout sélectionner

HotKeySet("§", "Test")

Re: [R] Détection de touches, sans aucune conséquence

Posté : ven. 20 juin 2008 21:08
par ani
:)

le é est bien défini en 233 mais en caractére

chr(233) renvoi é