我想让用户按下组合键并以可读的方式显示输入。 如果按下例如 altP 我想显示
alt P
。
我知道如何处理修饰键本身,但我找不到“普通”键的解决方案。我尝试使用
event.code
属性,在这种情况下它给了我 KeyP
(event.key
或 event.which
属性不合适,因为修饰键会将值更改为例如 π
)。event.code
的值映射到 P
,特别是对于具有特殊字符的键,因为它们在不同的布局上可能具有非常不同的值。
是否有一个属性可以检索键的显示值(在没有修饰符的情况下打印在物理键盘上的值!)或是否有一个库可以将
event.code
映射到最常见键盘布局的显示值?
(例如,对于美国布局,event.code = "Quote"
映射到 Quote
/"
,对于德国布局,映射到 Ä
)
window.onload = function () {
document.addEventListener("keydown", function(){
document.getElementById("keydownResult").innerText = event.code + " pressed. Value is " + event.key + ".";
// Procduces "KeyP pressed. Value is π." on macOS with german layout.
});
};
<p id="keydownResult"></p>
除了做,
const keyCode = event.code.replace('Key', '').replace('Digit', '');
我无法找到更好的解决方案,但它现在一直有效