在windows上,我希望altgr键能够成功地合成变音字符,但从幕后看,windows altgr键相当于alt+ctrl,这一点从这里可以明显看出[1](使用该工具解释本页上的键盘事件)。这是仅在Windows上的行为;在Linux上,altgr不会像这样拆分为alt+ctrl。
在这种情况下,如何在windows上区分正常的altgr操作和alt+ctrl操作?
〔1〕http://javascript.info/tutorial/keyboard-events

最佳答案

modern browsers中,您可以使用location property of the keyboard event来确定是否按下了左或右alt键(在您的情况下,右为altgr)。

document.getElementById("test").addEventListener("keydown", function(e) {
    // For pretty output in the demo
    var locations = {"1": "Left", "2": "Right"};
    var keys = {"17": "Ctrl", "18": "Alt"};

    // Checking e.keyCode and e.location
    document.getElementById("test").value =
        "Key: " + (keys[e.keyCode] || e.keyCode) +
        ", Location: " + (locations[e.location] || e.location);

    e.preventDefault();
});
document.getElementById("test").focus();

<input id="test" type="text" style="width: 100%;" value="Click here and test alt, ctrl and altgr"/>

07-24 21:00