使用javascript检测键盘布局

Par*_*fal 18 javascript jquery keyboard-layout

有没有办法使用JavaScript检测当前的键盘布局?我找到了这个,但它只检测访问者是否在英文版面上.我需要知道确切的布局作为字符串,例如de-ch,fren.

小智 16

我知道这个问题已经过时了,但对于那些因某些键映射到其他语言环境中的不同字符这一事实而受到阻碍的人来说,这是一种可以用来处理它的方法.

最有可能的是,您的键盘事件处理程序与keyup或keydown事件相关联; 在这种情况下,event.which或event.keyCode属性的结果与用户按下的键相关联.例如,您用来键入';'的相同键 EN布局中的键是用于在RU布局中键入'ж'的键,事件报告186作为它们的代码.

但是,如果您对按键产生的角色更感兴趣,则应使用"按键"事件.此事件在keydown/up之后触发,并报告在event.which或event.charCode中键入的字符的实际unicode代码点,在上面的示例中为十进制1078或U + 0436.

所以,如果你不想在键盘布局猜测,你不需要KEYUP/KEYDOWN来区分,按键可能是你一个可行的选择.它并不完美(大多数浏览器不会一直报告不打印字符的键上的按键事件,如修改键,功能键和导航键),但它比在处理可打印字符时猜测键码更好.

  • "事件报告186作为两者的代码." 我认为这是错误的.试试这个小提琴http://jsfiddle.net/BWPaz/并尝试在不同的键盘区域设置之间切换.我个人在英语美国语言环境中获得与法语语言环境不同的代码. (6认同)
  • @JackM我获得了位于同一个键上的不同俄语和英语符号的相同密钥代码.Chrome,Windows 8.1. (2认同)

Juk*_*ela 14

键盘布局没有标准化标识符.它们具有布局创建者为其分配的名称.他们可能将语言关联作为一个定义的属性.

不应将键盘布局与语言或区域设置标识符混淆.特别是没有单一的"英语布局",但有几十种布局可用于英语.

我认为系统通常不会通过JavaScript使其当前布局设置可读.

因此,无论您通过检测键盘布局来解决什么问题,都需要采用不同的方法.


小智 5

您现在可以使用 Navigator 界面返回的 Keyboard 对象。该对象提供对检索键盘布局图和从物理键盘切换按键捕获的功能的访问。

请参阅https://developer.mozilla.org/en-US/docs/Web/API/Keyboard

目前此功能处于实验阶段,仅适用于某些主要浏览器。