在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"/>