Javascript 将键代码转换为实际键和代码值

Javascript 将键代码转换为实际键和代码值,javascript,google-chrome-extension,keycode,Javascript,Google Chrome Extension,Keycode,Background:我在用户的机器上存储了一个键修饰符和一个键码值,比如[“shiftKey”,32](=>shift+space)或[未定义,32](=>space)。我存储的这个数组充当“热键”,也就是说,我应该在用户按下任何与热键匹配的键时检测。例如,当用户按下Shift+Space时,我应该做一些事情。就功能而言,到目前为止,它运行良好,因为关键代码仍然匹配。唯一的问题是 问题:我无法以文本形式正确显示keyCode。(“?”键在我的系统上具有keyCode=191,但在执行Strin

Background:我在用户的机器上存储了一个键修饰符和一个键码值,比如
[“shiftKey”,32]
(=>shift+space)或
[未定义,32]
(=>space)。我存储的这个数组充当“热键”,也就是说,我应该在用户按下任何与热键匹配的键时检测。例如,当用户按下Shift+Space时,我应该做一些事情。就功能而言,到目前为止,它运行良好,因为关键代码仍然匹配。唯一的问题是

问题:我无法以文本形式正确显示
keyCode
。(“?”键在我的系统上具有
keyCode=191
,但在执行
String.fromCharCode
时,它显然不能正确显示)

我建议的解决方案:
[key modifier,keyCode]
数组转换为
[key modifier,key,code]
(因为
key
code
属性可以很容易地显示为文本)。我将编写的转换代码将在用户的机器上运行(它是一个Chrome扩展),因此不必担心没有用户的语言环境信息。问题是:如何准确地执行此转换

我的尝试:基于
keyCode
将编程键盘事件分派到假文本框,并使用
键和从中生成的
code
值作为转换结果。但是,我所能找到的唯一方法要求我实际提供
code
值,否则它们将是未定义的

最后一个问题:否则如何执行此转换?或者有没有其他的解决方法来实现我想要的?

一些想法:1)没有现成的库来实现这一点吗?2) 最兼容的东西是
which
,而不是
keyCode
,无论MDN或其他人怎么说,它在可预见的将来都会起作用(出于web兼容性的原因)。3) document.execCommand和
insertText
insertHTML
参数通常是向网页提供文本的更好解决方案,而不是假装按键。@wOxxOm 3)我想你误解了:我在数据库中存储的
[键修饰符,键代码]
对是一个“热键”,即。,我应该检测用户何时按下与热键匹配的任何键。例如,当用户按下Shift+Space时,我应该做一些事情。就功能而言,到目前为止,它运行良好,因为关键代码仍然匹配。唯一的问题是我无法将密钥代码正确地显示为文本给用户?2) 最兼容的东西是
which
,而不是
keyCode
,无论MDN或其他人怎么说,它在可预见的将来都会起作用(出于web兼容性的原因)。3) document.execCommand和
insertText
insertHTML
参数通常是向网页提供文本的更好解决方案,而不是假装按键。@wOxxOm 3)我想你误解了:我在数据库中存储的
[键修饰符,键代码]
对是一个“热键”,即。,我应该检测用户何时按下与热键匹配的任何键。例如,当用户按下Shift+Space时,我应该做一些事情。就功能而言,到目前为止,它运行良好,因为关键代码仍然匹配。唯一的问题是,我无法将密钥代码正确地显示为用户的文本。