Это очень сильно зависит от раскладки клавиатуры c, и, возможно, это не универсальное c решение, но вы можете сделать что-то вроде этого, чтобы сделать ALT + I ярлыком для работы:
function custom() {
console.log('The short-cut executed');
}
let isDead = false;
document.addEventListener('keydown', e => {
if (e.altKey && e.code === 'KeyI') {
custom();
e.preventDefault();
};
if (isDead) {
e.preventDefault();
}
isDead = (e.key === 'Dead');
});
<input>
Сам мертвый ключ не может быть предотвращен, но символ, полученный после мертвого ключа. Поскольку многие свойства события клавиатуры теперь устарели, в коде используется относительно новое свойство кода , которое даст код физической клавиши, которая была нажата.
РЕДАКТИРОВАТЬ
Поскольку MacOS, по-видимому, отказывается предотвращать действие мертвых клавиш по умолчанию, вы можете использовать два события: одно на document
для запуска ярлыка, а другое на входах (или на document
а также), чтобы стереть каретку (или любые нежелательные символы).
function custom() {
console.log('The short-cut executed');
}
// KeyDown for triggering the shortcut
document.addEventListener('keydown', e => {
if (e.altKey && e.code === 'KeyI') {
custom();
};
});
// Input for removing the dead key characters
$(document).on('input', 'input', e => {
e.target.value = e.target.value.replace(/\^/g, '');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input>
Оба события необходимы, поскольку при срабатывании keydown
значение входа еще не обновляется. С другой стороны, объект события input
не имеет свойств key/code
.