Accéder au contenu principalAccéder à la navigationAccéder au pied de page
Page d'accueil IncluddyPage d'accueil Includdy
  • FAQ
  • Blog
  • Contact
Includdy

Rendons le web accessible à tous

Produit

  • Scan automatique
  • Correction guidée
  • Collaboration

Ressources

  • FAQ
  • Blog
  • Glossaire
  • RGAA
  • Plan du site

Légal

  • CGU
  • CGV
  • Mentions légales
  • Politique de confidentialité

© 2026 Includdy. Tous droits réservés.

  1. Accueil
  2. RGAA 4.1.2
  3. Consultation
  4. 13.12 Mouvement de l'appareil

Dans chaque page web, les fonctionnalités qui impliquent un mouvement de l’appareil ou vers l’appareil peuvent-elles être satisfaites de manière alternative (hors cas particuliers) ?

Un utilisateur en fauteuil roulant fixe son téléphone sur un support : il ne peut pas secouer l’appareil. Si votre application déclenche une action uniquement via le gyroscope ou l’accéléromètre, cet utilisateur est bloqué sans recours. Les personnes ayant des tremblements sont dans la situation inverse : chaque mouvement involontaire risque de déclencher une action non souhaitée. Bouger son téléphone n’est pas universel.

Ce critère impose deux garanties cumulatives. Première garantie : toute fonctionnalité déclenchée par le mouvement de l’appareil (secouage, inclinaison) ou par un geste en direction de l’appareil (approcher la main devant le capteur de proximité) doit avoir une alternative via un composant d’interface classique : bouton, lien, champ ou tout autre élément HTML actionnable. Deuxième garantie : l’utilisateur doit pouvoir désactiver lui-même la détection de mouvement, et cette désactivation doit effectivement empêcher tout déclenchement accidentel.

Deux exceptions dispensent de l’obligation. Quand le mouvement est essentiel à la fonctionnalité elle-même (un niveau à bulle numérique, une boussole, une application de réalité augmentée basée sur l’orientation), aucune alternative n’est requise. Quand le mouvement est activé via une interface déjà compatible avec l’accessibilité, le critère ne s’applique pas non plus. En dehors de ces deux cas : alternative obligatoire, désactivation obligatoire.

3 tests pour confirmer qu'une alternative au mouvement de l'appareil est proposée

1️⃣ Alternative via composant d'interface pour les fonctionnalités par mouvement

  1. Identifiez toutes les fonctionnalités déclenchées en bougeant ou secouant l’appareil (secouage pour annuler, inclinaison pour faire défiler, etc.).
  2. Pour chacune, vérifiez qu’un composant d’interface visible permet d’accomplir la même action : bouton, lien, champ ou autre élément interactif.
  3. Toutes les fonctionnalités mouvement ont une alternative via l’interface : test validé. Une seule n’en a pas : test échoué.

2️⃣ Alternative via composant d'interface pour les gestes en direction de l'appareil

  1. Identifiez les fonctionnalités activées par un geste orienté vers l’appareil (approcher la main devant le capteur de proximité, pointer vers la caméra, etc.).
  2. Pour chacune, vérifiez qu’un composant d’interface standard permet d’accomplir la même action sans geste directionnel.
  3. Toutes couvertes : test validé. Une seule manquante : test échoué.

3️⃣ Désactivation de la détection de mouvement dans l'interface

  1. Identifiez toutes les fonctionnalités déclenchées par le mouvement de l’appareil.
  2. Vérifiez qu’un réglage dans la page ou l’application (case à cocher, bouton, paramètre) permet de désactiver la détection de mouvement.
  3. Activez ce réglage, puis simulez des mouvements : vérifiez qu’aucune fonctionnalité mouvement ne se déclenche.
  4. Toutes les fonctionnalités sont neutralisées par le réglage : test validé.

Exemples

❌ Non conforme : Secouage pour annuler sans alternative d’interface

<script>
window.addEventListener('devicemotion', function(event) {
  var acc = event.accelerationIncludingGravity;
  if (Math.abs(acc.x) > 20 || Math.abs(acc.y) > 20) {
    undoLastAction();
  }
});
 
function undoLastAction() {
  // Seul moyen d'annuler la dernière saisie
  history.pop();
  renderState();
}
</script>

La fonctionnalité « annuler » n’est accessible que par secouage de l’appareil. Un utilisateur dont le téléphone est fixé sur un support de fauteuil roulant, ou qui ne peut pas effectuer ce geste, ne dispose d’aucun autre moyen d’annuler sa saisie. Aucun bouton, aucune option de désactivation.

✅ Conforme : Secouage avec bouton alternatif et option de désactivation

<div class="toolbar">
  <button type="button" id="btn-undo" onclick="undoLastAction()">
    Annuler la dernière action
  </button>
 
  <label class="motion-setting">
    <input
      type="checkbox"
      id="disable-motion"
      onchange="toggleMotion(this.checked)"
    >
    Désactiver la détection de mouvement
  </label>
</div>
 
<script>
var motionDisabled = false;
 
function toggleMotion(disabled) {
  motionDisabled = disabled;
  localStorage.setItem('motionDisabled', disabled);
}
 
window.addEventListener('devicemotion', function(event) {
  if (motionDisabled) return;
  var acc = event.accelerationIncludingGravity;
  if (Math.abs(acc.x) > 20 || Math.abs(acc.y) > 20) {
    undoLastAction();
  }
});
 
function undoLastAction() {
  history.pop();
  renderState();
}
 
// Restaurer le préférence utilisateur
if (localStorage.getItem('motionDisabled') === 'true') {
  motionDisabled = true;
  document.getElementById('disable-motion').checked = true;
}
</script>

Deux exigences sont satisfaites : le bouton « Annuler » fournit l’alternative d’interface requise par les tests 13.12.1 et 13.12.2. La case à cocher permet de désactiver la détection de mouvement comme l’exige le test 13.12.3 : un utilisateur avec des tremblements peut couper le gyroscope sans perdre la fonctionnalité via le bouton. Le stockage en localStorage évite de reconfigurer à chaque visite.

Astuces et pièges

⚠️ Croire que l’alternative suffit sans désactivation

Fournir un bouton alternatif ne couvre que les tests 13.12.1 et 13.12.2. Le test 13.12.3 est distinct : il exige que l’utilisateur puisse couper la détection. Pour une personne avec des tremblements essentiels, chaque mouvement involontaire déclencherait une action même si elle utilise le bouton. L’absence de désactivation fait échouer le critère même avec un bouton présent.

⚠️ Déléguer la désactivation aux réglages du système

Les paramètres d’accessibilité iOS ou Android (réduire les animations, désactiver les gestes système) ne suffisent pas. Le RGAA exige un contrôle dans l’application ou la page elle-même. Un paramètre dans l’interface de votre service est nécessaire : une case à cocher, un bouton ou une préférence utilisateur accessible depuis la page.

⚠️ Quand le mouvement est vraiment essentiel

Un niveau à bulle numérique, une boussole, un jeu de balle basé sur le gyroscope : ces fonctionnalités ne peuvent pas exister sans le mouvement lui-même. Pas d’alternative requise dans ces cas. En revanche, « secouer pour recharger » ou « incliner pour naviguer » ne sont jamais essentiels : un bouton « Actualiser » ou des flèches de navigation font parfaitement l’affaire.

💡 Auditer sans bouger : les DevTools de Chrome

Pour simuler devicemotion et deviceorientation depuis un ordinateur de bureau : Chrome DevTools > More tools > Sensors. Vous pouvez y déclencher des événements de mouvement et vérifier le comportement de la page. Firefox propose la même fonctionnalité via ses outils de simulation responsive.

⚠️ Les trois API JavaScript à surveiller dans le code

Une recherche sur DeviceMotionEvent, DeviceOrientationEvent et ondeviceproximity dans la base de code révèle immédiatement les fonctionnalités à auditer. Les bibliothèques tierces (frameworks de jeux, SDK de réalité augmentée) peuvent en introduire à votre insu : vérifiez les dépendances.

Questions fréquentes

Comment tester le critère RGAA 13.12 sur un ordinateur de bureau sans appareil mobile ?

Le DevTools de Chrome permet de simuler les événements de mouvement via l’onglet « Sensors » (F12 → Plus d’outils → Sensors). Vous pouvez déclencher manuellement deviceorientation avec des valeurs d’angle et devicemotion avec des valeurs d’accélération. Pour un audit complet, un test sur appareil réel reste recommandé, notamment pour valider le comportement à la désactivation et les seuils de déclenchement.

Quelle est la différence entre le critère RGAA 13.11 et le critère 13.12 ?

Le critère 13.11 concerne les gestes tactiles multipoints sur l’écran : pincer pour zoomer, rotation à deux doigts. Le critère 13.12 concerne les mouvements physiques de l’appareil dans l’espace (accéléromètre, gyroscope) ou les gestes sans contact détectés par capteur de proximité ou caméra. Deux critères distincts, deux séries de tests à conduire séparément.

Pourquoi la désactivation système des mouvements ne suffit pas à valider le critère RGAA 13.12 ?

Non. La désactivation doit être proposée au niveau de la page ou de l’application, pas dans les paramètres iOS ou Android. Renvoyer l’utilisateur vers les réglages système n’est pas conforme au test 13.12.3. La commande de désactivation doit être accessible directement dans l’interface, sans changer d’application.

Quelles conditions un mode accessibilité global doit-il remplir pour valider le critère RGAA 13.12 ?

Oui, à condition que ce mode soit facilement découvrable depuis chaque page concernée, sans navigation longue. Un lien « Préférences d’accessibilité » visible dans l’en-tête ou à proximité immédiate de la fonctionnalité suffit. Le critère n’impose pas un bouton sur chaque page : il exige que l’utilisateur puisse désactiver sans effort excessif.

Quelle alternative une application de fitness détectant les mouvements doit-elle proposer selon le RGAA 13.12 ?

Non. Quand le mouvement est intrinsèque à la fonctionnalité, le cas particulier s’applique. Un compteur de répétitions qui détecte les squats via accéléromètre ne peut pas être remplacé par un bouton sans perdre toute utilité. Documentez ce cas dans votre rapport d’audit avec la justification explicite : « le mouvement est essentiel à l’accomplissement de la fonctionnalité ».

Références

RGAA 4.1.2 : Critère 13.12
WCAG 2.1 :2.5.4 (A)2.5.4 (A)
Critère précédent13.11 : Annulation au pointage
1.Images
2.Cadres
3.Couleurs
4.Multimédia
5.Tableaux
6.Liens
7.Scripts
8.Éléments obligatoires
9.Structuration de l’information
10.Présentation de l’information
11.Formulaires
12.Navigation
13.Consultation
13.113.213.313.413.513.613.713.813.913.1013.1113.12