Русский ввод

HTML

<div id="replace">
    <input type="text" class="street edit-state-street" maxlength="50" />
    <input type="text" class="normal-state-address long" value="Текст?" />
    <input type="text" class="normal-state-note note inactive" value="Примечание" maxlength="100" />
</div>

JavaScript

replace.oninput = function (e) {
    var el = e ? e.target : window.event.srcElement;
    if (el.tagName != "INPUT") return;
    var replacer = {
        "q": "й",
        "w": "ц",
        "e": "у",
        "r": "к",
        "t": "е",
        "y": "н",
        "u": "г",
        "i": "ш",
        "o": "щ",
        "p": "з",
        "[": "х",
        "]": "ъ",
        "a": "ф",
        "s": "ы",
        "d": "в",
        "f": "а",
        "g": "п",
        "h": "р",
        "j": "о",
        "k": "л",
        "l": "д",
        ";": "ж",
        "'": "э",
        "z": "я",
        "x": "ч",
        "c": "с",
        "v": "м",
        "b": "и",
        "n": "т",
        "m": "ь",
        ",": "б",
        ".": "ю",
        "/": "."
    };
    var str = el.value;
    
    el.value = str.replace(/[A-z/,.;\'\]\[]/g, function (x) {
       return x == x.toLowerCase() ? replacer[x] : replacer[x.toLowerCase()].toUpperCase();
    });
};