diff --git a/tridactyl/js/lecon15.js b/tridactyl/js/lecon15.js
new file mode 100644
index 0000000..f3d494b
--- /dev/null
+++ b/tridactyl/js/lecon15.js
@@ -0,0 +1,24 @@
+function lecon15()
+{
+ lecon = new Array; // ré-init des leçons
+
+ lecon[1] = "1###que les lle des ent our ais ait ant men ion par###desquelles entourais entourait entourant entourent lesquelles menais menait menant mentais mentait mentant mentent mention parais parait parant parent parles parquent";
+ lecon[2] = "2###con ons ont tai tio est ati eur tre res ans dan ire pou tou ous###cons contai contestations contestons conteur contions contres danseur dansons ires poutou poutres restai restions restons taire tous";
+ lecon[3] = "3###che vai com rai mme omm nce nte une ère pas mai ain son qui sse sur éta###chevai commencerai commenterai commune commère compas mainte maison quiche quintessence rain raison surpasserai vain étain";
+ lecon[4] = "4###tes ble tte air cha ter aut ure end ill lus tra kiw iwi plu pro out dez ren ort ran yeu eux###blettes chair chatter chattes chaut endure illustra kiwi plus protester protestes prout rendez rendort renter rentes rentrantes trancha yeux";
+ lecon[5] = "5###and ine ass ssi ins ses ava rie ave ver cou urs ouv enc fai ten int ien###andine assassine assassins assises avarie averses couine courses coussins couver encaver encours faine intenses rien rieurs";
+ lecon[6] = "6###ess ces sai ser aie iss ues lai nou age nne pre ens oir ers###cessai cesser essaie issues laie laissai laisser nouage prenne pressage pressai pressens presser pressoir sers";
+ lecon[7] = "7###eme art nts app aux eau uis san lui mon ond nde tan ois sou ute tro uve ven ntr ale voi vou###appartements appeaux appuis luisants monde montants monts oiseaux soute trois trouve vende ventrale vents vois vouvoiements";
+ lecon[8] = "8###pri emp ise ris ite tem ier man uel moi mes per onn rou ste sen nti por###emprise item manier manuel moise moite permes prier primes prismes prisonnier rouste sentier stem temporise";
+ lecon[9] = "9###ard dre don cor nai ssa for rte gra vie isa jou ées ême mêm oin pré pos dis dit qua rem###ardre cordon donnai dressa forte gravie isard jouées même oindre prédisposées prédit préposées quarte remisa";
+ lecon[10] = "10###anc rés err lan uit ang ité lit rès lon ndr nes pen peu pla cet ign nta tit van###ancrés errés languit lité londrès pennes peupla placet plaignes planes planta titrés vanité vannes vanta";
+ lecon[11] = "11###all lie era ell ule cel ils deu sio leu rre ieu use bre mar min rat tat sta ist tur###alliera cellule deuils deusio leurre lierre lieuse marbre marcel marieuse marrera minera ratera stat turista usera";
+ lecon[12] = "12###cti ive act arr roi ron ndi ose tie emb bou ara gar imp mpl ore éri rit iti rme orm ide oit soi sui###active arrive arroi arrondi arrose emboutie gara impact implore implose impose impéritie orme roide soit suive";
+ lecon[13] = "13###ail ile abl att ler ner cer gue non nse ord rec oul cul ret sem onc itu sit tri ime ura éra lla###aile attabler cerner guenon nonsense record recouler reculer retailler semoncer situ trime tritura érailla érailler";
+ lecon[14] = "14###ali gne ita car der rta isi cho uan dem emi ect dir fin ini nis nda fon inc mat tin eut ple nom éco###aligne alita carder carta choisi chouan demi direct finis fonda fonder incita matin pleut économat";
+ lecon[15] = "15###her arc rch uer avo mps cla sti cri iqu tiq déc ern née ors ari enf ind nan nat tal pui squ ace rap###archer avouer clamps cristi critiquer décernée décher décors enfarinée hercher indiquer nanan natal puisqu rapace";
+ lecon[16] = "16###ole acc ani mal str aus ral dev ina foi rer nco fra nge ges omp lis iso ori lor mis omb mbr rav rep seu eul###accole animal austral devina foirer franco franges inaccomplis isole lori mistral ombrer ravina replis seul";
+ lecon[17] = "17###eva ach alo loi ica chi ili mie ate cro oup nté tés han lat eil sol len uni uti été###acheva aloi chica chili chimie croate croup hantés lattés soleil solen uniate unités utilités étés";
+ lecon[18] = "18###ama ssé cen ton uss eus ert exp pet pli poi vre are rép teu nal ndu ong nna vis###amassé centon eussé expert peton plissé poissé poivre répare teuton tonal tondu tong tonna vissé";
+ lecon[19] = "19###col rée olo den ena mou esp pér fic ela rce erc ger erm mer ima ett met ras ula sée réc rti sor tab toi vit épa###colorée denrée enamourée espérée ficela gerce germer imager mettras moula rasée récrée sortiras tabula toisée vitrée épaula";
+}
\ No newline at end of file
diff --git a/tridactyl/js/lecon3.js b/tridactyl/js/lecon3.js
new file mode 100644
index 0000000..6834504
--- /dev/null
+++ b/tridactyl/js/lecon3.js
@@ -0,0 +1,35 @@
+function lecon3()
+{
+ lecon = new Array; // ré-init des leçons
+
+ lecon[1] = "1###que les lle des ent ant###desquelles entant lesquelles";
+ lecon[2] = "2###men ais ait par###menais menait parais parait";
+ lecon[3] = "3###con ons ion tio tre res ien est###cons contions contres ionien restions restons";
+ lecon[4] = "4###eur ans dan our pou tou ous###danseur pourtour poutou tous";
+ lecon[5] = "5###pas com ont son ire tai###compas sont taire";
+ lecon[6] = "6###mai nte qui che###mainte quiche quinte";
+ lecon[7] = "7###rai ain vai éta###rain vain étain";
+ lecon[8] = "8###nce ava sse plu sur urs###avance plusse surs";
+ lecon[9] = "9###ure end ren tes###endure rend rentes testes";
+ lecon[10] = "10###ble tte ill lus tra out pro###blette illustra prout";
+ lecon[11] = "11###air cha ati ère aut###chair chatière chaut";
+ lecon[12] = "12###ten int ses ter###intenses intenter inter";
+ lecon[13] = "13###mme omm ass oir eux ess ssi###assomme assommoir essieux";
+ lecon[14] = "14###and ine enc ave ver fai###andine encaver faine";
+ lecon[15] = "15###ouv rie ier ens ins ser###ouvrier riens serins";
+ lecon[16] = "16###cou lai aie ran ces anc une###coulai laie rances rancune";
+ lecon[17] = "17###iss ues nou age nne pre###issues nouage prenne";
+ lecon[18] = "18###ois tro uve ntr ven ale###trois trouve ventrale";
+ lecon[19] = "19###san lui nts tan mon sai###luisants montants monts saints";
+ lecon[20] = "20###art app aux eau ort uis sou ute###appart appeaux apport appuis soute";
+ lecon[21] = "21###ond nde mes pri ers sen nti###onde primes sentiers";
+ lecon[22] = "22###ise moi ite rou ste###moise moite rouste";
+ lecon[23] = "23###pos dis uel man per pré emp tem###dispos manuel perdis prédis tempos";
+ lecon[24] = "24###onn don nai gra vie rem isa###donnai gravie remisa";
+ lecon[25] = "25###for rte por qua ris###forte porte quarte risqua";
+ lecon[26] = "26###ard dre ssa ême mêm oin###ardre dressa même oindre";
+ lecon[27] = "27###cor nes jou ées vou###cornes jouées vouées";
+ lecon[28] = "28###ité van nta voi oit###vanité vanta voit";
+ lecon[29] = "29###err rés lan uit ang tit iti###errés languit titi titrés";
+ lecon[30] = "30###rès lon ndr dit pen peu pla cet###londrès pendit peupla placet";
+}
\ No newline at end of file
diff --git a/tridactyl/js/lecon7.js b/tridactyl/js/lecon7.js
new file mode 100644
index 0000000..a045f7a
--- /dev/null
+++ b/tridactyl/js/lecon7.js
@@ -0,0 +1,35 @@
+function lecon7()
+{
+ lecon = new Array; // ré-init des leçons
+
+ lecon[1] = "1###que les lle des ent ait our ant men ion###desquelles entourait entourant entourent lesquelles menait menant mentait mentant mentent mention";
+ lecon[2] = "2###con ons tio tre res ais par eur est###cons contions contres parais pareur partions restais restions restons";
+ lecon[3] = "3###pas com ans dan ire mai son pou tou ont tai ous###compas dans maire maison poutou sont taire tous";
+ lecon[4] = "4###rai nce ava che vai qui nte sse ain éta###avancerai chevai quiche quintessence rain vain étain";
+ lecon[5] = "5###ure end kiw iwi dez ren sur plu lus urs yeu eux###endure kiwi rendez sure surplus surs yeux";
+ lecon[6] = "6###tes ble tte air cha ati ère ter aut pro out tra ran###blettes chair chatière chatter chattes chaut protester protestes prout trancha";
+ lecon[7] = "7###and ine ass ssi ins ses mme omm oir fai ten int###andine assassine assassins assises assomme assommoir faine intenses";
+ lecon[8] = "8###ouv ver cou enc ave rie ier ien ser###couver encaver encrier ouvrier rien verrier verser";
+ lecon[9] = "9###ill nou lai age ess ces sai aie iss ues###agenouillai cessai essaie issues laie laissai nouage";
+ lecon[10] = "10###nne pre uve tan ois tro ntr ven ale voi###prenne preuve tanne trois trouve ventrale vois";
+ lecon[11] = "11###eme art nts app aux eau ort uis san lui mon ens sen sou ute###appartements appeaux apport appuis luisants monts sens soute";
+ lecon[12] = "12###pri emp ise moi ite ond nde mes per ers ist ste rou###emprise moise moite onde permes persiste primes rouste";
+ lecon[13] = "13###pos dis onn don nai gra vie uel man pré dit tem###dispos donnai gravie manuel prédis prédit tempos";
+ lecon[14] = "14###for rte isa ard ité nti qua rem por ris###forte isard quantité quarte remisa remporte risqua";
+ lecon[15] = "15###cor nes ssa dre jou ées anc lan ême mêm oin une vou###cornes dressa jouées lancées même oindre unes vouées";
+ lecon[16] = "16###err rés rès lon ndr peu pla cet nta tit van###errés londrès peupla placet planta titrés vanta";
+ lecon[17] = "17###all lie era ell ule cel leu rre ieu rat tat sta###alliera cellule leurre lierre lieu ratera stat";
+ lecon[18] = "18###ils deu sio bre mar uit min rme orm pen nse use ive nsi###deuils deusio marbre minuit orme penseuse pensive";
+ lecon[19] = "19###roi arr ron ndi tie emb bou act imp éri rit iti lit ide###arroi arrondi emboutie impact impéritie litron roide";
+ lecon[20] = "20###ign ali ner ara gar ore soi oit tri ime tur ura itu###aligner gara ignore soigner soit trime tritura";
+ lecon[21] = "21###ang ler abl att omp ose rec ord oul cul sem onc cer éra ail###angler attabler recompose record recouler reculer semoncer érailler";
+ lecon[22] = "22###ret car rta fin ini nda fon gue non eut ple mat nom éco###caret carta fini fonda guenon pleut économat";
+ lecon[23] = "23###isi sit cho uan dem emi ita inc sui ici der vre ile uti###choisit chouan demi incita suicider suivre utile";
+ lecon[24] = "24###nis ani her arc sti cri ect dir déc nan ace rap###anis archer cristi direct décher nanan rapace";
+ lecon[25] = "25###uer avo ari née enf iqu ind nat tal pui squ tin tiq###avouer enfarinée indiquer natal puisqu tinée tiquer";
+ lecon[26] = "26###mps cla dev ina foi rer gne lor ori ors omb mbr rav seu eul###clamps devina foirer lorgne lori lors ombrer ravina seul";
+ lecon[27] = "27###ole acc str aus ral nco fra nge ges iso mis lis rep###accole austral franco franges isole mistral replis";
+ lecon[28] = "28###lla col ate cro oup tés lat mie eil sol len été###colla croate croup lattés miellat soleil solen étés";
+ lecon[29] = "29###eva ach alo loi cen ton ica chi ili nté han poi teu nal ndu ong nna###acheva aloi centon chica chili chiton hanté pointé teuton tonal tondu tong tonna";
+ lecon[30] = "30###ama ssé esp pér rée uss eus ert exp pli are rép vis###amassé espérée eussé expert plissé répare vissé";
+}
\ No newline at end of file
diff --git a/tridactyl/js/lecons.js b/tridactyl/js/lecons.js
new file mode 100644
index 0000000..d78d162
--- /dev/null
+++ b/tridactyl/js/lecons.js
@@ -0,0 +1,54 @@
+/*******************************************************************************
+Les leçons
+Elles s'organise comme suit :
+1. une ligne de tous les trigrammes
+2. des lignes de chaque trigramme 15 fois
+3. une ligne de tous les trigrammes
+4. une ligne de tous les mots
+5. des lignes de chaque mot 7 fois
+6. une ligne de tous les mots
+*******************************************************************************/
+// Exemple avec la leçon 1
+// -----------------------
+//que les lle
+//que que que que que que que que que que que que que que que
+//les les les les les les les les les les les les les les les
+//lle lle lle lle lle lle lle lle lle lle lle lle lle lle lle
+//que les lle
+//lesquelles quelle quelles
+//lesquelles lesquelles lesquelles lesquelles lesquelles lesquelles lesquelles
+//quelle quelle quelle quelle quelle quelle quelle
+//quelles quelles quelles quelles quelles quelles quelles
+//lesquelles quelle quelles
+
+var lecon = new Array;
+lecon[1] = "1###que les lle###lesquelles quelle quelles"
+lecon[2] = "2###ent ant our ait###entant entourait entourent";
+lecon[3] = "3###men ais ion tio par###menais mention parais";
+lecon[4] = "4###con ons tre res est###contre contres restons";
+lecon[5] = "5###ans dan eur qui###dans danseur quiqui";
+lecon[6] = "6###pou tou ous###poutou tous toutous";
+lecon[7] = "7###pas com des son ont ire tai###compas sondes sont taire";
+lecon[8] = "8###che vai mai ain nte éta###chevai mainte étain";
+lecon[9] = "9###nce ava sse plu sur urs###avance plusse surs";
+lecon[10] = "10###ure end ren tes###endure rentes testes";
+lecon[11] = "11###ill lus tra out pro###illustra lustra prout";
+lecon[12] = "12###ble tte air cha ati ère###blette chair chatière";
+lecon[13] = "13###mme omm ass oir ten int ses###assomme assommoir intenses";
+lecon[14] = "14###and ine eux ave ess ssi fai###andine aveux essieux faine";
+lecon[15] = "15###cou ouv ver ien rie###coucou couver rien";
+lecon[16] = "16###enc ens ser ins###encens encenser serins";
+lecon[17] = "17###nou ran ces anc une###nounou rances rancune";
+lecon[18] = "18###aie lai iss sai###laie laissai saie";
+lecon[19] = "19###nne pre tan iqu ntr ues###prenne tanne tantriques";
+lecon[20] = "20###ois tro uve voi###trois trouve vois";
+lecon[21] = "21###age nts san lui mon ven###agents luisants monts vents";
+lecon[22] = "22###art app eau aux ort uis sou ute###appart appeaux apport appuis soute";
+lecon[23] = "23###ond don nde ier pri mes###dondon onde prier primes";
+lecon[24] = "24###ale nti emp sen ers###alenti empale sentiers";
+lecon[25] = "25###ise moi ite rou ste###moise moite rouste";
+lecon[26] = "26###jou uel man tem pos###joujou manuel tempos";
+lecon[27] = "27###gra vie per dis pré###gravie perdis prédis";
+lecon[28] = "28###for rte isa ard por rem###forte isard porte remisa";
+lecon[29] = "29###ssa dre ême mêm oin ris qua###dressa même oindre risqua";
+lecon[30] = "30###cor nes nai vou ées###cornes naines vouées";
diff --git a/tridactyl/js/req.js b/tridactyl/js/req.js
new file mode 100644
index 0000000..4421697
--- /dev/null
+++ b/tridactyl/js/req.js
@@ -0,0 +1,34 @@
+/*******************************************************************************
+La fonction pour les requêtes serveur.
+*******************************************************************************/
+
+
+//cette fonction permet de faire les requêtes serveur
+//get = la requete
+//id = le champ ou inscrire l'état de la requete
+function request(get,id)
+{
+ var req = null;
+
+ document.getElementById(id).innerHTML = ' Initialisation';
+ if(window.XMLHttpRequest)
+ req = new XMLHttpRequest();
+ else if (window.ActiveXObject)
+ req = new ActiveXObject(Microsoft.XMLHTTP);
+
+ req.onreadystatechange = function()
+ {
+ document.getElementById(id).innerHTML=' Connexion au serveur';
+ if(req.readyState == 4)
+ {
+ if(req.status == 200)
+ document.getElementById(id).innerHTML="";
+ else
+ document.getElementById(id).innerHTML="Error: returned status code " + req.status + " " + req.statusText;
+ }
+ };
+ req.open("GET", get, false); // requète non synchronisée sinon on ne peut pas avoir la valeur de la réponse
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+ req.send(null);
+ return req.responseText; //retourne le résultat de la requete
+}
diff --git a/tridactyl/js/start.js b/tridactyl/js/start.js
new file mode 100644
index 0000000..777a681
--- /dev/null
+++ b/tridactyl/js/start.js
@@ -0,0 +1,24 @@
+/*******************************************************************************
+À inclure en fin de page pour le démarrage
+*******************************************************************************/
+
+document.getElementById("rd_txt").innerHTML = ""; // effacement du message javascipt
+//document.getElementById("demo_ghost").style.backgroundColor = cur_col_ghost;
+//document.getElementById("demo_curseur").style.backgroundColor = cur_col;
+//document.getElementById("view_options").style.display = "none";
+//document.getElementById("d_replay").style.visibility = "hidden";
+/*var cur_mix = mix_colors(cur_col,cur_col_ghost) // c'est le mélange des 2 couleurs des curseur du fantôme et de la frappe
+clean_ghost();
+if (GetCookie("apo_typ") == "true") document.getElementById("apo_typ").checked = true;
+if (GetCookie("maj_acc") == "true") document.getElementById("maj_acc").checked = true;
+if (GetCookie("ligat") == "true") document.getElementById("ligat").checked = true;
+if (GetCookie("pds") == "true") document.getElementById("pds").checked = true;
+if (GetCookie("no_brk_spc") == "true") document.getElementById("no_brk_spc").checked = true;
+if (GetCookie("no_brk_spc_display") == "true") document.getElementById("no_brk_spc_display").checked = true;
+if (GetCookie("quote_fr") == "true") document.getElementById("quote_fr").checked = true;*/
+//change_lecon(28);
+lecon3();
+new_text();
+document.getElementById("resultats").innerHTML = description;
+document.getElementById("val_curseur").checked = cur_checked;
+val_anti_correct("init")
diff --git a/tridactyl/style.css b/tridactyl/style.css
new file mode 100644
index 0000000..a6b6b8d
--- /dev/null
+++ b/tridactyl/style.css
@@ -0,0 +1,196 @@
+.bar {
+ background-color:black;
+ /*z-index:150;*/
+ width:99%;
+ /*border:1px black dotted;*/
+ padding:3px;
+ margin:auto;
+}
+
+a, a:visited {
+ color:#003399;
+ text-decoration:none;
+}
+a:hover {
+ text-decoration:underline;
+}
+
+.bar a,a:visited {
+ margin:10px;
+ text-decoration:none;
+ color:#fafafa;
+}
+
+.bar a:hover {
+ color:#40e0d0;
+}
+
+body {
+ margin:0;
+ padding:0;
+ background-color:#fafafa;
+ color: black;
+ font-size: 14px;
+ font-family:monospace;
+}
+.head {
+ text-align:center;
+ margin-bottom:70px;
+}
+
+h1 {
+ margin-bottom:-15px
+}
+p {
+ margin:0;
+ padding:0px 0px 0px 0px;
+}
+input[type=button] {
+ border:1px black solid;
+ background-color:#ebebeb;
+ font-size: 12px;
+ color: black;
+ font-family: monospace;
+ margin-bottom:3px;
+ -moz-border-radius: 5px;
+ border-radius:5px;
+}
+.full_width {
+ width:100%;
+ text-align:center;
+}
+input[type=button]:hover {
+ background-color:#fafafa;
+}
+input[type=text] {
+ font-size: 14px;
+ color: black;
+ font-family: monospace;
+}
+hr {
+ border-top : solid 1px #cccccc;
+ border-bottom : none;
+ border-left:none;
+ border-right:none;
+ margin-bottom:30px;
+ margin-top:30px;
+}
+select {
+ border:none;
+ font-family:monospace;
+ font-size:14px;
+ background-color:#fafafa;
+ width:40px;
+}
+img {
+ vertical-align:middle;
+}
+.main {
+ /*text-align:center;*/
+ width:750px;
+ margin:auto;
+}
+.text_nmbr {
+ width:100%;
+ border:none;
+ text-align:left;
+}
+.err {
+ visibility:hidden;
+ color:red;
+ font-weight:bold;
+ font-size:18px;
+ background-color:#ffbbbb;
+}
+.new_text {
+ border:none;
+ text-align:left;
+ padding:5px;
+ font-family:monospace;
+ font-size:14px;
+}
+.options {
+ border:none;
+ text-align:left;
+ width:300px;
+ float:left;
+ padding:0px 5px 5px 5px;
+
+ font-family:monospace;
+ font-size:14px;
+}
+.view_options {
+ display:block;
+}
+.result {
+ /*float:right;*/
+ text-align:left;
+ /*width:420px;*/
+ width:748px;
+ padding:5px;
+ font-family:monospace;
+ font-size:14px;
+}
+.txt {
+ border:1px #777777 dashed;
+ border-top:none;
+ border-right:none;
+ border-left:none;
+ background-color:#fafafa;
+ width:680px;
+ /*height:240px;*/
+ font-family:monospace;
+ font-size:14px;
+ margin-bottom:5px;
+
+}
+.rd_txt {
+ /*border:1px black solid;*/
+ /*height:auto;*/
+ /*color:white;*/
+ text-align:left;
+ width:748px;
+ height:80px;
+ font-family:monospace;
+ font-size:14px;
+ /*text-align:justify;*/
+ /*background-color:grey;*/
+}
+/*a, a:visited {
+ color:#003399;
+ text-decoration:none;
+}
+a:hover {
+ text-decoration:underline;
+} */
+.d_replay {
+ visibility:visible;
+ float:right;
+}
+
+.options {
+ display:none;
+ padding:10px;
+ position:absolute;
+ z-index:2;
+ width:300px;
+ border:solid black 1px;
+ top:200px;left:50%;
+ margin-left:-150px;
+ background-color:#fafafa;
+}
+
+.voile {
+ display:none;
+ background-color:black;
+ opacity:0.5;
+ position:absolute;
+ top:0;
+ left:0;
+ z-index:1;
+ width:100%;
+ height:100%;
+}
+.lecon {
+ width:200px;
+}