<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML>
<HEAD> <TITLE>JsLib 1.3 - Exemple - clavier.js</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <META NAME="Author" CONTENT="Etienne CHEVILLARD"> <SCRIPT TYPE="text/javascript" LANGUAGE="Javascript"> /* clavier.js * Role : capture et gere les evenements clavier * Projet : JsLib * Auteur : Etienne CHEVILLARD (echevillard@users.sourceforge.net) * Version : 1.3 * Creation : 28/07/2001 * Mise a jour : 23/02/2005 * Bogues connues : - Netscape Navigator 4 et Opera ignorent certaines touches de fonction */
// capture les evenements sous Netscape Navigator if (document.layers) { document.captureEvents(Event.KEYDOWN); document.captureEvents(Event.KEYPRESS); document.captureEvents(Event.KEYUP); }
// --- Variables globales ---
// correction du code des touches var clavier_un=-1; var clavier_deux=-1;
// retourne le code clavier de la derniere touche enfoncee function codeTouche(e) { var cret; if (window.event) { if (parseInt(clavier_deux)>0) cret=clavier_deux; else cret=window.event.keyCode; if (window.event.type=="keypress") clavier_deux=window.event.keyCode; if (window.event.type=="keydown") clavier_deux=-1; } else { if (parseInt(clavier_deux)>0) cret=clavier_deux; else if ((parseInt(clavier_un)>0) && (e.which<1)) cret=clavier_un; else cret=e.which; if (e.type=="keydown") { clavier_un=e.which; clavier_deux=-1; } if (e.type=="keypress") clavier_deux=e.which; } return (parseInt(cret)); } // fin codeTouche(e)
// retourne le caractere ou la fonction pour la derniere touche enfoncee function correspTouche(e) { var ccod=codeTouche(e); if (toucheCtrl(e) && toucheAlt(e)) return "Alt Gr"; if (parseInt(ccod)==8) return clavier_cds[ccod]; if (parseInt(ccod)==9) return clavier_cds[ccod]; if (parseInt(ccod)==13) return clavier_cds[ccod]; if (parseInt(ccod)==27) return clavier_cds[ccod]; if (parseInt(ccod)==32) return clavier_cds[ccod]; if ((clavier_cds[ccod]) && (parseInt(clavier_deux)<1)) { return (clavier_cds[ccod]); } else { return (String.fromCharCode(ccod)); } } // fin correspTouche(e)
// retourne vrai si la touche Alt a ete enfoncee avec la derniere touche function toucheAlt(e) { if (window.event) { return (window.event.altKey); } else { return (e.altKey || (e.modifiers % 2)); } } // fin toucheAlt(e)
// retourne vrai si la touche Ctrl a ete enfoncee avec la derniere touche function toucheCtrl(e) { if (window.event) { return (window.event.ctrlKey); } else { return (e.ctrlKey || (e.modifiers==2) || (e.modifiers==3) || (e.modifiers>5)); } } // fin toucheCtrl(e)
// retourne vrai si la touche Shift a ete enfoncee avec la derniere touche function toucheShift(e) { if (window.event) { return (window.event.shiftKey); } else { return (e.shiftKey || (e.modifiers>3)); } } // fin toucheShift(e)
<NOSCRIPT> <P><I>Erreur : votre navigateur ne reconnait pas le Javascript ou est configuré pour ne pas prendre en compte le code Javascript. Dans ce dernier cas, vous pouvez modifier la configuration dans les préférences/options de votre navigateur.</I> <HR> </NOSCRIPT>
<FORM ACTION="GET" NAME="f1" onSubmit="return false"> <P>Appuyez sur n'importe quelle touche du clavier...<BR> <TEXTAREA NAME="ta1" ROWS=5 COLS=60></TEXTAREA>