event.keyCode 备选方案

event.keyCode alternative

我正在为 Firefox 开发一个虚拟键盘扩展。此扩展的功能之一是将用户按下的键转换为另一种布局。

示例:我需要在 Bashkir 布局上键入文本,但我的 OS 不支持它。所以,我可以使用这个虚拟键盘扩展而不更改系统设置。

在 Windows 不支持多种语言的 XP 上需要它。 我使用 event.keyCode 来检测按下了哪个键。我使用它是因为它可以检测到系统布局中的关键代码。

但我错过了在 Firefox 中如果键盘是非英语布局,event.keyCode 不能正确使用某些键,即 [ ] ; ' , . /\.

如果我输入 q 键,keyCode returns 81 如果我输入俄语 й ,这是同一个键,keyCode 也 returns 81。但是如果我输入 [ 键,keyCode returns 219 如果我输入俄语 х ,这是同一个键,keyCode returns 0 .

是否存在 keyCode 替代方案?

KeyboardEvents are described on the linked page on MDN 的可用属性。它们包括:

KeyboardEvent.code 似乎可以为您提供最好的信息,并且没有被弃用。但是,它只能从 Firefox 32.0 的 Nightly、Aurora 和 Developer Edition 中获得。从 Firefox 38.0 及更高版本开始,它已经或将在标准发行版中可用。

您可能需要尝试 charCodecodekeykeyCodewhich 的各种组合以获得您想要的信息.如果您希望支持范围广泛的 Firefox 版本,您几乎肯定必须使用不同属性的组合。