我在 Web 浏览器事件处理程序中遇到了一个问题,波浪符号 (~) 和引号 (') 字符被错误地拾取。当我输入引号时,文本字段中会输入引号,但事件处理程序会像按下波浪符号一样触发。
我认为这个 gif 最能表达我想要表达的意思:
如您所见,当按下波浪号/井号键时,浏览器会检测到按下引号,而当按下引号键时,浏览器会检测到按下波浪号。
有什么方法可以解决这个问题以便触发正确的按键事件?
键盘:Corsair K95 RGB Platinum(英式布局)
操作系统:Windows 10 家庭版
键盘设置:英语(英国)
浏览器:Google Chrome 版本 76.0.3809.100(官方版本)(64 位)
答案1
这不是一个容易“修复”的问题,因为错误出在在线解释器上。
有两种基本的键盘布局:ANSI(几乎仅在美国使用)和 ISO(几乎所有其他人都使用)。
本质上,键盘在布局上存在物理差异,即使在其他“相同”的语言映射上也是如此,例如美国英语和英国英语;ANSI 在 z & 左侧没有键,因此它将反引号 ` 和波浪号 ~ 放在大写锁定键上方,1 的左侧,而 ISO [UK] 键盘会有反引号 ` 和逻辑否定符号 ¬ [Windows] 或 § 和 ± [Mac]。竖线 | 和反斜杠 \ 移动到括号键的右侧,ISO 上没有对应的键,而是低一行。此键在 Mac 上映射,但在 Win 上不映射。
@ 和 " 通常也会交换 [Win 而不是 Mac]。
维基百科有各种适用于QWERTY 键盘在这里包括 Mac/Win 差异。
这是在我们遇到非英语键盘的额外复杂性之前,其中甚至 QWERTY 都会变为 AZERTY 或 QWERTZ 等等。
维基百科 - 键盘布局在某种程度上解释了不同语言布局之间的无数差异。
任何在线键盘解释器都需要了解所有这些,以便准确测试每个可能的按键组合。
下面有一些区别 - [图片来自维基百科,QWERTY 页面。]
美国标准
英国 ISO - Windows
英国 ISO - Mac