使用shift修饰符从keycode获取key char(value)

Ala*_*lan 5 javascript events key char

我很幸运能找到String.fromCharCode().它对我帮助很大.但是,我注意到它没有考虑移位修改器.我知道event.shiftKey属性并使用它,但是现在我需要获得考虑了shift键修饰符的键值(例如:"A"或"a").起初我用过String.toLowerCase()..但我忽略了数字键,举一个例子:"5"(没有移位)和"%"(带移位).我需要在我的程序中区分这两者.什么是获得关键char值的简单方法?

wsa*_*ams 7

这种蛮力技术并不是最漂亮的,但似乎有效.我正在寻找相同的功能.

function mapKeyPressToActualCharacter(isShiftKey, characterCode) {
    if ( characterCode === 27 || characterCode === 8 || characterCode === 9 || characterCode === 20 || characterCode === 16 || characterCode === 17 || characterCode === 91 || characterCode === 13 || characterCode === 92 || characterCode === 18 ) {
        return false;
    }
    if (typeof isShiftKey != "boolean" || typeof characterCode != "number") {
        return false;
    }
    var characterMap = [];
    characterMap[192] = "~";
    characterMap[49] = "!";
    characterMap[50] = "@";
    characterMap[51] = "#";
    characterMap[52] = "$";
    characterMap[53] = "%";
    characterMap[54] = "^";
    characterMap[55] = "&";
    characterMap[56] = "*";
    characterMap[57] = "(";
    characterMap[48] = ")";
    characterMap[109] = "_";
    characterMap[107] = "+";
    characterMap[219] = "{";
    characterMap[221] = "}";
    characterMap[220] = "|";
    characterMap[59] = ":";
    characterMap[222] = "\"";
    characterMap[188] = "<";
    characterMap[190] = ">";
    characterMap[191] = "?";
    characterMap[32] = " ";
    var character = "";
    if (isShiftKey) {
        if ( characterCode >= 65 && characterCode <= 90 ) {
            character = String.fromCharCode(characterCode);
        } else {
            character = characterMap[characterCode];
        }
    } else {
        if ( characterCode >= 65 && characterCode <= 90 ) {
            character = String.fromCharCode(characterCode).toLowerCase();
        } else {
            character = String.fromCharCode(characterCode);
        }
    }
    return character;
}
Run Code Online (Sandbox Code Playgroud)

  • 关于如何为非美国键盘布局创建此帐户的任何想法(例如,英国键盘上的“Shift+3”是英镑符号)? (2认同)