1

有人在 github 上报告了这个问题:MacOS 上的死键,在我的代码中,我使用 keypress 事件插入字符(以及快捷键的 keydown),使用:

$(document.documentElement || window).bind('keypress.cmd', function(e) {
    ...
    self.insert(String.fromCharCode(e.which));
    ...
});

有人有使用 jQuery 在应用程序中修复此问题的经验吗?似乎在那个键盘上只有 keydown 被触发而不是 keypress。

这是唯一的解决方案:如何使用国际键盘消除 Mac OS X 上的死键?

4

1 回答 1

1

死键似乎只触发键本身的按键和按键+实际字符的完整序列。这是按下 dead ^+时的序列u(结果û):

down   192 c0 À
up     192 c0 À
down   85 55 U
press  117 75 u
up     85 55 U

这是死者´+ u(= ú)

down   187 bb »
up     187 bb »
down   85 55 U
press  117 75 u
up     85 55 U

反引号是用 Shift 输入的,所以序列是

down   16 10 
down   187 bb »
up     187 bb »
up     16 10 
down   85 55 U
press  117 75 u
up     85 55 U

http://jsfiddle.net/r8dMu/

(德国布局/osx10.9/Chrome)。

因此,解决方法可能是这样的:

document.body.onkeydown  = function(e) { 
    if(e.which == 229) {
       input.value += "^";
       e.preventDefault();
    }
    if(e.which == 187 && e.shiftKey) {
       input.value += "`";
       e.preventDefault();
    }
}
于 2014-05-28T12:45:14.160 回答