Как решить проблему с мертвыми ключами 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
(немецкий макет / 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();
}
}