zpět k lekci

Rozšíření horkých kláves

důležitost: 5

Vytvořte funkci spusťNaKlávesy(funkce, kód1, kód2, ... kód_n), která spustí funkci funkce při současném stisknutí kláves s kódy kód1, kód2, …, kód_n.

Například následující kód zobrazí alert, když jsou stisknuty současně "Q" a "W" (v jakémkoli jazyce, s CapsLockem nebo bez něj).

spusťNaKlávesy(
  () => alert("Ahoj!"),
  "KeyQ",
  "KeyW"
);

Demo v novém okně

Měli bychom použít dva handlery: document.onkeydown a document.onkeyup.

Vytvořme množinu stisknuté = new Set(), v níž si budeme uchovávat aktuálně stisknuté klávesy.

První handler je do ní bude přidávat, druhý je z ní bude odstraňovat. Při každém keydown si ověříme, zda máme stisknutých dost kláves, a pokud ano, spustíme funkci.

Otevřít řešení na pískovišti.