Suppression de doublons d'événements avec le clavier physique

This commit is contained in:
JonathanMM 2022-01-30 17:18:31 +01:00
parent d125212d19
commit 5b1e2a5ea4

View file

@ -25,6 +25,8 @@ export default class Input {
this._estBloque = false;
this._resultats = new Array<LettreResultat>();
this.ajouterEvenementClavierPhysique();
this.dessinerClavier(configuration.disposition ?? Configuration.Default.disposition);
}
@ -64,7 +66,7 @@ export default class Input {
this._inputArea.appendChild(ligneDiv);
}
this.ajouterEvenements();
this.ajouterEvenementClavierVirtuel();
this.updateClavier(this._resultats);
}
@ -97,7 +99,27 @@ export default class Input {
}
}
private ajouterEvenements(): void {
private ajouterEvenementClavierVirtuel(): void {
this._inputArea.querySelectorAll(".input-lettre").forEach((lettreDiv) =>
lettreDiv.addEventListener("click", (event) => {
event.stopPropagation();
let div = event.currentTarget;
if (!div) return;
let lettre = (div as HTMLElement).dataset["lettre"];
if (lettre === undefined) {
return;
} else if (lettre === "_effacer") {
this.effacerLettre();
} else if (lettre === "_entree") {
this.validerMot();
} else {
this.saisirLettre(lettre);
}
})
);
}
private ajouterEvenementClavierPhysique(): void {
document.addEventListener(
"keypress",
((event: KeyboardEvent) => {
@ -124,24 +146,6 @@ export default class Input {
}
}).bind(this)
);
this._inputArea.querySelectorAll(".input-lettre").forEach((lettreDiv) =>
lettreDiv.addEventListener("click", (event) => {
event.stopPropagation();
let div = event.currentTarget;
if (!div) return;
let lettre = (div as HTMLElement).dataset["lettre"];
if (lettre === undefined) {
return;
} else if (lettre === "_effacer") {
this.effacerLettre();
} else if (lettre === "_entree") {
this.validerMot();
} else {
this.saisirLettre(lettre);
}
})
);
}
private effacerLettre(): void {