【发布时间】:2022-01-25 07:37:48
【问题描述】:
在 JavaScript 中,你可以通过查看event.code 来获取被按下的键的单词定义,例如:
document.onkeypress = function(event) {
console.log(event.code);
};
当我按a 时,我得到KeyA。当我按向上箭头键时,我得到ArrowUp。这对于大多数键来说都很好,但是,当我在丹麦布局的键盘上按下像 ½ 这样的键时,我得到 Backquote,这是不正确的。
我没有获取 JavaScript 给我的硬编码值,而是考虑转换 event.key,它返回按键的实际值。例如,如果我在键盘上按 SHIFT + 7,event.key 将返回 /,我希望将其称为 slash(或 forward slash) .
有没有办法将字符转换为实际单词?我想要一个像这样的对象/字典:
const keys = {
'/': 'forward slash', //or slash
'a': 'a',
'space': 'Space',
'"': 'Quotation mark',
'\'': 'Apostrophe'
};
等等。然后我可以这样做:
document.onkeypress = function(event) {
const characterPressed = keys[event.key];
console.log(characterPressed);
};
是否有一个列表我可以遍历以获取每个值,或者我是否必须遍历每个可能在键盘上键入的字符,然后手动映射它们?我基本上是在寻找“字符到单词的定义”方案。
【问题讨论】:
-
@RickyMo 好的,所以有一个 unicode 字符列表,但它看起来并不那么漂亮。例如,
Backquote(取自 JavaScript)不存在。此外,不完全确定如何将½转换为任何有用的东西。你能澄清一下吗? -
string.charCodeAt()为您提供 unicode 值。例如,"½".charCodeAt(0)为您提供189,即十六进制的00BD。然后你可以从文本文件中找到"00BD;",它给你“FRACTION ONE HALF”。您甚至可以预解析文件以构建易于搜索的数据库。 -
@RickyMo 嗯,好吧,不幸的是,输出不会那么漂亮。如果我希望它对最终用户来说“漂亮”,我猜我必须手动完成这一切。丹麦键盘上的
æ字符LATIN SMALL LETTER A E不是那么漂亮哈哈。我想我可以指定它应该查看哪些字符范围。感谢您的回复。
标签: javascript keyboard-events