【问题标题】:How to make difference between question mark ? and / for azerty keyboard如何区分问号?和 / 用于 azerty 键盘
【发布时间】:2014-07-28 12:30:30
【问题描述】:

当我将 ?/ 键与 qwerty 键盘上的 javascript 绑定时,它们具有相同的 keycode (191) 但您必须按 shift 才能执行?

我如何知道在 azerty keyboard 上按下了哪个字符(布局如下所示),因为它们是不同的键,两者都需要 Shift,我得到了keyup.:

 $(document).keyup(function(event) {
        if (event.which === 191) {
            action();
        }
    });

(原始图像是 Yitscar(英语维基百科)Michka B(法语维基百科)的“KB France”,通过 Wikimedia Commons 在 Creative Commons Attribution-Share Alike 3.0 下获得许可 - 请参阅在 the article linked above 中的使用。)

【问题讨论】:

  • Qwerty 不是键盘布局:是几十个布局的家族。您至少应该提及您指的是哪个国家/地区。
  • 你需要检查 Shift 是否也被按下了。
  • @ÁlvaroG.Vicario:而且 azerty 不是 qwerty(尽管它是基于它的):en.wikipedia.org/wiki/AZERTY
  • @SilviuBurcea:“但是怎么用azerty键盘,两个键的keycode相同,需要shift。”
  • 这很简单,你可以绑定到keypress 事件,这会给你不同的键码,或者你检查event.shiftKey

标签: javascript keyboard-shortcuts keyboard-events keycode


【解决方案1】:

使用keypress 事件

$(document).keypress(function(event) {
    if (event.which === 666) {
        action();
    }
});

我没有azerty 键盘或其他任何东西,所以我没有得到相同的键码,但 keypress 事件会返回其他键码,你必须自己检查它们。

FIDDLE

【讨论】:

  • 键码存储在事件中。为什么同一个键有不同的键码?你能解释一下吗..
  • keyupkeydown 返回的键码与keypress 不同,因此使用keypress 事件将为这两个字符返回两个不同的键码,从而解决问题。
  • event.charCode 会不会更可靠?
  • 更详尽的解释见this
  • @JuanMendes - jQuery 标准化 event.which,所以不是真的。
【解决方案2】:

检查是否按下了 shift

$(document).keyup(function(event) {
        if (event.which === 191 && event.shiftKey) {
            action();
        }
});

请注意,这取决于键盘布局,如果您可以将 keypress 事件用作建议的 https://stackoverflow.com/a/24995506/227299,会更容易

更多信息请见http://unixpapa.com/js/key.html

【讨论】:

  • 是的,但是这个带有 azerty 键盘的适用于“?”和“/”。有没有解决方案可以有所作为?并感谢您的回答
猜你喜欢
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 2021-11-14
  • 2020-07-29
  • 1970-01-01
  • 2012-05-28
  • 2013-10-26
相关资源
最近更新 更多