Корисник:Michaello/kbdshortcuts.js
Напомена: Пошто објавите измене, можда ћете морати да обришете кеш меморију прегледача како бисте их видели. Google Chrome, Firefox, Microsoft Edge и Safari: Држите ⇧ Shift и кликните дугме Reload на траци са алаткама. За детаље и упутства о другим прегледачима, погледајте en:Wikipedia:Bypass your cache.
function doCyrLat(dir) {
var cyr = [
'џ', 'Џ', 'љ', 'њ', 'Њ', 'Љ',
'а', 'б', 'в', 'г', 'д',
'ђ', 'е', 'ж', 'з', 'и',
'ј', 'к', 'л', 'м',
'н', 'о', 'п', 'р',
'с', 'т', 'ћ', 'у', 'ф',
'х', 'ц', 'ч', 'ш',
'А', 'Б', 'В', 'Г', 'Д',
'Ђ', 'Е', 'Ж', 'З', 'И',
'Ј', 'К', 'Л', 'М',
'Н', 'О', 'П', 'Р',
'С', 'Т', 'Ћ', 'У', 'Ф',
'Х', 'Ц', 'Ч', 'Ш'];
var lat = [
'dž', 'Dž', 'lj', 'nj', 'Nj', 'Lj',
'a', 'b', 'v', 'g', 'd',
'đ', 'e', 'ž', 'z', 'i',
'j', 'k', 'l', 'm',
'n', 'o', 'p', 'r',
's', 't', 'ć', 'u', 'f',
'h', 'c', 'č', 'š',
'A', 'B', 'V', 'G', 'D',
'Đ', 'E', 'Ž', 'Z', 'I',
'J', 'K', 'L', 'M',
'N', 'O', 'P', 'R',
'S', 'T', 'Ć', 'U', 'F',
'H', 'C', 'Č', 'Š'];
var txtarea;
if (document.editform) {
txtarea = currentFocused;
} else {
var areas = document.getElementsByTagName( 'textarea' );
txtarea = areas[0];
}
var textScroll = txtarea.scrollTop;
txtarea.focus();
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
txt = txtarea.value.substring( startPos, endPos );
if(dir) {
mch = new RegExp("LJ", 'g');
txt = txt.replace(mch, "Љ");
mch = new RegExp("NJ", 'g');
txt = txt.replace(mch, "Њ");
mch = new RegExp("DŽ", 'g');
txt = txt.replace(mch, "Џ");
for(i=0; i<60; i++) {
mch = new RegExp(lat[i], 'g');
txt = txt.replace(mch, cyr[i]);
}
} else {
for(i=0; i<60; i++) {
mch = new RegExp(cyr[i], 'g');
txt = txt.replace(mch, lat[i]);
}
}
txtarea.value = txtarea.value.substring(0, startPos)
+ txt
+ txtarea.value.substring(endPos, txtarea.value.length);
txtarea.scrollTop = textScroll;
}
function toLower() {
var txtarea;
if (document.editform) {
txtarea = currentFocused;
} else {
var areas = document.getElementsByTagName( 'textarea' );
txtarea = areas[0];
}
textScroll = txtarea.scrollTop;
txtarea.focus();
startPos = txtarea.selectionStart;
endPos = txtarea.selectionEnd;
txtarea.value = txtarea.value.substring(0, startPos)
+ txtarea.value.substring( startPos, endPos ).toLowerCase()
+ txtarea.value.substring(endPos, txtarea.value.length);
txtarea.scrollTop = textScroll;
}
function kbdprocess(e) {
e = e || window.event;
var code = 0;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
if(e.altKey) {
switch(code) {
case 49: insertTags("-{", "}-", ""); break;
case 50: insertTags("''", "''", ""); break;
case 51: insertTags("'''", "'''", ""); break;
case 52: insertTags("„", "“", ""); break;
case 53: insertTags("''-{", "}-''", ""); break;
case 81: doCyrLat(true); break;
case 82: toLower(); break;
case 87: doCyrLat(false); break;
}
}
}
$(function() {
if(document.addEventListener) document.addEventListener("keydown", kbdprocess, false);
else if(document.attachEvent) document.attachEvent("onkeydown", kbdprocess, false);
}
);