AutoHotkey Community

It is currently May 27th, 2012, 12:38 pm

All times are UTC [ DST ]




Post new topic Reply to topic  [ 494 posts ]  Go to page Previous  1 ... 13, 14, 15, 16, 17, 18, 19 ... 33  Next
Author Message
 Post subject:
PostPosted: August 19th, 2010, 10:16 am 
Offline

Joined: May 18th, 2005, 11:03 am
Posts: 30
That change has worked for me, thank you.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: August 19th, 2010, 11:52 am 
Offline

Joined: August 28th, 2009, 3:00 pm
Posts: 275
Oh, you have another AHK script running, that explains it. Weirder things than that will happen if another script is running.

I think hugov's idea will work now that I enable/disable hotkeys when they aren't used; but to make sure hugov's idea didn't mess anything up with TypingAid, please try the following:

Type out a word you have in the list so the list appears, then type one more letter which causes the list to disappear.

IE... if my list is:
Amazing
Amazon

I type out "Amaze"

Which causes the list to disappear. Now hit "Tab" or "Right" (it MUST be enabled as an autocomplete key AND in the terminating character list). Then hit backspace 1x or 2x and see if the list pops back up. If it doesn't, then you are A-OK.

Thanks!


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: August 19th, 2010, 1:43 pm 
Offline

Joined: May 18th, 2005, 11:03 am
Posts: 30
Following your test above the list menu doesn't come back if there is a right arrow or tab press between typing the 'e' and the backspace.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: August 19th, 2010, 4:10 pm 
Offline

Joined: May 27th, 2007, 9:41 am
Posts: 4999
Works for me as well, 2.16 with the I added to the input line, type, autocomplete, backspace no listbox is shown.

_________________
AHK FAQ
TF : Text files & strings lib, TF Forum


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: August 19th, 2010, 4:16 pm 
Offline

Joined: August 28th, 2009, 3:00 pm
Posts: 275
I think that fix should be OK then. I probably need to clean up the code soon as there is a lot of code in there which is now bypassed due to the fact I disable/enable hotkeys. I'll look into putting that in.


Report this post
Top
 Profile  
Reply with quote  
 Post subject: great script but...
PostPosted: August 28th, 2010, 10:58 pm 
Offline

Joined: August 28th, 2010, 10:57 pm
Posts: 1
Hi great script, is there a way to add characters like {enter} to a word, so when i type word {enter} it will automatically write word with two new lines. ?


Report this post
Top
 Profile  
Reply with quote  
 Post subject: Re: great script but...
PostPosted: August 31st, 2010, 12:13 pm 
Offline

Joined: August 28th, 2009, 3:00 pm
Posts: 275
petividi wrote:
Hi great script, is there a way to add characters like {enter} to a word, so when i type word {enter} it will automatically write word with two new lines. ?


There is no support for this, and no planned support. You are welcome to try to modify the script to do it though.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 24th, 2010, 3:31 pm 
Offline

Joined: September 24th, 2010, 3:19 pm
Posts: 2
Location: Maryland
@Everyone:
Thank you for all the hard work you have put into this project. It really has turned out to be an outstanding application.


@Maniac:
I don't really have an issue, I just need some advice on how to modify the script to suit what I'm trying to do with it.

Ok, I'm using this script to fill in names only, from the wordlist.txt. However, if I start the name with a lowercase character, it leaves the name lowercase. I know it's because this is for auto-completion of words. But....

How do I modify this script to capitalize the first character? or replace what's in the text box with the selection i chose from the list? I really need it to replace, rather than complete.

Thanks in advance.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 24th, 2010, 4:48 pm 
Offline

Joined: August 28th, 2009, 3:00 pm
Posts: 275
Can I assume the names are capitalized in your wordlist? If so, just change the parameter "NoBackSpace" to "Off" in the Preferences.ini file :). In fact, this used to be the default behavior but people wanted it changed so the capitalization was not changed by default.

BTW, found some things missing in the features list (including the above) so I added them. I also updated the known issues and future features. It's been so long since I've had time to work on this I've started forgetting them, so I put them in the first post. I was able to work a little on integrating the GUI that hugov gave me a while ago, so hopefully I'll be able to spend a little more time on that.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 24th, 2010, 9:54 pm 
Offline

Joined: September 24th, 2010, 3:19 pm
Posts: 2
Location: Maryland
Thanks, Maniac. That worked exactly the way I wanted it to.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 24th, 2010, 10:31 pm 
Offline

Joined: August 28th, 2009, 3:00 pm
Posts: 275
Great :)


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: October 16th, 2010, 8:36 am 
Great tool!! It helps me a lot. Just wondering if you could modify it that it that it is context sensitive? For example it would be great if in different programs different wordlists would be active, so that only words appear that belong to the specific program. For that feature i would even dont miss autolearning, but maybe it could be implemented, that it will add learned words in the wordlist.txt that belongs to that window/program. And for all windows not included to be "special" would exist a standard wordlist.
What do you think?


Report this post
Top
  
Reply with quote  
 Post subject:
PostPosted: October 16th, 2010, 3:09 pm 
Offline

Joined: August 28th, 2009, 3:00 pm
Posts: 275
Thanks. I've thought of that, but I haven't yet thought out a good way to implement it. For the time being, I THINK you should be able to run multiple instances of TypingAid, just put each instance in its own folder. Then just define in the preferences when you want each instance to be enabled.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: October 28th, 2010, 5:20 am 
Offline

Joined: October 22nd, 2010, 2:03 pm
Posts: 4
Location: France
Hi

Using TypingAid and although it is excellent, I was dissatisfied because he does not propose possible words based on their frequency of use but in alphabetical order.
Also being newbe with AutoHotkey, I went back to v1.3 TypingAid to change it and meet my expectations.
The script below:
- Propose words based on their frequency of use,
- Frequency of use are updated each time you complete the word,
- Selecting a word among the proposals is carried out with the function key F1 to F10
- A word can be removed from the word base as you type a text by copying it to the clipboard and by F11,
- To use the normal function keys you must type Ctrl F1, F2 Ctrl ...
- A word can be added to the base with F12 after its seizure,
- A set of words can be added to the database by copying text to the clipboard, then Ctrl Shift A
- The base file known words can be set / reset with Ctrl Shift R

The display uses tooltip proposals. I would have preferred to do differently in order to change its format (font, size ...) but I do not know enough AutoHotkey also if someone could advise me, I'm interested
Code:
;TypingAide v1.3 Mod RB_Boulay
;
;Basé sur TypingAid V1.3 de
;                                  - Jordi S
;                               Heavily modified by:
;                                  - Maniac
;                               modified by:
;                                  - Asaptrad
;                                  - Artwinauto.com
;
; Ce mod gére la fréquence d'utilisation des mots utilisés par le scipteur --> les propositions sont classées sur la fréquence d'utilisation des mots au lieu d'un classement alphabétique.
; La suppression d'un mot de la liste des mots enregsitrée se fait directement dans le texte en cours de saisie en le copiant et en faisant F12.
; L'ajout d'un mot en cours de saisie est réalisé par F11.
; Il est possible d'ajouter un ensemble de mots en copiant un texte dans le clip board puis Ctrl shift A.
; Le fihier Wordlistbase.txt est initialisé/réinitialisé avec Ctrl Shift R.
; Les mots ajoutés à la base ne peuvent contenir que des caractères alphabétiques.
; Des hottkey supplémentaire on été ajoutées pour manipuler les fenètres et faire un double clic gauche.
; Ctrl Shift ShiftLock met fin au script.
;___________________________________________


;--------------------------------------------------------------------------------------------------------------   
; initialisation et Définition des variables
;--------------------------------------------------------------------------------------------------------------
#SingleInstance force

WinGetPos,,,,TrayHeight,ahk_class Shell_TrayWnd,,, ; This line is only needed once.

Width:=A_ScreenWidth
Height:=A_ScreenHeight

Fenetre_Aide =
ETitle =                                                            ; si non blanc limite l'utilisation de TypingAid au fenêtre dont le titre contient la chaîne de caractère de ETitle
Longueur_Mini_Mot_Appris = 5                                        ; Longueur mini des mots pouvant être ajoutés à la liste
Longueur_Mini = 3                                                   ; Nombre de lettres saisies avant de faire des propositions
Mot_Saisi=                                                          ; suite des caractères saisi                                                       
key=                                                                ; valeur de 0 à 10 associée au hotkey de sélection d'une proposition
Efface_Mot_Saisi=1                                                  ; flag pour indiquer s'il faut effecer Mot_Saisi lors de la remise à zéro de la sasie (sub : RAZ_Saisie)
MouseX = 0                                                          ; Position x de la sourie
MouseY = 0                                                          ; Position Y de la sourie
motsec =                                                            ; copie du mot (Mot_Saisi)
motenvoye =                                                         ; Copie du Mot envoyé à la fenêtre active ou mot extrait d'un texte utilisé pour mise à jour fréquenc et ajout de mots
Envoi=                                                              ; Mot envoyé à la fenêtre active
CR:=Chr(13)                                                         ; retour chariot
LF:=chr(10)                                                         ; line feed
espace:=chr(32)                                                     ; espace
apostrophe:=chr(39)
Frequence_Initiale=999999                                           ; fréquence d'un mot par défaut, le tri étant fait de manière croissante
Frequence=                                                          ; Fréquence d'utilisation d'un mot le tri de la wordlistbase.txt se faisant en ordre croissant, la fréquence d'utilisation est d'autant plus élévée que la valeur de la variable est faible. La Valuer mini de la frequence est de 100000 pour conserver la structure du fichier.
Nouvelle_Frequence=                                                  ; Frequence + 1
liste=                                                              ;contenu de wordlistbase
position=                                                           ;position du début d'un mot lors de la recherche dans la liste de mots
Gosub,RAZ_Saisie                                                    ; clean vars from start

CoordMode, ToolTip, Relative
CoordMode, Mouse, Relative
AutoTrim, Off
SetTimer, Winchanged, 100

;-------------------------------------------------------------------------------------------------------------------
;Tri de la liste des mots classés en fréquence
;---------------------------------------------------------------------------------------------------------------------

FileRead, liste, %A_ScriptDir%\Wordlistbase.txt                     ;met les motes de la liste de base (avec fréquence ) dans liste

    Sort, liste                                                     ;tri la liste en décroissant sur la fréquence
    FileDelete, %A_ScriptDir%\Wordlistbase.txt
    FileAppend, %liste%, %A_ScriptDir%\wordlistbase.txt             ;Sauvegarde la liste triée

;--------------------------------------------------------------------------------------------------------------
; Saisie des caracteres et affichage propositions
;--------------------------------------------------------------------------------------------------------------
Loop                                                
{
;Enregistre l'id de la fenêtre active et vérifie si elle est une fenêtre d'une application autorisée
   WinGetActiveTitle, ATitle                                        ; ATitle nom de la fenêtre active
   WinGet, A_id, ID, %ATitle%                                       ; A_id N° d'identification de la fenêtre active
   IfNotInString, ATitle, %ETitle%                                  ; si la fenêtre n'est pas celle d'une application autorisée avec ETitle alors réinitialise le mot en cours de saisie
   {
      ToolTip
      Mot_Saisi=
      gosub, RAZ_Saisie                                 ;réinitialise la liste de propositions
      Continue                                       ;Reprends la boucle au début
   }

;saisie d'un caractère à la fois variable chr L1 option pour voir le caractère à l'écran V pour caractère de fin de saisie donné par la liste qui suit
   ;Input, Caractere, L1 V,{enter}{space}.;`:¿?¡!(){}{}}{bs}{{}{esc}{tab}{Home}{End}{PgUp}{PdDn}{Up}{Dn}{Left}{Right}{bs}
    Input, Caractere, L1 V,{enter}{space}.;`:¿?¡!(){bs}{{}{esc}{tab}{Home}{End}{PgUp}{PdDn}{Up}{Dn}{Left}{Right}
   EndKey = %errorlevel%                                  ; EndKey contient le nom de la touche de fin pressée Si une touche différente est pressée alors contient MAX
   
;Vérifie a chaque saisie que la fenêtre active est la même que celle de la saisie précédente si non réinitialise le mot en cours de saisie
   WinGetActiveTitle, ATitle                                       ; ATitle nom de la fenêtre active
   WinGet, A_id2, ID, %ATitle%                                     ; A_id2 N° d'identification de la fenêtre active
   IfNotEqual, A_id, %A_id2%                                       ; si la fenêtre A_id2 n'est pas celle dans laquelle a débutée la saisie A_id fait un reset des variables
   {
      gosub, RAZ_Saisie                                 ;réinitialise la liste de propositions
      Mot_Saisi= %Caractere%                              ;Commence un nouveau mot dans la nouvelle fenêtre
      Continue                                       ;Reprends la boucle au début
   }
 
 ;vérifie la position du caret si le caret a bougé réinitialise le mot en cours de saisie
    ifequal, OldCaretY,
   {
      OldCaretY = HCaretY()
   }
   ifnotequal, OldCaretY, HCaretY()
   {
      gosub, RAZ_Saisie                                 ;réinitialise la liste de propositions
      Mot_Saisi= %Caractere%                              ;Commence un nouveau mot dans la nouvelle fenêtre   
      Continue                                       ;Reprends la boucle au début
   }
   OldCaretY=HCaretY()
 
;Test le caractere de fin de mot
   ifequal, EndKey, Endkey:BackSpace                               ; test backspace
   {
      StringLen, Longueur, Mot_Saisi
      IfNotEqual, Longueur, 0
      {
         ifequal, Longueur, 1   
      {
            Gosub,Raz_Saisie
      }
      else
      {
         StringTrimRight, Mot_Saisi,Mot_Saisi, 1                 ; supprime la dernière lettre du mot en cour de saisie si backspace
      }     
      }
   }
   else ifequal, EndKey, Max
   {
      Setenv, Mot_Saisi, %Mot_Saisi%%Caractere%                   ; ajoute la lettre valide au mot qui se construit
        StringLower, Mot_Saisi, Mot_Saisi                           ; Force en minuscule
        Motsec:=Mot_Saisi

   }
   else gosub,RAZ_Saisie

;ne fait pas la recherche du mot dans la liste de mot tant que la saisie en cours n'a pas le nombre de caractere voulu
   StringLen, Longueur, Mot_Saisi
   If (Longueur<Longueur_Mini)
   {
      tooltip
      Continue                                       ;Reprends la boucle au début
   }

;valide le mot avant de rechercher dans la liste il ne doit y avoir que des caractères alphabétiques
   OK=0
   If Longeur=0
   {
      Continue
   }
   Else
   {
      loop, %Longueur%                                  ;test chaque caractere du mot saisi
      {
         StringMid,Caractere, Mot_Saisi,%A_Index%,1
         asccar:=asc(Caractere)
         if (((asccar>96 and asccar<123) or(asccar=156) or (asccar=224)or (asccar=225)or (asccar>230 and asccar<236) or (asccar=238) or (asccar=239)or (asccar=244)or (asccar=246)or (asccar=249)or (asccar=251)or (asccar=252)) and OK<>2)
         {
            OK=1                                     ; le caractére est alphabétique
         }
         Else
         {
            OK=2                                    ; le caractére est numérique
         }
      }   
      If(OK=2)                                       ; ne fait pas la recherche si il y a un caractére numérique mais conserve Mot_Saisi pour pouvoir le corriger avec Backspace
      {
         ToolTip                                       ;réinitialise la liste de propositions
         Continue                                    ;Reprends la boucle au début
      }
   }   

; recherche le mot dans la liste.
   FileRead, liste,%A_ScriptDir%\wordlistbase.txt                ;mets le fichier de mot dans lal variable liste
   Index_ToolTip=0                                       ;index du mot trouvé
   Mot_Trouve=
   Liste_Trouve=
   Index_Tooltip=0
   Loop
   {
      IfEqual Index_tooltip, 10
      {
         Break
      }
      StringGetPos, Position, liste, %Mot_Saisi%,L%A_Index%      ;recherche les occurences du mot saisi
      Caractere_Recherche:=SubStr(liste,Position,1)               ;lit le code ASCII du premier caractère trouvé
      asccar:=asc(Caractere_Recherche)
         if (Position > 0)                              ;si 1 mot est trouvé
         {
            if (asccar > 47 and asccar < 60)               ;teste le caractère pour faire la différence entre automobile et mobile il doit être numérique
            {
               Index_ToolTip+=1                         ; ajoute 1 à l'index pour la position dans le tooltip
               StringGetPos, Position2, liste, %CR%%LF%, L, %Position%
               Mot_Trouve:=SubStr(liste,Position+1,Position2-Position)                        ; lit le mot trouvé
               Liste_Trouve:= Liste_Trouve . Mod(Index_ToolTip,10) . ". " . Mot_Trouve . "`n"   ;Constitue la liste de propositions
                    Mot_Proposition%Index_Tooltip%:=Mot_Trouve      ;tableau des mots trouvés
            }
            Else
            {
               Continue                               ; le mot trouvé est une partie de mot, il n'est pas pris en compte. on redémarre la boucle
         }
         }
         Else
         {
         Break                                        ; pas de mot trouvé on sort de la boucle
         }
   }   

;Si aucun mot n'a été trouvé dans la liste réinitialise la boucle
   IfEqual, Liste_Trouve,                                          
   {
     Efface_Mot_Saisi=0
     gosub, RAZ_Saisie
     Continue
   }

; Affiche la liste de propositions
   StringTrimRight, Liste_Trouve, Liste_Trouve, 1
   WinGetActiveTitle, ATitle
   WinGetPos, , PosY, , SizeY, %ATitle%
   MaxY := PosY + SizeY
   ToolTipSizeY := (Index_ToolTip * 10)
   ToolTipPosY := HCaretY()+24
   if ((ToolTipSizeY + ToolTipPosY) > MaxY)
   {
      ToolTipPosY := (HCaretY() - 14 - ToolTipSizeY)
   }
   IfNotEqual, Mot_Saisi,,ToolTip, %Liste_Trouve%, HCaretX(), %ToolTipPosY%
}

;--------------------------------------------------------------------------------------------------------------
; RAZ des variables
;--------------------------------------------------------------------------------------------------------------
;
RAZ_Saisie:
   Ifequal,Efface_Mot_Saisi,1
   {
      Mot_Saisi=
   }
   
    loop, 10
    {
      Mot_Proposition%A_Index%=
   }

   ToolTip                                              ;efface les proposition
   Caractere=
   Liste_Trouve=
    Envoi=
   Efface_Mot_Saisi=1
   OldCaretY=
   Return


;----------------------------------------------------------------------------
;Regarde quelle est la fenêtre active
;----------------------------------------------------------------------------
Winchanged:
   WinGetActiveTitle, ATitle
   WinGet, A_id3, ID, %ATitle%
   IfNotEqual, A_id, %A_id3%
   {
      ToolTip ,
   }
   else                                              ; la fenêtre n'a pas changée les position du caret sont enregistrée et le tool tip est effacé si le caret à changé de place
   {
      IfInString, ATitle, %ETitle%
      {
         IfNotEqual, OldCaretY,
         {
         IfNotEqual, OldCaretY, HCaretY()
           {
             ToolTip,
           }
         }
      }
   }
   Return
   
   
;--------------------------------------------------------------------------------------------------------------   
; Affectation de la touche pressée pour la sélection
;--------------------------------------------------------------------------------------------------------------

$F1::
key=1
Gosub, Valide_envoi
Return

^$F1::
Send,{F1}
return

$F2::
key=2
Gosub, Valide_envoi
Return

^$F2::
Send,{F2}
return

$F3::
key=3
Gosub, Valide_envoi
Return

^$F3::
Send,{F3}
return

$F4::
key=4
Gosub, Valide_envoi
Return

^$F4::
Send,{F4}
return

$F5::
key=5
Gosub, Valide_envoi
Return

^$F5::
Send,{F5}
return

$F6::
key=6
Gosub, Valide_envoi
Return

^$F6::
Send,{F6}
return

$F7::
key=7
Gosub, Valide_envoi
Return

^$F7::
Send,{F7}
return

$F8::
key=8
Gosub, Valide_envoi
Return

^$F8::
Send,{F8}
return

$F9::
key=9
Gosub, Valide_envoi
Return

^$F9::
Send,{F9}
return

$F10::
key=10
Gosub, Valide_envoi
Return

^$F10::
Send,{F10}
return

$F11::
Gosub Ajoute_Mot
Return

^$F11::
Send,{F11}
return

$F12::
Gosub Supprime_Mot
return

^$F12::
Send,{F12}
return


^+A::                                                                             ; Mise à jour de wordlistbase.txt à partir d'un texte copié dans le clipboard
gosub MAJ_avec_Texte
return

$^+D::                                                                            ; Lance Dicoverb.exe
Run,%A_ScriptDir%\Applications associees\Dicoverb.exe
return

$^+E::                                                                            ; Lance EditePadLite.exe
Run,%A_ScriptDir%\Applications associees\\EditPadLite\EditPadLite.exe
Return

$^+R::                                                                           ; Réinitialise le fichier wordlistbase
Gosub Reinit_Wordlistebase
Return
;--------------------------------------------------------------------------------------------------------
; mets à jour la fréquence des mots saisis
;--------------------------------------------------------------------------------------------------------
Maj_Frequence:

   FileRead, liste,%A_ScriptDir%\wordlistbase.txt
   Position = 0
   StringGetPos, Position, liste, %motenvoye%%CR%%LF%              ;Cherche dans la liste la position du mot recherché avec le retour chariot pour faire la différence entre auto et automobile
   if (Position>0)
   {
      cpos:=asc(SubStr(liste,Position,1))                          ; teste le caractère pour faire la différence entre automobile et mobile si pas numérique alors continuer la recherche
      if (cpos > 47 And cpos < 60)
      {
         Position-=5                                               ; défini la position de la fréquence du mot trouvé
         Frequence:=SubStr(liste,Position,6)
         Nouvelle_Frequence:=Frequence-1
         if (Nouvelle_Frequence<100000)                            ;la valeur mini dans le fichier doit être de 100000 pour conserver la structure et ne pas avoir de problèmes avec la lecture de la fréquence
         {
            Nouvelle_Frequence=100000
         }
         ancien=%Frequence%%motenvoye%
         nouveau=%Nouvelle_Frequence%%motenvoye%
         StringReplace,liste, liste, %ancien%,%nouveau%
      }
   }

   Sort, liste                                                      ; tri la liste en décroissant sur la fréquence
   FileDelete, %A_ScriptDir%\Wordlistbase.txt                       ; recré le fichier des mots de base
   FileAppend,%liste%, %A_ScriptDir%\wordlistbase.txt               ; Sauvegarde Wordlist.base.txt

return


;-------------------------------------------------
; Ajoute un mot à worliste de base
;-------------------------------------------------
Ajoute_Mot:

motenvoye = %motsec%                                                ; Recopie le derlier mot saisi
motsec =                                                            ; efface la sécu

; test la longuer du mot
if StrLen(motenvoye) < Longueur_Mini_Mot_Appris                     ; les mots appris doivent avoir une longueur mini
   {
      ToolTip, "%motenvoye%" est trop court !, A_CaretX, A_CaretY + 20
      Sleep, 2000
      motenvoye =
      Return
   }

; Cherche le mot dans la liste et positionne le flag
found = 0
Loop, Read, %A_ScriptDir%\wordlistBase.txt                          ; vérifie que le mot existe
   {
       If motenvoye = %A_LoopReadLine%
       found = 1
   }

; Ajoute le mot à la fin de la liste si pas trouvé   
If found = 0                                                        ; si le mot n'existe pas alors il est ajouté à la fin de la liste
   {
      Longueur:=StrLen(motenvoye)
      loop, %Longueur%                                    ;test chaque caractere du mot saisi
      {
         StringMid,Caractere, motenvoye,%A_Index%,1
         asccar:=asc(Caractere)
         if (((asccar>96 and asccar<123) or(asccar=156) or (asccar=224)or (asccar=225)or (asccar>230 and asccar<236) or (asccar=238) or (asccar=239)or (asccar=244)or (asccar=246)or (asccar=249)or (asccar=251)or (asccar=252))and OK<>2)
         {
         OK=1                                       ; le caractére est alphabétique
         }
         Else
         {
         OK=2                                       ; le caractére est numérique
         }
      }   
      If(OK=2)                                          ; ne fait pas la recherche si il y a un caractére numérique mais conserve Mot_Saisi pour pouvoir le corriger avec Backspace
      {
         ToolTip Le mot contient des caractères non acceptables !                                                             ;réinitialise la liste de propositions
         Sleep 2000                                       ;Reprends la boucle au début
      }
      else                                                          ;ajoute le mot à wordlistebase.txt
      {
         StringLower,motenvoye,motenvoye                            ; force le mot en minuscule
         frequence:=Frequence_Initiale-1
         FileAppend, %Frequence_Initiale%%motenvoye%%CR%%LF%, %A_ScriptDir%\wordlistbase.txt    ; la fréquence initiale est de 1 (999999-999998)
         
         ToolTip, "%motenvoye%" a été ajouté !, A_CaretX, A_CaretY + 20
         sleep 1000
            IfNotEqual, EndKey, Endkey:Space
            {
               SendInput, {space}                                   ; ajoute un espace après le mot saisi si le mot a été envoyé . Pour un mot nouveau, l'espace est envoyé après son ajout dans la liste.
               Gosub RAZ_Saisie
           }                                                   
   
      }
   }

; Dit que le mot existe déja
   Else
   {
      ToolTip, "%motenvoye%" existe déja !, A_CaretX, A_CaretY + 20 ; Si le mot existe l'affiche 
      Sleep, 1000
      motenvoye =
   }
Return


;--------------------------------------------------------------------------------------------------------------
; Suprime de la liste le mot mis dans le clipboard
;--------------------------------------------------------------------------------------------------------------
Supprime_Mot:                                                       

   motenvoye:=clipboard                                             ; Recopie le derlier mot saisi
   StringLower,motenvoye,motenvoye

   FileRead, liste,%A_ScriptDir%\wordlistbase.txt
   Position = 0
   loop
   {
   StringGetPos, Position, liste, %motenvoye%%CR%%LF%,L%A_Index%    ;Cherche dans la liste la position du mot recherché avec le retour chariot pour faire la différence entre auto et automobile
      if (Position>0)
      {
         cpos:=asc(SubStr(liste,Position,1))                        ; teste le caractère pour faire la différence entre automobile et mobile si pas numérique alors continuer la recherche
         if (cpos > 47 And cpos < 60)
         {
         Position-=7                                                ; défini la position de la fréquence du mot trouvé 7 caractères à gauche pour prendre en compte le CR LF
         Frequence:=SubStr(liste,Position,8)
         ;MsgBox attention
         ancien=%Frequence%%motenvoye%
         nouveau=
         StringReplace,liste, liste, %ancien%,%nouveau%
         ToolTip, "%motenvoye%" a été supprimé !, A_CaretX, A_CaretY + 20
         Sleep, 1000
         Sort, liste
         FileDelete, %A_ScriptDir%\Wordlistbase.txt                 ; recré le fichier des mots de base
         FileAppend,%liste%, %A_ScriptDir%\wordlistbase.txt
         break
         }
      }
      Else
      {
      Msgbox Ce mot n'est pas dans la liste !
      Break
      }
   }
return
     
     
;--------------------------------------------------------------------------------------------------------------
;Saisie la position du pointeur si clique gauche
;--------------------------------------------------------------------------------------------------------------
~LButton::
   MouseGetPos, MouseX, MouseY
   Return


;--------------------------------------------------------------------------------------------------------------
; Envoit a l'application le mot sélectionné et le sauvegarde dans motenvoye pour mise a jour de la fréquence
;--------------------------------------------------------------------------------------------------------------
Valide_envoi:

;Vérifie que la fenêtre active est la même sinon remets la sasie à zéro
   WinGetActiveTitle, ATitle
   WinGet, A_id2, ID, %ATitle%
   IfNotEqual, A_id, %A_id2%
      {
         if key =10
            key = 0
         SendInput,%Key%
         Gosub,Raz_Saisie
         Return
      }
;Vérifie que le caret est à la même position sinon remets la sasie à zéro     
   IfNotEqual, OldCaretY, HCaretY()
      {
         if key =10
            key = 0
         SendInput,%Key%
         Gosub,Raz_Saisie
         Return
      }

;Vérifie que la saisie en cours n'est pas vide
   if Mot_Saisi=                                                    ; Le mot saisi ne doit pas être vide !1
      {
         if key =10
            key = 0
         SendInput,%Key%
         Setenv, Mot_Saisi, %Key%
         Efface_Mot_Saisi=0
         Gosub,Raz_Saisie
         Return
      }

;Vérifie que l'on envoie pas un mot vide
   ifequal, Mot_Proposition%key%,                                   ;Vérifie que le mot pour la proposition choisie n'est pas vide
      {
         if key =10
            key = 0
         SendInput,%Key%
         Setenv, Mot_Saisi, %Mot_Saisi%%Key%
         Efface_Mot_Saisi=0
         Gosub,Raz_Saisie
         Return
      }

; Envoi le mot sélectionné à la fenêtre active.
   if (key =0)
      key = 10
   StringLen, len, Mot_Saisi
   Envoi:= SubStr(Mot_Proposition%key%, len+1)
   Clipboard =  %Envoi%
   SendInput,^v
   SendInput, {space}                                                ;ajoute un espace
   motenvoye=%motsec%%Envoi%                                         ;sauvegarde le mot envoyé première partie saisie = motsec  fin envoyée dans le clipboard
   Gosub RAZ_Saisie

; vers maj fréquence
   StringLower,motenvoye,motenvoye                                  ;force le mot en minuscule
   Gosub, Maj_Frequence
   Return

;-------------------------------------------------------------------------------------------
; mise à jour de la liste de base wordlistbase à partir d'un texte copié dans le clipboard
;-------------------------------------------------------------------------------------------

MAJ_avec_Texte:
texte:=Clipboard
lgtexte:=StrLen(texte)
if (lgtexte<Longueur_Mini_Mot_Appris)
   {
      msgbox Le presse papier ne contient pas un mot de longueur suffisante !
      return
   }
;msgbox %texte%
StringLower,texte,texte                                             ;mets tout en minuscule

;enlève de liste les carcatères non souhaités .,;:/§?%*$£¤=+}°)]
StringReplace,texte, texte, %CR%%LF%,%espace%%CR%%LF%,All           ; ajoute un espace devant les retour chariot
StringReplace,texte, texte, %CR%%LF%,,All                           ; supprime tous les retour chariot en laissant les espaces ajoutés
StringReplace,texte, texte, %apostrophe%,%espace%,All               ; supprime toutes les apostrophes

gosub Supprime_Cara_Non_Alpha

;msgbox %texte%

FileRead, liste,%A_ScriptDir%\wordlistbase.txt                      ;lit la liste de mots de base pour pouvoir modifier la fréquence ou ajouter un mot
FileDelete, %A_ScriptDir%\wordtemp.txt                              ; efface le fihier wordtemp.txt qui contient les mots à traiter
FileAppend, %texte%, %A_ScriptDir%\wordtemp.txt                     ;Sauvegarde les mot à ajouter

Loop, read, %A_ScriptDir%\wordtemp.txt                              ;lit chacun des mots
{
   lgmot:=strlen(A_Loopreadline)
   if (lgmot>Longueur_Mini_Mot_Appris-1)                            ; Les ajouts et la mise à jour des fréquences ne se font qui si le mot est de longueur supérieure à learnword
   {
      motenvoye:=A_LoopReadLine

; mets à jour la fréquence des mots saisis
      Position = 0
      Loop
      {
         StringGetPos, Position, liste, %motenvoye%%CR%%LF%, L%A_Index%  ;Cherche dans la liste la position du mot recherché avec le retour chariot pour faire la différence entre auto et automobile
         if (Position>0)
         {
            cpos:=asc(SubStr(liste,Position,1))                     ; teste le caractère pour faire la différence entre automobile et mobile si pas numérique alors continuer la recherche
            if (cpos > 47 And cpos < 60)
            {
               Position-=5                                          ; défini la position de la fréquence du mot trouvé
               Frequence:=SubStr(liste,Position,6)
               Nouvelle_Frequence:=Frequence-1
               if (Nouvelle_Frequence<100000)
               {
                  Nouvelle_Frequence=100000
               }
               ancien=%Frequence%%motenvoye%
               nouveau=%Nouvelle_Frequence%%motenvoye%
               StringReplace,liste, liste, %ancien%,%nouveau%       ;remplace le mot avec sa nouvelle fréquence
               Break
            }
         }
         Else
         {
            frequence:=Frequence_Initiale
            liste=%liste%%frequence%%motenvoye%%CR%%LF%             ; ajoute le mot nouveau avec une fréquence de 1
            Break
         }
      }
   }
}

   Sort, liste                                                      ;tri la liste en décroissant sur la fréquence
   FileDelete, %A_ScriptDir%\Wordlistbase.txt                       ; recré le fichier des mots de base
   FileAppend,%liste%, %A_ScriptDir%\wordlistbase.txt
   FileRead, MAJ_Realise, %A_ScriptDir%\wordtemp.txt
   Msgbox Les mots suivants ont été mis à jour : %Maj_Realise%
   FileDelete, %A_ScriptDir%\wordtemp.txt                          ; efface le fihier wordtemp.txt qui contient les mots à traiter
 
return

;--------------------------------------------------------------------------------------------------------------
; Suprime les caractères non alphabétique
;--------------------------------------------------------------------------------------------------------------
Supprime_Cara_Non_Alpha:
 
  texte1=
   
; remplace les caractères non alphabétique par des espaces
   loop, %lgtexte%
      {
         StringMid,caractere, texte,%A_Index%,1
         asccar:=asc(caractere)
         if ((asccar>96 and asccar<123) or(asccar=156) or (asccar=224)or (asccar=225)or (asccar>230 and asccar<236) or (asccar=238)or(asccar=239)or (asccar=244)or (asccar=246)or (asccar=249)or (asccar=251)or (asccar=252))                                                                ;ne garde que les caractères alphabétique
            {
               ;on garde le caractère                               ;remplace par espace les non alaphabétique
            }
            Else
            {
               caractere:=espace
            }
         texte1 = %texte1%%caractere%                               ; cumul les lettres et espace
      }
   
; supprime les espaces en doubles
   texte=
   lgtexte1:=StrLen(texte1)
   loop, %lgtexte1%
   {
      poscar:=A_Index
      poscarG:=A_index-1
      StringMid,caractere, texte1,%poscar%,1
      StringMid,caractereG, texte1,%poscarG%,1
      asccar:=asc(caractere)
      asccarG:=asc(caractereG)
      if (asccar=32 And asccarG=32)
      {
         caractere=
      }
      texte = %texte%%caractere%
   }

; Transforme les espace en retour chariot et line feed
   StringReplace,texte, texte, %espace%,%CR%%LF%,All
   
return

;----------------------------------------------------------------------------
; Position du caret
;----------------------------------------------------------------------------
   HCaretX()
   {
      global
      WinGetPos, HelperX,,,, ahk_id %Fenetre_Aide%
      WinGetPos, X,,,, A
      if HelperX !=
      {
         if X !=
         {
            return HelperX - X
         }
      }
      if A_CaretX < 14
      {
         if MouseX != 0
         {
            return MouseX
         }
      }
      return A_CaretX
   }

   HCaretY()
   {
      global
      WinGetPos,,HelperY,,, ahk_id %Fenetre_Aide%
      WinGetPos,, Y,,, A
      if HelperY !=
      {
         if Y !=
         {
            return HelperY - Y
         }
      }
      if A_CaretX < 14
      {
         if MouseY != 0
         {
            return MouseY + 20
         }
      }
      return A_CaretY
   }


;----------------------------------------------------------------------------------------
;Fenetre d'aide
;----------------------------------------------------------------------------------------
^,:: ; ctrl et , pour faire apparaître la fenêtre helper
Gui, +Toolwindow
Gui, Add, Text,,Touches de fonction relatives au texte
Gui, Add, Text,,F1 a F10 Pour autocompléter un des mots suggérés
Gui, Add, Text,,F11 Pour ajouter à la liste le dernier mot saisi au clavier
Gui, Add, Text,,F12 Pour effacer un mot que l'on aura préalablement copié dans le presse papier
Gui, Add, Text,,Ctrl F1 a Ctrl F12 pour obtenir le comportement normal des touches de fonction
Gui, Add, Text,,Ctrl Shift A Pour ajouter à la liste l'ensemble des mots d'un texte préalablement copié dans le presse papier.
Gui, Add, Text,, 1 - Seuls les caractères alphabétiques sont conservés
Gui, Add, Text,, 2 - Seuls les mots de longueur supérieure à 4 caractères sont pris en compte.
Gui, Add, Text,,Ctrl Shift R Pour réinitialiser la liste de base avec quelques 1400 mots les plus fréquents de la langue Française : tous les ajouts et les mises à jour des fréquences d'utilisaton des mots seront perdues !
Gui, Add, Text,,
Gui, Add, Text,,Remarques :
Gui, Add, Text,, La fréquence d'utilisation d'un mot est mise à jour chaque fois qu'il est envoyé au texte avec les touche F1 à F10
Gui, Add, Text,, Lorsque la liste de base des mots utilisés et mise à jour à partir d'un texte, les mots inconnus sont ajoutés à la liste.
Gui, Add, Text,, La fréquence d'utilisation de chacun des mots est mise à jour en regard de leur occurence dans le texte.
Gui, Add, Text,,
Gui, Add, Text,, Touches de lancement d'application
Gui, Add, Text,,Si l'application Dicoverb (conjugueur) est placée dans le répertoire "Applications associees" du répertoire contenant le script elle est lancée avec Ctrl Shift D
Gui, Add, Text,,Si l'application EditPadLite (Texteur) est placée dans le répertoire "Applications associees\EditPadLite" du répertoire contenant le script elle est lancée avec Ctrl Shift E

Gui, Add, Text,, Touches relatives aux fenêtres
Gui, Add, Text,,Win et Pavé numérique 4 Déplace et formate la fenêtre active 1/2 écran à gauche
Gui, Add, Text,,Win et Pavé numérique 6 Déplace et formate la fenêtre active 1/2 écran à droite
Gui, Add, Text,,Win et P5avé numérique 8 Déplace et formate la fenêtre active 1/2 écran en haut
Gui, Add, Text,,Win et Pavé numérique 2 Déplace et formate la fenêtre active 1/2 écran en bas
Gui, Add, Text,,Win et Pavé numérique 7 Déplace et formate la fenêtre active 1/4 écran en haut à gauche
Gui, Add, Text,,Win et Pavé numérique 9 Déplace et formate la fenêtre active 1/4 écran en haut à droite
Gui, Add, Text,,Win et Pavé numérique 3 Déplace et formate la fenêtre active 1/4 écran en bas à droite
Gui, Add, Text,,Win et Pavé numérique 1 Déplace et formate la fenêtre active 1/4 écran en bas à gauche
Gui, Add, Text,,Win et Pavé numérique 5 Déplace la fenêtre active au centre en conservant sa taille
Gui, Add, Text,,Win et Entrée Maximalise la fenêtre active
Gui, Add, Text,,Alt Gauche et clique droit appel Alt Tab aec rotation à droite
Gui, Add, Text,,Alt Gauche et clique gauche appel Alt Tab aec rotation à gauche
Gui, Add, Text,,Win clic gauche envoie un double clic.

Gui, Add, Text,,Ctrl Shift CapsLock Quit le script AutoHotKey

Gui, Show
WinGet, Helper_id, ID,,Tooltip Salut ;appears here
WinSet, AlwaysOnTop, On, ahk_id %Fenetre_Aide%
return


 ;--------------------------------------------------------------------------------------------------------------
 ; commande de positionnement des fenêtre
 ;--------------------------------------------------------------------------------------------------------------

#Numpad0::                                                                      ;minimise la fenetre active
   WinMinimize, A
return

#Numpad1::                                                                      ;1/4 écran bas gauche
   WinMove,A,,0,Height/2-TrayHeight/2,Width/2,Height/2-TrayHeight/2
Return

#Numpad2::                                                                      ;1/2 écran bas
   WinMove,A,,0,Height/2-TrayHeight/2,Width,Height/2-TrayHeight/2
Return

#Numpad3::                                                                      ;1/4 écran bas droite
   WinMove,A,,Width/2,Height/2-TrayHeight/2,Width/2,Height/2-TrayHeight/2
Return

#Numpad4::                                                                      ;1/2 écran droite
   WinMove,A,,0,0,Width/2,Height-TrayHeight
Return

#Numpad5::                                                                      ;Taille fenêtre inchangée, fenêtre mise au centre de l'écran
   WinGetActiveStats, Title, W, H, X, Y
   WinMove , A,,(Width-W)/2,(Height-H-TrayHeight)/2,W,H
Return

#Numpad6::                                                                      ;1/2 écran gauche
   WinMove,A,,Width/2,0,Width/2,Height-TrayHeight
Return

#Numpad7::                                                                      ;1/4 écran haut gauche
   WinMove,A,,0,0,Width/2,Height/2-TrayHeight/2
Return

#Numpad8::                                                                      ;1/2 écran haut
   WinMove,A,,0,0,Width,Height/2-TrayHeight/2 ; put the Active window to top
Return

#Numpad9::                                                                      ;1/4 écran haut droite
   WinMove,A,,Width/2,0,Width/2,Height/2-TrayHeight/2
Return

#NumpadEnter::                                                                  ;fenêtre plein écran
WinMove,A,,0,0,Width,Height-TrayHeight
Return

; alt tab avec atl gauche et bouton
LAlt & RButton::AltTab
LAlt & LButton::ShiftAltTab

; Arrêt du script avec ctrl shift capslock
$^+CapsLock::
ExitApp
return

; double click avec win et lbutton
#LButton::
Click 2
Return


;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;Recré le fichier wordlistbase.txt avec une liste ordonnée selon la fréquence 'standard' d'utilisation des mots
;-------------------------------------------------------------------------------------------------------------------------------------------------------------

Reinit_Wordlistebase:
msgbox Attention
FileDelete, %A_ScriptDir%\wordlistbase.txt
Premier_Enregistrement=100000aaaaaaaaaaaaaa
Premier_Enregistrement=%Premier_Enregistrement%%CR%%LF%
FileAppend, %Premier_Enregistrement%, %A_ScriptDir%\wordlistbase.txt    ; cré le premier enregistrement en sommet de liste pour éviter les problème d'insertion de CRLF lors de la suppression du premier mot
gosub Mot_Base1
clipboard:=Liste_mots_base1
gosub MAJ_avec_Texte

gosub Mot_Base2
clipboard:=Liste_mots_base2
gosub MAJ_avec_Texte
tooltip, Le fichier de base a été réinitialisé !
Sleep 5000
return


;-------------------------------------------------------------------------------------------------------------------------------------------------------------
;remplace tous les CR LF du fichier wordlistbase ainsi que les fréquence pour constituer une chaîne a insérer dans le script pour reconstituer la liste de base.
;--------------------------------------------------------------------------------------------------------------------------------------------------------------
Prepa_Creation_Listbase:

CR:=Chr(13)                                                             ; retour chariot
LF:=chr(10)                                                             ; line feed
espace:=chr(32)
FileRead, texte, %A_ScriptDir%\WordlistbaseTexte.txt
sort, texte
a=0
   loop, 10
   {
   StringReplace,texte, texte, %a%, ,All
   a+=1
   }
StringReplace,texte, texte, %CR%%LF%,%espace%%CR%%LF%,All               ; ajoute un espace devant les retour chariot
StringReplace,texte, texte, %CR%%LF%,,All

FileDelete, %A_ScriptDir%\wordlisttemp.txt
FileAppend, %texte%, %A_ScriptDir%\wordlisttemp.txt                   ; recopier la liste crée dans worlistetemp.txt et la recolier ci dessous
FileDelete, %A_ScriptDir%\wordlisttemp.txt
return

;------------------------------------------------------------------------------------
;Mots de base pour le fichier wordlistbase.txt
;-------------------------------------------------------------------------------------
Mot_Base1:

liste_mots_base1 = mesures système mesure étude pièces opérateurs variabilité processus erreur moyen pièce opérateur fabrication justesse valeur cette répétabilité variation référence contrôle chaque résultats entre calculer étendue moyenne nombre carte valeurs exemple caractéristique analyser échantillon analyse dispersion données utilisée interaction méthode alors graphique utilisation tolérance acceptation limites reproductibilité vérifier comme acceptable peuvent variance déterminer produits échantillons calcul calculs durée méthodes stabilité accord limite moyennes toutes celle doivent étant présente totale supérieure écart égale ainsi chacune connue linéarité moyens section vérification approche attendu autres calculée elles réalisées systèmes tracer attribut cours décision fonction linéaire lorsqu lorsque produit prélevés risque risquer statistique table tableau utiliser œuvre annexe application caractéristiques causes client ensemble manière performance somme utilisant ajout chacun conduite identifier important procédé range réalisée équipement anova conditions erreurs hypothèse mauvaise mesurée mesurées partir plusieurs probabilité reporter réaliser standard taille utilisées évaluer carrés conservation critère différente disponible dynamiques décisions excède postes première sources statistiquement appareil aucune autre calculées capabilité comparer confiance contrôles couvrent définir essai homogénéité ligne lignes niveau numérique nécessaire permet procédures prélever présentées reproductibles réalisés situe suivantes utilisé utilisés variations études évaluation assurer calculé chapitres conduire différents environnement graphiques généralement informations inférieure instrument interactions liberté mesurage milieu objectif permettant possible probabilités précédemment situations zones absence ajustement anomalie anomalies assemblage attendue aucun basée cartes chapitre cohérence concernant condition conformes courbes différence différentes divisée facteurs faire forme fréquence général histogramme inacceptable indices instabilités intervalle leurs mesurer montre montrer obtenir rapport regarder requis requises réalisé réponse résolution supérieur théorique tolérances total éliminer étendues arithmétique certaines classes conforme consiste courbe dimension disposer défauts définition effet efficacité estimations exemples faite figure finale hasard instruments kappa observée obtenues paragraphe plage pourcentage pouvant production renseigner réduire significative significatives source stabilisées stable suffisante trois échelle éventuelles accepter affecter aspect aussi cependant changement changer coefficient colonne comparaison comprendre compte considéré degrés destructif destructifs dispersions dispose distance documenter droite détecter estimation estimer fixation fournisseur grand groupe importantes individuelles issues laquelle mauvais minimum modification modifications moins montages nulle négative organisation paire paramètres poste pratiques prendre prélevées présentée règles réalise régression répartis résultat selon seront simples situation spécifique statistiques suffisant synthèse trier étapes évidence acceptables acceptée activité ailleurs amélioration améliorée applicables applications approches approximation associée attention augmenter avant biais bruit calibrage celles change classe collectées combinaison commentaires comparés compréhension connaissance constituera conséquence contraire correspondant corriger cycle dessus devant devrait dimensions donné dégradation déterminant efforts excès existe expériences facteur faites final garde groupes guide henry importante indiquer lecture lesquels maximum notées obtenue paires permettre pilotage position pratique problèmes procédure proportion présentent puisque quatre quatrième quelle recommandées refuser regard représenter répartition signe situées soient suivante suivants suppose tracée traiter types utilise variable variables vérifiée écarts également énoncé établir étape étudiés aberrants acceptabilité accepté accords actions adapté additionnelle alpha alternative aléatoire aléatoirement aléatoires améliorer anormale appel apportées appropriées après assure automatiques avoir capable cause choisir choix chose cible circularité clairement commence comparée connues considérés consécutives contrôlées corréler couvrir critères dernière destructives différences différent directement directrices disponibles distribution documentées donne donnée défaut dépend désaccord détruire effets employées ensuite entreprise environ erronées estimée exception externe extrémités fabricant faisant familiarisé focaliser fondée fourni fournie fournissent fournit gestion grande générales homogène homogènes identifiés importance impossibilité inadaptée inadéquate incertitude indication indique indépendance instructions largeur manifeste manipuler matière mesuré modifiant modifiée moitié montrant montrent multiplicateur nombreux normales notée nouveau négligeable objectifs observation observations observe occupe opérations origine particulière particulièrement pente personnel perte physiquement points portée poursuite premiers prestataire prises problème programme proportions proposées précision précédentes préférence présenter qualifié qualité quantifier quelque question rapide recalculée reconduire relation remplir reportées représente retouche revient règle réelles références répéter répétées résidu résidus satisfaisants savoir scénario sensibilité services seuil seuils seule seulement seules signal souhaitable souvent spécifier spécifiques spécifiés square standards statiques suppression symétrie systématique sélection sélectionner sélectionnées séries techniques temps tendances terme travail traçabilité trouver trouvé validé version édition élément établit éviter évoluent aberrantes acceptations achever action actuelle agissent aider ajouter ajoutée ambiance amélioré analyses analytique appréciation attributs autour avance bilatérales bonnes calculant catégories certains choisies claire collecte combien comparant complètement composantes comprise conclure conclusion conclut conicité connaissances considérées constatée constitue couple cross davantage degré dehors demandé dernier destructive deuxième devient diagonales difficile document décelée déclarer décomposée définie dégradations déterminée efficacités emploie enregistrées entièrement entra expertise faible façon feuille figures fournies fractionné gauche globalement graphe historiquement identification illustrent impact impacte implique inclura indiqué indépendantes influents information inférieur inférieures interprétation intervenir introduction intérieur journalière journée jugement laboratoires lesquelles lieux lumière maintenance maintenant manquer mauvaises mesurabilité mettant mettre mises modèle montré multiples mémorisation métrologie nature normale notre nouvelles nécessite nécessitent nécessité observer oeuvre ordre partie pendant petit place plupart posant positionner positionnés possibilité possibles poursuivie poursuivre pouvoir premier premières prenant prend prise propriétés précédents précéder prélevant prélevée prélèvement préparation présence puisqu période quand ramener recommandé refaire refus refusée rejeter rejetée relevé remarques remplie reportés reproductible représentant représentatifs reste revue réalisation réparation réparer réponses répétition répétitions répétée sachant satisfaisant satisfaisante seconde sensible serait seuls sigma signifie signifier similaire similaires simple situant situent sommes souhaitée spécification statuer suffisamment surtout séparer sérieux tableaux tables tabulation température tester titre trait travaux troisième témoin unique uniquement usage utile utilité variabilités variances vrais équipements équivalente établi abandonner abattre abord absolu absolument accent accepte acceptent acceptées acceptés accompagner accomplir accorder accrocher accuser acheter activités adaptés additionnels adjacentes admettre adresser affaire affecte affichage affirmer agent agissant agiter agrément aimer ajustée algorithme aller allumer alternatives amies amour amplitude amuser analysée ancien anglais angoisse animal animer annexes annoncer année apercevoir apparaissent appareiller apparemment apparence appartement appartements appartenir appartiennent appeler appelle appelée applicable apporter apprendre approcher approprié appropriée approuvée appuyer aptitude arbre argent armer armée arracher arriver arrivée arrière arrondi arrêter article aspects asseoir assez assignable assignables assigné assister associé associées associés attacher attaquer atteindre attendre attentes attirer attitude attribuées auprès auquel aussitôt autant auteur automatique autorité autrefois autrement avait avancer avantages avenir aventure avouer ayant baisser bande barbe bataille bayes beaucoup beauté beaux besoin biaisée bientôt billet blanc blond boire bonheur bonjour bonne bouche branche briller briser brusquement brûler bureau cabinet cacher cagoule calcule calibration calibrer calme calmer camarade campagne caractère caresser carré casser causer cellules celui centre centrée cercle certain certainement certes cerveau cesse cesser chair chaise chaleur chambre champ chance chant chanter charge charger chasse chasser chaud chemin chemise chercher cheval cheveu chien chiffre choisie chute cinquante circonstance clair clients codés coeur cohésion collecter colline colon colonnes colère combat commander commencement commencer comment commun communs compagnie compagnon comparées complet complexité complémentaires compléments composante composants composer comprends compris comptabilise compter concentricité concepteur concepts concevant concluons condamner confiances confier configurations confirme confirment confondre conformité connu conscience conseil consentir considèrent considérant considération considérer considérée consignées consisterait constante constitué construire consulter contenir content contenter contingence continu continuer contre control contrôlant contrôler convenir conversation corde corps correcte correctes correction correspond corrigées corrélation couche coucher couler couleur couper courage courant courir course court couvent couvre coûter craindre crainte creuser crier crise critique croire croiser croix cruel créer cuisine curieux curiosité céder danger dangereux danser debout demain demande demandent demander demandée demeurer depuis derrière descendre dessiner devenir deviner devoir diagonale diffèrent digne dimanche direction diriger dirons discours discrimination discrètes discussion discuter discuté distinctes distinguer distribuent distribuée divers divisé divisées docteur doigt dominer dormir double doucement douceur douleur doute douter douze drame droit drôle durant durer dynamique début débuts déchirer décider décidera déclare décomposer découlent découvrir décrire décrites décrivent décroissant déduire défendre défini définissant dégager départ dépasser dépendante dépendent déposer désavantage désert désespoir désigner désignée désir désirer désormais détacher détail détection détruisant détruite développé effacer efficace effort embrasser emmener empire employer emporter empêcher encadrant encore endormir endroit enfance enfant enfermer enfin enfoncer engager enlever ennemi enregistrer enregistré enregistrés entendre entier entière entourer entrepris entrer entretenir entrée envelopper envie envoyer ergonomie erroné erronée escalier espace espacées esprit espèce espérer essais essayer essentiel essuyer estime estimé examiner examinées exigences exigent exiger existante existence exister expert expliquer exploitables exposer expression exprimer expérience extraordinaire exécuter fabrications fabriqués facile facilement faciliter faits falloir famille fatigue fatiguer faute fauteuil faveur façons femme ferme fiabilité fidèle figurer fille finalement finies finir fixer fixées flamme fleur folie fonder force forcer formation forment former formulaire formules forte fortune forêt foule fournir fournis fraction frais franc franchir français frapper froid front fruit frère fuites fumer fumée fusil futures gagner garantir garder garçon genou genre geste glace glisser gloire goutte gouvernement grain grandir graphiquement grave grises guerre guère génère générale généré générée habilitation habilité habiller habitant habiter habitude habituel habituellement haine haute hauteur herbe heure heureux histogrammes histoire historique hiver homme honneur honte horizon humain humaine humains humide hypothèses hésiter hôtel identique identiques identité idéale ignorent ignorer ignorées illustre image imaginer immense immobile importants importe importer imposer impossible impression inacceptables incluant inclut incohérence inconnu incorrect indice indiquent indiqués individuellement induite indépendant indépendants influence informatiques ingénieurs inquiéter inquiétude inspirer installer instant instinct insuffisante intelligence intention inter interagissent interdépendance interminable interprète interprétable interpréter interprétée interroger interrompre intervalles intervention intrinsèque introduise introduit intégrant intégrés intéressantes intéresse intéresser intérêt inutile inventer inviter isoler italien jamais jambe jardin jaune jeter jeune jeunesse joindre joint jouer journal juger jusque juste justice large larme lendemain lentement lequel lettre libre livre livrer localisation longtemps lourd lueur lutte lutter lèvre léger machine madame magnifique maintenir maison majorité malade maladie malgré malheur manger manier manipulées manque manuel marchand marche marcher marché mariage marier marquer masse matin matrices meilleur meilleure membre menacer mener mensonge mentir message mieux militaire million mince ministre minute miroir misent miser modalité modifiées moindre moment monde monsieur montage montagne monter morceau moteur moteurs mourir mouvement musique médecin médiane mémoire mériter métier mêler mêmes nation naturel naturellement nerveux niveaux noire nommer normalité notamment nourrir nouvelle noyées nuage numéros numéroter nécessaires objet obliger observées obtention obtenu obtient obéir obéissant obéissent occasion occultée occuper odeur officier offrir oiseau oncle optimums opération ordinaire ordonné ordonnée ordonnées oreille oubliant oublier outil outils ouvert ouvrage pages palais panne papier paquet parallèles parcourir pareil parent parfait parfaitement parfois parler parmi parole partage partager parti particulier particulières partout parts parvenir passage passer passion passé patron paupière pauvre payer paysage paysan peine pencher pendre pense penser pensée perdre perdu permanent permettent permettra personnage personne pertinentes peser peuple phrase pierre pitié placer plages plaindre plaine plaire plaisir planche plante planéité plastique plein pleurer plonger pluie plutôt poche poids point pointe poitrine police politique porte portier posages posent positionné positionnées positive posséder pourcentages pourquoi pourra poursuivant poursuivante poursuivantes poursuivants poursuivit pourtant pousser poussière poète poésie presque presser preuve prier prince principe printemps prison prière prochain proche producteur productions produire professeur profiter profond profondément projet promener promettre prononcer propos proposer propre propriété protéger protégés prouver province proximité préalable précieux précipiter précis précédent précédente préférable préférer préférée prélevé préoccuper préparer présent présentant présents présenté présentés préserver président prétendre prévenir prévoir prévue prévues prêter public puissance puissant puissent pénétrer quantifiable quantification quarante quart quartier quelles quelques questions queue quinze quitter racine raconter raison raisons ramasser ramenée rapidement rappel rappeler rappelons rapporter rassurer ratio rationnelle rayon recevoir recherchant recherche recommandée recommencer reconsidéré recueillir reculer redéfinir refusent refusé refusés regardent regretter rejet rejoindre relever relevées religion remarque remarquer remercier remettre remise remonter remplacer remplies rencontre rencontrer rendant renoncer renseignés rentrer renverser repas reposer repousser reprendre représentatif représentative
return

mot_Base2:
liste_mots_base2 = respectée respirer responsable ressembler rester restrictif retirer retomber retour retourner retranchant retrouver revenir revoir riche rideau rigide roche roman rosace rouge rouler route ruine réalisable réalisant réalité récapitulant réclamer réduite réduites réflexion réfléchir répandre réparties répartir réplication répondre répétera réserver réside résistance résister résoudre résumer réunir réussir réveiller révisées révolution révéler rêver sable saint saisie saisir saison salle saluer salut santé satisfaire satisfaite sauter sauvage sauver scène second secours secret secrétaire seigneur semaine semaines semblable sentier sentiment seraient serrer service servir significativement signifient silence silencieux simplement simultanées simultanément situer située situés siècle siège social société soirée soldat soleil solitude sombre sommeil sommet songer sonner sorte sortir soudain souffler souffrance souffrir souhaite souhaiter soulever soumettre soumise soumises sourd sourire soutenir souvenir spectacle spéciales stands subir substitution succès sueur suffire suffit suite suivant suivre sujet sujette supplémentaires supporter supposer supposons surprendre surveiller séparées série tache tantôt tapis technique tellement telles temporaire tempête terminer terrain terre terreur terrible tests théorie théoriques théorème tickets toile tombe totalité toucher toujours toute trace tracteur tracées tracés train traitements tranquille transformer transférer travaillant travailler travailleur travailleurs travers traverse traverser trembler trente trials tripler triste tromper troubler trouvant trouve trouvent trouvera trésor uniformité unilatérales unitaire unité utiles utilisables utilisent utiliserons vague vaincre valide valoir value varie varier vaste veille vendre ventre verre victime vieil vieillard vieux village ville vingt violence violent visage visant visible visibles vision visite vivant vivre voici voile voilà voisin voiture voler volonté votre vouloir voyage voyager vraie vraies vraiment vérifiant vérifie vérifient véritable vérité vêtement vêtir zozoter écarter échapper éclairer éclat éclater école écouter écraser égales élevé éloigner éléments émotion énergie énorme énumératives épais épaule époque éprouver équation équidistante équilibre équipes équivaut établies établissant étage était étaler éteindre éternel étoile étonner étouffer étrange étranger étranges étroit étudier étudié évalué évaluées événement maîtrisé maîtriser maîtrise maîtrisée
Return
; pour l'ajout automatique de mot : ouvrir une fenêtre pour copier le texte, dir la longueur des mots à apprendre
;


Have a nice day


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: October 28th, 2010, 10:10 am 
Offline

Joined: May 27th, 2007, 9:41 am
Posts: 4999
RB_Boulay wrote:
I was dissatisfied because he does not propose possible words based on their frequency of use but in alphabetical order.
As far as I know Typing Aid does do this although not immediately but after restarting the script it will re-order the words. There has been some discussion, see here http://www.autohotkey.com/forum/viewtop ... 122#360122

But the more variations the better ;-)

_________________
AHK FAQ
TF : Text files & strings lib, TF Forum


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 494 posts ]  Go to page Previous  1 ... 13, 14, 15, 16, 17, 18, 19 ... 33  Next

All times are UTC [ DST ]


Who is online

Users browsing this forum: Bon, maul.esel and 10 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group