De Shift-, Alt-, Control- en Metatoets gebruiken

Het toetsenbord van computers heeft speciale toetsen die, als ze worden ingedrukt samen met een 'gewone' toets, de functie van die betreffende toets veranderen. De toetsen zijn:

De bovengenoemde toetsen worden worden aangeduid met de term 'modifier'. Ze veranderen namelijk tijdelijk iets aan het gedrag van het toetsenbord.
Het toetsenbord moet aan een HTML-element zijn gekoppeld om het toetsenbord te kunnen bevragen over de stand van deze toetsen. Dergelijke elementen zijn <input> en <textarea>. Door die elementen moet een keyboard-event zijn afgevuurd, nl. dat er een toets is ingedrukt. Dit gebeurt door het Object KeyboardEvent, dat standaard in elke browser beschikbaar is.

Voor het detecteren van de modifiers is er de methode getModifierStatus(toets). De parameter toets is de naam van de toets waarvan je de status wilt weten. Behalve de 'tijdelijke' modifiers is zijn er ook modifiers met een meer permanent karakter, zie het item De CapsLock-, NumLock- en ScrollLock-toets gebruiken).

getModifierStatus() retourneert de waarde true (lees: Ingedrukt of 'toets omlaag') of false (lees: Niet ingedrukt of: 'toets omhoog').

De JavaScript-functie wordt actief als het invoerveld wordt veranderd. Bij het laden van de pagina of als het invoerveld de focus krijgt kun je de stand van de toetsen nog niet opvragen. Dat kan pas na een verandering van het invoerveld.

Om te zien hoe het werkt klik je met de muis in het invoerveld en geef je een karakter in:
Alt    : --
AltGr  : --
Control: --
Meta   : --
Shift  : --

Opmerking: Als je dit uitprobeert kun je op zij-effecten stuiten. Zo is in MS-Edge de combinatie Control+H een sneltoets om de browser-geschiedenis op het scherm te tonen. Dit soort toetsencombinaties wordt door de browser afgevangen vóórdat het in het invoerveld terechtkomt.
Opmerking: Als het invoerveld de focus kwijtraakt, werkt het voorbeeld niet meer. Je moet dan opnieuw in het invoerveld klikken om het de focus terug te geven.

De code van het voorbeeld ziet er zo uit:
(Zet alles in de <body>; het JavaScript moet na de HTML komen)

<p>Om te zien hoe het werkt klik je met de muis in het invoerveld
  en geef je een karakter in: <input type="text" id="voorbeeld"
  value="Verander deze tekst"><br>
 
<code style="color:maroon; font-size:1.1em">
  Alt&nbsp;&nbsp;&nbsp;&nbsp;: </code>
  <code style="color:navy; font-size:1.1em" id="Alt">
  --</code><br>
<code style="color:maroon; font-size:1.1em">AltGr
  &nbsp;&nbsp;:   </code>
  <code style="color:navy; font-size:1.1em" id="AltGraph">
  --</code><br>
<code style="color:maroon; font-size:1.1em">Control: </code>
  <code style="color:navy; font-size:1.1em" id="Control">
  --</code><br>
<code style="color:maroon; font-size:1.1em">Meta
  &nbsp;&nbsp;&nbsp;: </code>
  <code style="color:navy; font-size:1.1em" id="Meta">
  --</code><br>
<code style="color:maroon; font-size:1.1em">Shift
  &nbsp;&nbsp;: </code>
  <code style="color:navy; font-size:1.1em" id="Shift">
  --</code></p>
 
<script>
var vv = document.getElementById('voorbeeld');
var aa = document.getElementById('Alt');
var gg = document.getElementById('AltGraph');
var cc = document.getElementById('Control');
var mm = document.getElementById('Meta');
var ss = document.getElementById('Shift');
 
vv.addEventListener("keydown", function(event) {
if (event.getModifierState("Alt"))
  aa.innerHTML = "Ingedrukt";
else
  aa.innerHTML = "Los";
 
if (event.getModifierState("AltGraph"))
  gg.innerHTML = "Ingedrukt";
else
  gg.innerHTML = "Los";
 
if (event.getModifierState("Control"))
  cc.innerHTML = "Ingedrukt";
else
  cc.innerHTML = "Los";
 
if (event.getModifierState("Meta"))
  mm.innerHTML = "Ingedrukt";
else
  mm.innerHTML = "Los";
 
if (event.getModifierState("Shift"))
  ss.innerHTML = "Ingedrukt";
else
  ss.innerHTML = "Los";
})
</script>

Bron: w3schools.com

 
terug

html-576; Laatste wijziging: 11 april 2022