MediaWiki:Gadget-specialchars.js
Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
- Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
- Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
- Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
function keycheck() {
tb = document.getElementById("wpTextbox1");
if(tb && mw.config.get('wgNamespaceNumber')!=8) {
tb.onkeyup = function(e) {
var key = (window.event) ? event.key : e.key;
var charCode = key.charCodeAt(0); // pour compatibilité sur divers navigateurs
startPos = tb.selectionStart;
endPos = tb.selectionEnd;
if(endPos == startPos && (charCode == 34 || charCode == 39 || (charCode >= 44 && charCode <= 46) || (charCode >= 48 && charCode <= 62) || (charCode >= 65 && charCode <= 90) || charCode == 94 || charCode == 95 || (charCode >= 97 && charCode <= 122)) ) {
m2 = tb.value.substring(startPos - 2, startPos);
m3 = tb.value.substring(startPos - 3, startPos);
m4 = tb.value.substring(startPos - 4, startPos);
m2_pre = tb.value.substring(startPos - 1, startPos+1);
f = tb.value.substring(startPos);
todo = false;
// Raccourcis de quatre caractères
if(!todo) {
i = 4;
m = m4;
todo = true;
switch(m) {
case "’ ''" : m = "’''"; break;
default : todo = false;
}
}
// Raccourcis de trois caractères
if(!todo) {
i = 3;
m = m3;
todo = true;
switch(m) {
// Ponctuation
case "..." : m = "…"; break;
case "---" : m = "—"; break;
// Ligatures et lettres latines exotiques
case "a~e" : m = "æ"; break;
case "A~E" : m = "Æ"; break;
case "o~e" : m = "œ"; break;
case "O~E" : m = "Œ"; break;
case "s~s" : m = "ß"; break;
case "t~h" : m = "þ"; break;
case "T~H" : m = "Þ"; break;
case "d~h" : m = "ð"; break;
case "D~H" : m = "Ð"; break;
// Barres horizontales inscrites
case "d~-" : m = "đ"; break;
case "D~-" : m = "Đ"; break;
case "h~-" : m = "ħ"; break;
case "H~-" : m = "Ħ"; break;
// Barres obliques inscrites
case "o~/" : m = "ø"; break;
case "O~/" : m = "Ø"; break;
case "l~/" : m = "ł"; break;
case "L~/" : m = "Ł"; break;
// Accents aigus
case "a^'" : m = "á"; break;
case "A^'" : m = "Á"; break;
case "c^'" : m = "ć"; break;
case "C^'" : m = "Ć"; break;
case "e^'" : m = "é"; break;
case "E^'" : m = "É"; break;
case "i^'" : m = "í"; break;
case "I^'" : m = "Í"; break;
case "n^'" : m = "ń"; break;
case "N^'" : m = "Ń"; break;
case "o^'" : m = "ó"; break;
case "O^'" : m = "Ó"; break;
case "s^'" : m = "ś"; break;
case "S^'" : m = "Ś"; break;
case "u^'" : m = "ú"; break;
case "U^'" : m = "Ú"; break;
case "z^'" : m = "ź"; break;
case "Z^'" : m = "Ź"; break;
// Accents graves
case "a^`" : m = "à"; break;
case "A^`" : m = "À"; break;
case "e^`" : m = "è"; break;
case "E^`" : m = "È"; break;
case "i^`" : m = "ì"; break;
case "I^`" : m = "Ì"; break;
case "o^`" : m = "ò"; break;
case "O^`" : m = "Ò"; break;
case "u^`" : m = "ù"; break;
case "U^`" : m = "Ù"; break;
// Trémas
case "a^:" : m = "ä"; break;
case "A^:" : m = "Ä"; break;
case "e^:" : m = "ë"; break;
case "E^:" : m = "Ë"; break;
case "i^:" : m = "ï"; break;
case "I^:" : m = "Ï"; break;
case "o^:" : m = "ö"; break;
case "O^:" : m = "Ö"; break;
case "u^:" : m = "ü"; break;
case "U^:" : m = "Ü"; break;
case "y^:" : m = "ÿ"; break;
case "Y^:" : m = "Ÿ"; break;
// Tildes
case "a^~" : m = "ã"; break;
case "A^~" : m = "Ã"; break;
case "e^~" : m = "ẽ"; break;
case "E^~" : m = "Ẽ"; break;
case "i^~" : m = "ĩ"; break;
case "I^~" : m = "Ĩ"; break;
case "n^~" : m = "ñ"; break;
case "N^~" : m = "Ñ"; break;
case "o^~" : m = "õ"; break;
case "O^~" : m = "Õ"; break;
case "u^~" : m = "ũ"; break;
case "U^~" : m = "Ũ"; break;
// Circonflexes
case "a^^" : m = "â"; break;
case "A^^" : m = "Â"; break;
case "c^^" : m = "ĉ"; break;
case "C^^" : m = "Ĉ"; break;
case "e^^" : m = "ê"; break;
case "E^^" : m = "Ê"; break;
case "g^^" : m = "ĝ"; break;
case "G^^" : m = "Ĝ"; break;
case "h^^" : m = "ĥ"; break;
case "H^^" : m = "Ĥ"; break;
case "i^^" : m = "î"; break;
case "I^^" : m = "Î"; break;
case "j^^" : m = "ĵ"; break;
case "J^^" : m = "Ĵ"; break;
case "o^^" : m = "ô"; break;
case "O^^" : m = "Ô"; break;
case "s^^" : m = "ŝ"; break;
case "S^^" : m = "Ŝ"; break;
case "u^^" : m = "û"; break;
case "U^^" : m = "Û"; break;
// Carons
case "a^v" : m = "ǎ"; break;
case "A^v" : m = "Ǎ"; break;
case "c^v" : m = "č"; break;
case "C^v" : m = "Č"; break;
case "d^v" : m = "ď"; break;
case "D^v" : m = "Ď"; break;
case "e^v" : m = "ě"; break;
case "E^v" : m = "Ě"; break;
case "g^v" : m = "ǧ"; break;
case "G^v" : m = "Ǧ"; break;
case "i^v" : m = "ǐ"; break;
case "I^v" : m = "Ǐ"; break;
case "l^v" : m = "ľ"; break;
case "L^v" : m = "Ľ"; break;
case "n^v" : m = "ň"; break;
case "N^v" : m = "Ň"; break;
case "o^v" : m = "ǒ"; break;
case "O^v" : m = "Ǒ"; break;
case "r^v" : m = "ř"; break;
case "R^v" : m = "Ř"; break;
case "s^v" : m = "š"; break;
case "S^v" : m = "Š"; break;
case "t^v" : m = "ť"; break;
case "T^v" : m = "Ť"; break;
case "u^v" : m = "ǔ"; break;
case "U^v" : m = "Ǔ"; break;
case "z^v" : m = "ž"; break;
case "Z^v" : m = "Ž"; break;
// Macrons
case "a^_" : m = "ā"; break;
case "A^_" : m = "Ā"; break;
case "e^_" : m = "ē"; break;
case "E^_" : m = "Ē"; break;
case "i^_" : m = "ī"; break;
case "I^_" : m = "Ī"; break;
case "o^_" : m = "ō"; break;
case "O^_" : m = "Ō"; break;
case "u^_" : m = "ū"; break;
case "U^_" : m = "Ū"; break;
case "y^_" : m = "ȳ"; break;
case "Y^_" : m = "Ȳ"; break;
// Brèves
case "a^-" : m = "ă"; break;
case "A^-" : m = "Ă"; break;
case "e^-" : m = "ĕ"; break;
case "E^-" : m = "Ĕ"; break;
case "g^-" : m = "ğ"; break;
case "G^-" : m = "Ğ"; break;
case "i^-" : m = "ĭ"; break;
case "I^-" : m = "Ĭ"; break;
case "o^-" : m = "ŏ"; break;
case "O^-" : m = "Ŏ"; break;
case "u^-" : m = "ŭ"; break;
case "U^-" : m = "Ŭ"; break;
// Double accent aigu
case "o^" : m = "ő"; break;
case "O^" : m = "Ő"; break;
case "u^" : m = "ű"; break;
case "U^" : m = "Ű"; break;
// Ronds en chef
case "a^°" : m = "å"; break;
case "A^°" : m = "Å"; break;
case "u^°" : m = "ů"; break;
case "U^°" : m = "Ů"; break;
// Points souscrits
case "d_." : m = "ḍ"; break;
case "D_." : m = "Ḍ"; break;
case "h_." : m = "ḥ"; break;
case "H_." : m = "Ḥ"; break;
case "l_." : m = "ḷ"; break;
case "L_." : m = "Ḷ"; break;
case "m_." : m = "ṃ"; break;
case "M_." : m = "Ṃ"; break;
case "n_." : m = "ṇ"; break;
case "N_." : m = "Ṇ"; break;
case "r_." : m = "ṛ"; break;
case "R_." : m = "Ṛ"; break;
case "s_." : m = "ṣ"; break;
case "S_." : m = "Ṣ"; break;
case "t_." : m = "ṭ"; break;
case "T_." : m = "Ṭ"; break;
case "z_." : m = "ẓ"; break;
case "Z_." : m = "Ẓ"; break;
// Cédilles et virgules souscrites
case "c_z" : m = "ç"; break;
case "C_z" : m = "Ç"; break;
case "c_," : m = "ç"; break;
case "C_," : m = "Ç"; break;
case "d_," : m = "ḑ̦"; break;
case "D_," : m = "Ḑ̦"; break;
case "k_," : m = "ķ"; break;
case "K_," : m = "Ķ"; break;
case "l_," : m = "ļ"; break;
case "L_," : m = "Ļ"; break;
case "n_," : m = "ņ"; break;
case "N_," : m = "Ņ"; break;
case "r_," : m = "ŗ"; break;
case "R_," : m = "Ŗ"; break;
case "s_," : m = "ş"; break;
case "S_," : m = "Ş"; break;
case "t_," : m = "ţ"; break;
case "T_," : m = "Ţ"; break;
// Ogoneks
case "a_;" : m = "ą"; break;
case "A_;" : m = "Ą"; break;
case "e_;" : m = "ę"; break;
case "E_;" : m = "Ę"; break;
case "i_;" : m = "į"; break;
case "I_;" : m = "Į"; break;
case "u_;" : m = "ų"; break;
case "U_;" : m = "Ų"; break;
// Macrons souscrits
case "d__" : m = "ḏ"; break;
case "D__" : m = "Ḏ"; break;
case "t__" : m = "ṯ"; break;
case "T__" : m = "Ṯ"; break;
// Brèves souscrites
case "h_-" : m = "ḫ"; break;
case "H_-" : m = "Ḫ"; break;
default : todo = false;
}
}
// Raccourcis de deux caractères
if(!todo) {
i = 2;
m = m2;
todo = true;
switch(m) {
// Ponctuation
case "<<" : m = "«"; break;
case ">>" : m = "»"; break;
// Lettres additionnelles
case "^s" : m = "ſ"; break;
case "^0" : m = "⁰"; break;
case "^1" : m = "¹"; break;
case "^2" : m = "²"; break;
case "^3" : m = "³"; break;
case "^4" : m = "⁴"; break;
case "^5" : m = "⁵"; break;
case "^6" : m = "⁶"; break;
case "^7" : m = "⁷"; break;
case "^8" : m = "⁸"; break;
case "^9" : m = "⁹"; break;
default : todo = false;
}
}
// Apostrophes courbes automatiques
if(!todo) {
i = 2;
m = m2;
if(m[1] == "'") {
if(m[0] == "’")
m = "''";
else if(m[0] != "'" && m[0] != "^" && m[0] != " " && m2_pre != "''")
m = m[0] + "’";
todo = true;
}
else if(m == "’’") {
m = "''";
todo = true;
}
}
if(todo) {
var textScroll = tb.scrollTop;
h = tb.value.substring(0, startPos - i);
tb.value = h + m + f;
tb.selectionStart = startPos - i + m.length;
tb.selectionEnd = tb.selectionStart;
tb.scrollTop = textScroll;
}
}
};
}
}
$(document).ready(keycheck);