Как решить проблему с мертвыми ключами OSX с помощью jQuery?

Кто-то сообщил об этой проблеме на github: dead keys на MacOS. В моем коде я использую событие нажатия клавиш для вставки символов (и нажатия клавиш для ярлыков), используя:

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

У кого-нибудь есть опыт исправления этого в приложении, использующем jQuery? кажется, что на этой клавиатуре срабатывает только нажатие клавиши, но не нажатие клавиши.

Это единственное решение: как я могу устранить мертвые клавиши в Mac OS X с помощью международной клавиатуры?

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();
    }
}
Другие вопросы по тегам