Rileva doppia pressione del tasto Ctrl in JS
-
19-09-2019 - |
Domanda
Ho un CMS personalizzato e vorrei aggiungere un "menu di scelte rapide" innescata dalla pressione del tasto Ctrl due volte nell'arco di, diciamo, 300 millisecondi. Io uso prototipo, quindi il mio punto di partenza, ovviamente, è:
Event.observe(document, 'keypress', function(event)
{ if(event.keyCode == Event.KEY_XYZ) { show_shortcuts});
Il mio approccio al momento sarebbe la compilazione di una variabile globale con l'ora corrente in millisecondi, e il controllo su ogni pressione se la pressione dei tasti è avvenuto a meno di 300 millisecondi fa.
Ma forse c'è una soluzione più elegante?
Soluzione
Questo dovrebbe funzionare. Magari aggiungere qualche ulteriore verifica se non qualche altro tasto, come Alt o Maiusc vengono premuti contemporaneamente. La speranza è autoesplicativo, se non basta chiedere e fornisco un chiarimento.
var dblCtrlKey = 0;
Event.observe(document, 'keydown', function(event) {
if (dblCtrlKey != 0 && event.keyCode == 17) {
alert("Ok double ctrl");
} else {
dblCtrlKey = setTimeout('dblCtrlKey = 0;', 300);
}
});