有人在github上报告了这个问题:dead keys on MacOS,在我的代码中,我使用keypress事件来插入字符(以及快捷键的keydown):
$(document.documentElement || window).bind('keypress.cmd', function(e) {
...
self.insert(String.fromCharCode(e.which));
...
});
任何人都有使用jQuery在应用程序中修复此问题的经验?似乎在那个键盘上只有keydown被激活但不是按键。
这是唯一的解决方案:How can I eliminate dead keys on Mac OS X with international keyboard?
答案 0 :(得分:1)
死键似乎只会为键本身触发keydow和ups +实际char的完整序列。按下^
+ 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
(德国版面/ 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();
}
}