【问题标题】:How to solve issue with OSX dead keys with jQuery?如何使用 jQuery 解决 OSX 死键的问题?
【发布时间】:2014-05-28 11:55:02
【问题描述】:

有人在 github 上报告此问题:dead keys on MacOS,在我的代码中,我使用 keypress 事件插入字符(以及快捷键),使用:

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

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

这是唯一的解决方案吗:How can I eliminate dead keys on Mac OS X with international keyboard?

【问题讨论】:

    标签: javascript jquery macos jquery-terminal


    【解决方案1】:

    死键似乎只触发键本身的按键和按键+实际字符的完整序列。这是按下死亡^ + 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();
        }
    }
    

    【讨论】:

    • 很好的解释,似乎我不知道那些死键在哪里。但是你的代码并不是我需要的,因为我想插入ú,所以在我的情况下,我需要检测,如果没有按键,在这些键的 keyup 中,如果没有,那么我需要在下一个处理键按键。
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多