【问题标题】:how to handle non english key presses如何处理非英语按键
【发布时间】:2015-09-23 16:43:42
【问题描述】:

当我将键盘布局切换为希伯来语并按下一个字符时,它会按原样在kepress 事件中接收。例如,单击ה(v 键),然后e.which 是 1492。但是,当我进行组合时,键是英文键。所以 alt+ה e.which 是 86。所以事件看起来像 alt+v

如果我想创建一个接受组合键和回调并注册回调但还显示回调文档的函数,这会很痛苦,因为如果我注册alt+ה,那么当我按下组合时,它会看起来像alt+v 并且它与注册的组合不匹配。但是如果我注册alt+v,那么文档就很尴尬了。

所以我的问题归结为以下是否可能:

  1. 知道实际按下了哪个键(意思是知道הalt 一起按下,而不是v
  2. 希伯来语字符(或任何非英语字符)与其物理英语对应物之间的映射,因此当我的函数接收到alt+ה 时,它会将其转换为alt+v 以进行回调查找。

当然,我想要一些通用的东西,它适用于任何语言,而不仅仅是列出希伯来字母表。

【问题讨论】:

  • 虽然支持很差,但 W3C 有一个关于该主题的当前working draft
  • 虽然这只是一个有根据的猜测,但也许上面的一层(键盘,操作系统)在它到达浏览器之前就进行了这种转换,以允许常见操作的一致界面(复制、粘贴、剪切、全选、保存等),这实际上是有道理的,因此,如果您发现这种行为在系统之间足够一致,那么请使用笨拙的文档,并且很高兴您不必处理所有语言键盘。

标签: javascript internationalization


【解决方案1】:
  1. 您不应该关心它是 alt-ה 还是 alt-v,您希望在这两种情况下执行相同的操作。
  2. 如果它没有被识别,它在任何地方都没有被识别,所以你的函数也会得到 alt-v。
  3. 如果您的函数得到了某些东西(“Alt”、“ה”),您应该创建一个用于转换的对象。 var conv= { 'ה': 'v'; 'ש': 'a',...}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 2016-12-13
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2010-12-06
    相关资源
    最近更新 更多