> Écoute des combinaisons de touche
> Enregistrement du texte entré dans un variable à chaque combinaison (AltGr+caractère)
> Ajout depuis le code du caractère adéquat à la suite de ce texte
> Rétablissement du texte souhaité
> Sans oublier d'avoir restreint les caractères affichés en cas de bug
(textField.restrict = "^plage de caractère restreint")

Texte de saisie en mode transparence sans le code


Texte de saisie en mode transparence avec le code


Le code est juste a coller au niveau des champs texte et c'est tout ^^:

// Contournement de la restriction FireFox des caractères speciaux en wmode="xxx"
// Par Kenjutsu pour Media-Box.net
// Version Beta

// DECLARATION DES VARIABLES
var altGr = 0;
var Maj = 0;
var cible_text = "";
var derniere_touche = "";



// ECOUTEUR DES TOUCHES ENFONCEES
var monEcouteur:Object = new Object(); 
monEcouteur.onKeyDown = myOnKeyDown;
monEcouteur.onKeyUp = myOnKeyUp;
Key.addListener(monEcouteur);


// ANALYSE DES COMBINAISONS DE TOUCHE POUR CARACTERES SPECIAUX
function myOnKeyDown() {
	set (Selection.getFocus() + ".restrict", "a-z A-Z 1-9 ^!@#%.."); // Restriction des caractères non pris en compte.
	derniere_touche = Key.getCode();// recuperation du code de la dernière touche enfoncé
switch (derniere_touche) { 
 case 18 : 
		cible_text = eval(Selection.getFocus()+".text"); // Sauvegarde du texte dès qu'un caractère special est "potentiellement" appellé.
		altGr = 1;
 break; 
 case 16 : 
		cible_text = eval(Selection.getFocus()+".text"); // Sauvegarde du texte dès qu'un caractère special est "potentiellement" appellé.
		Maj = 1;
 break; 
 default : 
 	cible_text = eval(Selection.getFocus()+".text"); // Sauvegarde du texte dès qu'un caractère special est "potentiellement" appellé.
	comboTouche(derniere_touche)
 break; 
 } 
}


function myOnKeyUp() {
	if (derniere_touche == 18 || derniere_touche == 17) { // deux code car la touche Alt Gr en renvoi deux...
	altGr = 0;
	}else if (derniere_touche == 16) {
	Maj = 0;
	}
}

// REPLACEMENT DU TEXTE SAUVEGARDE
function remplacement(){
	
	set (Selection.getFocus() + ".text", "");
	set (Selection.getFocus() + ".text", cible_text);
	Selection.setSelection(1000,1000);
	this[Selection.getFocus()+".text"];
	altGr = 0;
	Maj = 0;
}
function comboTouche(derniere_touche){
	if (altGr == 1) {
 		switch (derniere_touche) { 
 		case 48 : 
			cible_text += "@"; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
		case 51 : 
			cible_text += "#"; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
 		} 
	}else if (Maj == 1) {
		switch (derniere_touche) { 
		case 188 : 
			cible_text += "?"; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
  		case 190 : 
			cible_text += "."; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
		}
	}else if (altGr == 0 && Maj == 0) {
		switch (derniere_touche) { 
		case 52 : 
			cible_text += "'"; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
  		case 188 : 
			cible_text += ","; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
			case 190 : 
			cible_text += ";"; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
  		case 223 : 
			cible_text += "!"; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
				case 191 : 
			cible_text += ":"; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
  		case 54 : 
			cible_text += "-"; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
		  		case 53 : 
			cible_text += "("; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 
				case 219 : 
			cible_text += ")"; //ajout du caractère arobase a la suite du texte sauvegardé.
			remplacement();
 		break; 

		}
	}
}
Kenj.