【问题标题】:Identify the physical keyboard button pressed in Javascript, irrespective of the current locale?识别在 Javascript 中按下的物理键盘按钮,而不管当前的语言环境如何?
【发布时间】:2012-04-16 03:41:14
【问题描述】:

我想根据键盘上按下的键来设置事件处理程序。这对于常见的键盘字母(0-9、A-Z 等)来说是相当简单的,因为它们在键盘上的位置在所有键盘上几乎相同,并且键码可用于识别按下的键。 (使用event.which()

但是,我想设置处理程序,以便我可以根据它们在键盘上的位置来识别键。例如,美国 (:/;) 与瑞典语 (Ö/ö) 位于同一物理位置,但我希望能够为键盘上的该位置设置一个唯一的处理程序。

在英语中,按“;” event.which() 返回 59
在 Swe 中,按“ö”event.which() 返回 246
并且它们都属于键盘上的相同物理位置。 我正在寻找一种解决方案,让这个物理位置具有唯一 ID。

这甚至可能吗(不使用可以检测当前语言环境然后将键映射到具有一些内部 id 等的目标语言环境的东西......)。

我相信有几种复杂的方法可以解决这个问题,但我对解决这个问题的最简单方法感兴趣。任何预先编写的库都乐意接受。

【问题讨论】:

  • event.which() 正如我上面提到的,我相信它包含 event.keyCode() 和 event.charCode(),还有其他可能有用的属性/方法吗?
  • 共有三个独立的事件:keydownkeypresskeyupkeydownkeyup 的工作方式非常相似,并且报告有关物理键的信息。 keypress 与输入的字符有关。因此,您可以从每个人那里获得不同的信息。 JavaScript 关键事件的权威资源是unixpapa.com/js/key.html

标签: javascript keyboard dom-events keyboard-events


【解决方案1】:

您必须根据键码映射位置。例如,您可以为 ; 编写这样的键码。 o 映射到 ; 的键码.同样,您需要一个在该位置周围解析的所有键码的列表..

抱歉,没有简单的方法。

【讨论】:

  • 好吧,这真的很糟糕!但我希望如果存在一个库来解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多