WCAG-succescriteria · Level A
WCAG 2.5.1: Aanwijsgebaren
WCAG 2.5.1 vereist dat alle functionaliteit die gebruikmaakt van multipoint- of padgebaseerde gebaren (zoals knijpen-om-te-zoomen of vegen) ook bediend kan worden met één enkele aanwijzer zonder een padgebaseerd gebaar, tenzij het gebaar essentieel is. Dit beschermt gebruikers met motorische beperkingen die niet betrouwbaar complexe aanraakgebaren kunnen uitvoeren.
Wat Deze Regel Betekent
WCAG 2.5.1 Pointer Gestures vereist dat elke functionaliteit op een webpagina die afhankelijk is van multipoint-gebaren (gebaren met twee of meer gelijktijdige aanraakpunten, zoals een knijpbeweging met twee vingers om in te zoomen of een veeg met drie vingers) of padgebaseerde gebaren (gebaren waarbij het afgelegde pad van de aanwijzer van belang is, zoals een veeg, een sleepbeweging langs een specifieke route of een getekende vorm) ook bedienbaar moet zijn met één enkele aanwijzer op een manier die geen padgebaseerd gebaar vereist. Een enkele aanwijzer is elke invoer die op één enkel punt werkt — dit omvat aanraking met één vinger, een muisklik, een tik met een stylus en vergelijkbare invoermethoden.
In praktische termen: als je carrousel dia’s vooruit laat gaan wanneer de gebruiker er horizontaal overheen veegt, moet je ook vooruit- en terugknoppen aanbieden die met één enkele tik of klik kunnen worden geactiveerd. Als je aangepaste kaartwidget reageert op een knijpbeweging met twee vingers om in of uit te zoomen, moet je ook zoom-in- en zoom-uitbedieningen aanbieden die slechts één tik vereisen. Het criterium verbiedt multipoint- of padgebaseerde gebaren niet — het vereist alleen dat er altijd een gelijkwaardige alternatieve bediening met één enkele aanwijzer bestaat.
De officiële WCAG-uitzondering stelt: de eis is niet van toepassing wanneer het multipoint- of padgebaseerde gebaar essentieel is. Een essentieel gebaar is een gebaar waarvan het weglaten de informatie of functionaliteit fundamenteel zou veranderen, en waarbij tekst of een andere alternatieve vorm niet hetzelfde doel kan bereiken. Een widget voor een handtekening uit de vrije hand of een tekenapplicatie waarbij het getekende pad zelf de output is, zou als essentieel kwalificeren. Het overgrote deel van navigatie-, carrousel-, kaart- en sliderinteracties komt echter niet in aanmerking voor deze uitzondering, omdat ze kunnen worden gerepliceerd met eenvoudige tik-/klikalternatieven zonder enig informatieverlies.
Dit criterium is van toepassing op alle aanwijzerinvoer: touchscreens, muis, stylus, oogvolg-aanwijzers en elk ander aanwijsapparaat. Het is een Level A-vereiste onder WCAG 2.2, wat betekent dat het wordt beschouwd als een basisvereiste voor toegankelijkheid die moet worden gehaald voor minimale conformiteit.
Een geslaagde implementatie biedt ten minste één mechanisme om elke gebaar-afhankelijke functie uit te voeren met een enkelpuntsactivatie die niet padgebaseerd is — meestal een zichtbare knop, link of andere focusbare bediening. Een mislukte implementatie vertrouwt uitsluitend op een veeg-, knijp-, spreid-, roteer- of getekend-padgebaar om een functie uit te voeren, zonder dat er een gelijkwaardig alternatief met één enkele aanwijzer wordt aangeboden.
Waarom Het Belangrijk Is
Motorische beperkingen treffen een aanzienlijk deel van de wereldbevolking. Aandoeningen zoals de ziekte van Parkinson, essentiële tremor, cerebrale parese, hemiplegie als gevolg van een beroerte, verschillen in ledematen en RSI-klachten kunnen het moeilijk of onmogelijk maken voor gebruikers om nauwkeurige multipoint- of padgebaseerde gebaren betrouwbaar uit te voeren. Volgens de Wereldgezondheidsorganisatie leven wereldwijd ongeveer 1,3 miljard mensen met een vorm van significante beperking, en motorische en mobiliteitsbeperkingen behoren tot de meest voorkomende categorieën. Wanneer webinterfaces uitsluitend vertrouwen op complexe gebaren, worden deze gebruikers volledig buitengesloten van functionaliteit die ziende, niet-gehandicapte gebruikers als vanzelfsprekend beschouwen.
Denk aan een concreet scenario uit de echte wereld: een gebruiker met essentiële tremor bezoekt op een tablet een Turkse e-commercesite. De productafbeeldingengalerij gebruikt alleen een veeggebaar om tussen foto’s te wisselen. De gebruiker kan niet betrouwbaar een nette horizontale veeg uitvoeren — de tremor veroorzaakt onbedoelde tikken, diagonale bewegingen of onbedoelde aanrakingen met meerdere vingers. Zonder vorige-/volgende-knoppen kan de gebruiker geen extra productfoto’s bekijken en kan de aankoop volledig worden afgebroken. Het toevoegen van twee eenvoudige pijltjesknoppen kost het ontwikkelingsteam minuten, maar verwijdert een volledige barrière voor deze gebruiker.
Naast motorische beperkingen komt dit criterium ook ten goede aan gebruikers met prothesen voor de bovenste ledematen of single-switch-toegangsapparaten die een enkele aanwijzer emuleren, gebruikers die apparaten bedienen die op rolstoelen zijn gemonteerd waarbij draaien of multi-touch mechanisch onpraktisch is, en oudere volwassenen die complexe aanraakgebaren onintuïtief of moeilijk te leren vinden. Gebruikers die een apparaat bedienen met een muis of een niet-touchstylus worden ook direct beïnvloed — deze invoermethoden zijn van nature enkelpunts en kunnen helemaal geen multipoint-gebaren uitvoeren.
Vanuit gebruiksvriendelijkheid en zakelijk perspectief verbeteren expliciete bedieningen met één enkele aanwijzer (knoppen, links) ook de vindbaarheid voor alle gebruikers, verminderen ze de cognitieve belasting en kunnen ze positief bijdragen aan taakvoltooiingspercentages en conversiemetingen. Zoekmachines kunnen navigatie op basis van knoppen ook betrouwbaarder parseren en volgen dan interacties op basis van gebaren, wat secundaire SEO-voordelen biedt voor doorzoekbare navigatiepatronen.
Gerelateerde Axe-core-regels
WCAG 2.5.1 vereist handmatige tests omdat geautomatiseerde tools niet betrouwbaar kunnen detecteren of een gebaar-afhankelijk gedrag een alternatief met één enkele aanwijzer heeft. Er is geen geautomatiseerde axe-core-regel die direct aan dit criterium is gekoppeld. De redenen waarom geautomatiseerde detectie onvoldoende is, zijn:
- Handmatige test vereist — gebaardetectie: Geautomatiseerde scanners analyseren statische DOM-structuur en berekende stijlen. Ze kunnen het gedrag van JavaScript-eventlisteners tijdens runtime niet observeren op een manier die onderscheid maakt tussen een
touchstart/touchmove/touchend-handler die een padafhankelijke veeg implementeert of slechts een tik. Een scanner ziet dat touch-events aanwezig zijn, maar kan niet bepalen of de resulterende functionaliteit ook beschikbaar is via een alternatief met één enkele aanwijzer. Dit vereist dat een menselijke tester met de interface interageert met zowel gebaar-gebaseerde als enkelpuntsmethoden en de beschikbare functionaliteit vergelijkt. - Handmatige test vereist — verificatie van gelijkwaardigheid: Zelfs als een tool zou kunnen signaleren dat er een multipoint-gebaarlistener bestaat, kan deze niet beoordelen of een aangeboden knop of link functioneel gelijkwaardige resultaten oplevert. Het verifiëren van gelijkwaardigheid — dat het alternatief hetzelfde resultaat triggert, dat het zichtbaar en bereikbaar is en niet verborgen zit achter een extra stap — vereist menselijk oordeel, geïnformeerd door de bedoeling van het criterium.
- Handmatige test vereist — uitzondering voor essentiële gebaren: Bepalen of een gebaar in aanmerking komt voor de “essentiële” uitzondering vereist contextueel begrip van het doel van de applicatie, iets wat geen enkele geautomatiseerde regel betrouwbaar kan beoordelen.
Testers moeten de ontwikkelaarstools van de browser gebruiken om gekoppelde eventlisteners te inspecteren (in Chrome DevTools: klik met de rechtermuisknop op een element, kies “Inspecteren” en bekijk vervolgens het tabblad “Event Listeners”) als startpunt om te identificeren welke elementen touch- of pointer-eventhandlers hebben, en vervolgens handmatig de aanwezigheid en gelijkwaardigheid van alternatieven met één enkele aanwijzer verifiëren.
Hoe te Testen
- Voer een geautomatiseerde scan uit als basislijn: Gebruik axe DevTools, Lighthouse of de ingebouwde audit van de Accsible-widget om de pagina te scannen. Hoewel geen enkele regel direct aan 2.5.1 is gekoppeld, kunnen de scanresultaten gerelateerde problemen signaleren (zoals ontbrekende focusbare bedieningen) die context bieden voor handmatige beoordeling. Noteer interactieve elementen die worden gemarkeerd vanwege ontbrekende toetsenbord- of aanwijzerondersteuning.
- Identificeer gebaar-afhankelijke functionaliteit: Verken de pagina handmatig op een touchapparaat (of met behulp van apparaat-emulatie in Chrome DevTools — schakel de apparaatwerkbalk in en gebruik gesimuleerde aanraking). Let op carrousels, sliders, kaarten, accordeons, afbeeldingsgalerijen, scrollbare panelen, drag-and-dropinterfaces, tekentools en elk ander component dat reageert op aanraakgebaren. Documenteer elke functie die je ontdekt die wordt geactiveerd door een veeg-, knijp-, roteer- of ander padgebaseerd of multipoint-gebaar.
- Probeer enkelpunts-equivalenten: Probeer voor elke geïdentificeerde gebaar-afhankelijke functie dezelfde functie uit te voeren met alleen enkele tikken (of muisklikken op een desktop). Controleer of er zichtbare bedieningen zoals knoppen, pijlen of links bestaan die hetzelfde resultaat triggeren. Probeer deze bedieningen te gebruiken met een muis, een toetsenbord (Tab om te focussen, Enter/Spatie om te activeren) en een schermlezer.
- Verificatie met schermlezer (NVDA + Firefox): Open NVDA en Firefox. Navigeer door de interactieve componenten met Tab en pijltjestoetsen. Controleer of bedieningen met één enkele aanwijzer (knoppen, links) voor gebaar-gebaseerde functies worden aangekondigd door de schermlezer, via het toetsenbord bereikbaar zijn en het verwachte resultaat opleveren wanneer ze worden geactiveerd.
- Verificatie met schermlezer (VoiceOver + Safari op iOS): Schakel VoiceOver in op een iPhone of iPad. Veeg met één vinger naar rechts om door elementen te navigeren. Controleer of alle bedieningen die alternatieven met één enkele aanwijzer voor gebaren bieden, bereikbaar en activeerbaar zijn via de tikgebaren van VoiceOver en of ze het juiste resultaat opleveren.
- Verificatie met schermlezer (JAWS + Chrome): Gebruik JAWS met Chrome op Windows. Doorloop interactieve componenten met Tab en controleer of bedieningen die als alternatief voor gebaren dienen focusbaar, correct gelabeld en functioneel zijn.
- Beoordeel de essentiële uitzondering: Bepaal voor elke gebaar-afhankelijke functie zonder alternatief met één enkele aanwijzer of het gebaar werkelijk essentieel is voor de inhoud of functionaliteit. Als je de uitzondering niet kunt rechtvaardigen, noteer dit als een fout. Documenteer je bevindingen met schermafbeeldingen en stappen om het probleem te reproduceren.
Hoe te Herstellen
Afbeeldingscarrousel met alleen veegnavigatie — Onjuist
<!-- Carousel that only listens for touch swipe events, no button controls -->
<div id='carousel' class='carousel'>
<div class='slides'>
<img src='product-1.jpg' alt='Product view 1'>
<img src='product-2.jpg' alt='Product view 2'>
<img src='product-3.jpg' alt='Product view 3'>
</div>
</div>
<!-- JavaScript only adds touchstart/touchend swipe detection -->
<script>
// Only gesture-based: no keyboard or click alternative
carousel.addEventListener('touchstart', handleSwipeStart);
carousel.addEventListener('touchend', handleSwipeEnd);
</script>
Afbeeldingscarrousel met alleen veegnavigatie — Correct
<!-- Carousel with both swipe gesture support AND visible single-pointer button controls -->
<div id='carousel' class='carousel' role='region' aria-label='Product images'>
<button id='prev-btn' aria-label='Previous image' onclick='prevSlide()'>
‹ Previous
</button>
<div class='slides'>
<img src='product-1.jpg' alt='Product view 1'>
<img src='product-2.jpg' alt='Product view 2'>
<img src='product-3.jpg' alt='Product view 3'>
</div>
<button id='next-btn' aria-label='Next image' onclick='nextSlide()'>
Next ›
</button>
</div>
<!-- Swipe is retained as an enhancement; buttons provide the single-pointer alternative -->
<script>
carousel.addEventListener('touchstart', handleSwipeStart);
carousel.addEventListener('touchend', handleSwipeEnd);
function prevSlide() { /* move to previous slide */ }
function nextSlide() { /* move to next slide */ }
</script>
Kaart met alleen knijp-om-te-zoomen — Onjuist
<!-- Map widget that only responds to two-finger pinch gestures for zoom -->
<div id='map' class='map-widget'></div>
<script>
// Only multipoint pinch gesture is wired up; no zoom buttons provided
map.addEventListener('touchstart', detectPinch);
map.addEventListener('touchmove', handlePinchZoom);
</script>
Kaart met alleen knijp-om-te-zoomen — Correct
<!-- Map widget with pinch-to-zoom PLUS visible zoom controls for single-pointer access -->
<div class='map-container' role='application' aria-label='Interactive map'>
<div id='map' class='map-widget'></div>
<div class='map-controls'>
<!-- Single-pointer alternatives for zoom in and out -->
<button type='button' aria-label='Zoom in' onclick='mapZoomIn()'>+</button>
<button type='button' aria-label='Zoom out' onclick='mapZoomOut()'>−</button>
</div>
</div>
<script>
map.addEventListener('touchstart', detectPinch);
map.addEventListener('touchmove', handlePinchZoom);
function mapZoomIn() { /* increase zoom level by one step */ }
function mapZoomOut() { /* decrease zoom level by one step */ }
</script>
Bereikslider met alleen sleep-padgebaar — Onjuist
<!-- Custom price range slider that only works by dragging a thumb along a track -->
<div class='price-slider' id='priceSlider'>
<div class='track'>
<div class='thumb' id='sliderThumb'></div>
</div>
</div>
<!-- No keyboard support, no input field, no increment/decrement buttons -->
Bereikslider met alleen sleep-padgebaar — Correct
<!-- Use the native <input type='range'> which provides built-in keyboard and single-pointer support -->
<label for='priceRange'>Maximum price: <span id='priceValue'>500</span> TL</label>
<input
type='range'
id='priceRange'
name='priceRange'
min='0'
max='1000'
value='500'
step='10'
aria-valuemin='0'
aria-valuemax='1000'
aria-valuenow='500'
aria-label='Maximum price in Turkish lira'
oninput='document.getElementById("priceValue").textContent = this.value'
>
<!-- Native range input supports click, tap, keyboard arrow keys, and touch drag --
covering all single-pointer and path-based interaction needs natively -->
Veelvoorkomende Fouten
- Carrousels aanbieden die alleen veegbewegingen ondersteunen, zonder vorige-/volgende-knoppen: Veel carrouselbibliotheken worden geleverd met alleen gebarenondersteuning; ontwikkelaars moeten navigatieknoppen expliciet configureren en renderen om een alternatief met één enkele aanwijzer te bieden.
- Navigatieknoppen op touchapparaten verbergen via CSS-mediaqueries: Een veelvoorkomend patroon verbergt pijltjesknoppen op schermen waarvan wordt aangenomen dat het touchapparaten zijn (bijv.
@media (pointer: coarse)), waardoor het alternatief met één enkele aanwijzer wordt verwijderd voor motorisch beperkte gebruikers die er zelfs op touchscreens op vertrouwen. - Uitsluitend vertrouwen op een knijpgebaar met twee vingers voor kaartzoom zonder zoombedieningen aan te bieden: Ingesloten kaarten van derden (aangepaste implementaties) laten zoomknoppen vaak weg, waardoor knijpen het enige zoommechanisme is.
- Patronen gebruiken met veeg-om-te-verwijderen of veeg-om-te-tonen zonder alternatieve actieknoop: Lijstitems in webapps die verwijder- of actieopties alleen via een horizontale veeg tonen, hebben geen gelijkwaardig tik-gebaseerd mechanisme voor gebruikers die niet betrouwbaar kunnen vegen.
- Aangepaste drag-and-dropinterfaces zonder alternatief voor herschikking via toetsenbord of klik: Sleepinteracties zijn van nature padgebaseerd; het niet bieden van een alternatief mechanisme (zoals omhoog/omlaag-knoppen of een knip-en-plakmodel) schendt dit criterium.
- Teken- of handtekeningwidgets die ervan uitgaan dat het getekende pad zelf niet de output is: Ontwikkelaars beroepen zich soms ten onrechte op de “essentiële” uitzondering voor widgets die in feite slechts UI-bedieningen zijn (bijv. een gebaar-ontgrendelpatroon om inhoud te tonen) in plaats van echte invoertools voor vrije hand.
- Bedieningen als alternatief met één enkele aanwijzer buiten het zichtbare viewport plaatsen of standaard in ingeklapte staat: Als de equivalente knoppen in de DOM bestaan maar visueel verborgen zijn of een extra interactie vereisen om zichtbaar te worden, voldoen ze niet volledig aan de eis voor een waarneembaar en bedienbaar alternatief met één enkele aanwijzer.
- Gebarenbibliotheken implementeren die pointer-events onderscheppen en standaardgedrag voorkomen: Bibliotheken die
event.preventDefault()aanroepen op touch-events kunnen onbedoeld de eigen enkelpuntsinteracties en het scrollen van de browser blokkeren, waardoor onbedoelde fouten ontstaan die verder gaan dan het gebarencriterium zelf. - Aannemen dat het toevoegen van
aria-labelaan een zone die alleen gebaren ondersteunt voldoende is: Het labelen van een veeggebied biedt geen alternatief met één enkele aanwijzer — het beschrijft het alleen voor schermlezergebruikers die het nog steeds niet kunnen bedienen zonder gebarenondersteuning. - Niet testen op echte apparaten of met touchsimulatie: Ontwikkelaars die alleen op desktop met een muis testen, ontdekken mogelijk nooit dat een functie uitsluitend met gebaren wordt bediend op mobiel, omdat de muisklikfallback toevallig op desktop werkt maar het touch-only codepad geen klik-equivalent heeft.
Relatie met de Toegankelijkheidsregelgeving van Turkije
De Presidentiële Circulaire 2025/10 van Turkije, gepubliceerd in het Staatsblad nr. 32933 op 21 juni 2025, stelt verplichte toegankelijkheidsverplichtingen voor web en mobiel vast voor een brede reeks publieke en private entiteiten die in Turkije actief zijn. De circulaire neemt WCAG 2.2 over als normatieve technische standaard, waardoor alle Level A-succescriteria — waaronder WCAG 2.5.1 Pointer Gestures — wettelijk verplichte basisvereisten worden.
De nalevingstijdlijn onder de circulaire is gelaagd: overheidsinstellingen en -organen moeten binnen één jaar na inwerkingtreding van de circulaire conformiteit bereiken, terwijl private entiteiten die onder de regeling vallen een termijn van twee jaar hebben om volledige naleving te realiseren. Niet-naleving stelt betrokken entiteiten bloot aan toezicht en handhavingsmaatregelen door de relevante toezichthoudende autoriteiten.
De entiteiten die onder de circulaire vallen, omvatten een brede dwarsdoorsnede van Turkse digitale dienstverleners. Overheidsinstellingen op alle bestuursniveaus en hun gelieerde organen vallen eronder. In de private sector is de circulaire van toepassing op e-commerceplatforms en marktplaatsen, banken en financiële instellingen, particuliere ziekenhuizen en zorgaanbieders, telecombedrijven met 200,000 of meer abonnees, reisbureaus, particuliere personenvervoerders en particuliere scholen die opereren onder een vergunning van het Ministry of National Education (MoNE).
Voor deze organisaties heeft WCAG 2.5.1 directe en praktische implicaties. Turkse e-commercesites gebruiken vaak gebaar-gestuurde productafbeeldingengalerijen, veeggebaseerde categorienavigatie en knijp-om-te-zoomen-productviewers — die nu allemaal alternatieven met één enkele aanwijzer moeten hebben. Bank- en financiële applicaties die gebaar-gebaseerde authenticatiepatronen of sleep-gebaseerde transactieinterfaces gebruiken, moeten worden geaudit en hersteld. Zorgportalen met kaartgebaseerde kliniekzoekers die knijp-zoom gebruiken, moeten zoombedieningen aanbieden. Selfserviceportalen van telecombedrijven met veeggestuurde keuzeschermen voor abonnementen moeten tik-gebaseerde bedieningen toevoegen.
Organisaties die in Turkije actief zijn, wordt sterk aangeraden WCAG 2.5.1 onmiddellijk op te nemen in hun toegankelijkheids-auditchecklists, aangezien de gebareninteractiepatronen die door dit criterium worden geraakt wijdverbreid zijn in modern responsief webdesign en mobile-first-ontwikkeling — maar vaak over het hoofd worden gezien omdat ze voor de meerderheid van de gebruikers ogenschijnlijk correct functioneren. Dit criterium proactief aanpakken als onderdeel van een WCAG 2.2 Level A-conformiteitsprogramma is zowel een wettelijke verplichting onder Presidentiële Circulaire 2025/10 als een betekenisvolle verbetering van digitale inclusie voor Turkse gebruikers met motorische beperkingen.
Bronnen & referenties
- W3C Understanding 2.5.1 Pointer Gestures
- W3C Techniques for 2.5.1 Pointer Gestures
- W3C Technique G215: Providing controls to achieve the same result as path based or multipoint gestures
- MDN: Pointer events
- MDN: Touch events
- WebAIM: Motor Disabilities and Web Accessibility
- Deque University: WCAG 2.5.1 Pointer Gestures
