Aller au contenu

Profils d'accessibilité

Les profils 🌳 umi (Unified Multimodal Input, saisie multimodale unifiée) génèrent un poste de travail utilisable sans clavier ni souris. Il se pilote par plusieurs moyens de saisie coordonnés entre eux : toucher, voix, regard… L’objectif est l’accessibilité, notamment pour les personnes en situation de handicap moteur.

Ils se composent de deux parties : un profil d’hôte umi qui déclare le matériel et la session, et un profil d’utilisateur umi qui fixe l’environnement de l’utilisateur.

Aucun moyen de saisie ne remplace seul le clavier et la souris : chacun a ses limites (précision du regard, fatigue de la voix, amplitude du geste). Le poste UMI les combine pour qu’ils se complètent, et se règle selon les capacités de l’utilisateur.

Moyen de saisieOutilUsage
ToucherÉcran tactile, clavier visuel OnboardDésigner, cliquer, saisir du texte
VoixTalonCommandes vocales
RegardTobii Eye Tracker 5, piloté par TalonDéplacer le pointeur

Exemple de coordination : le regard place le pointeur, la voix ou le clic par temporisation valide, le clavier visuel saisit le texte.

Diagram

Chaque périphérique sert un moyen de saisie : n’équiper le poste que de ceux adaptés à l’utilisateur.

ÉlémentExigence
Traqueur oculaireTobii Eye Tracker 5 (USB, identifiant fabricant 2104)
Architecturex86_64-linux uniquement (Talon ne fournit pas d’autre binaire)
MicroNécessaire pour les commandes vocales
Haut-parleursRetour sonore des frappes du clavier visuel
ÉcranUn bon écran tactile pour le contrôle du bureau et des applications
  1. Déclarer l’hôte et son utilisateur dans etc/config.yaml, tous deux avec le profil umi :

    etc/config.yaml
    users:
    alice:
    uid: 1010
    name: "Alice"
    profile: "umi"
    groups: ["global"]
    hosts:
    - hostname: "umi-desktop"
    name: "Poste accessible"
    zone: "maison:2.3"
    profile: "umi"
    users: ["alice"]

    Sur l’hôte umi, le profil d’utilisateur ajoute le compte aux groupes input et uinput, sans lesquels Talon ne peut pas injecter d’événements.

  2. Activer l’ouverture de session automatique dans la configuration de la machine, si l’utilisateur ne peut pas utiliser de clavier pour s’identifier :

    usr/machines/umi-desktop/configuration.nix
    darkone.host.umi.autoLoginUser = "alice";
  3. Générer et déployer :

    Fenêtre de terminal
    just generate
    just apply umi-desktop
  4. Tester et configurer

Options de darkone.host.umi, à poser dans usr/machines/<hôte>/configuration.nix.

OptionDéfautRôle
enableactivé par le profilActive le profil d’hôte
autoLoginUsernullCompte umi ouvert au démarrage
packagepkgs.talonPaquet Talon, ou null pour l’installer à la main

Options de darkone.home.umi, à poser dans usr/users/<login>/default.nix.

OptionDéfautRôle
enableactivé par le profilActive le profil d’utilisateur
enableTalonAutostarttrueLance Talon à l’ouverture de session
communityScriptsnullArbre talonhub/community déployé dans ~/.talon/user/community
enableDwellfalseClic par temporisation permanent
enableTrackerAutotrueRegard et clic suivent le traqueur
gazeFilterSpeed1.0Réactivité du regard (celle de Talon)
cursorFilterSpeed4.0Réactivité du pointeur (Talon : 2.0)
enableGazeControltrueLe pointeur suit le regard
enableHeadControltrueLa tête affine le pointeur placé par le regard
headSpeed5.0Sensibilité de la tête (Talon : 1)
enableHeadJumpfalseUn mouvement de tête ramène le pointeur au regard
enableMouseJumpfalseBouger une souris vers le regard y ramène le pointeur
enableGazeFocusfalseLa fenêtre regardée prend le focus (expérimental)
dwellTime1.6Délai du clic par temporisation, en secondes
panelHeight64Hauteur du panneau Cinnamon, en pixels
textScaling1.5Facteur d’agrandissement du texte (Cinnamon)
enablePaneltruePanneau imposé, réécrit à chaque déploiement
enableMaximizetrueFenêtres d’applications ouvertes maximisées (Cinnamon)
panelLaunchersFichiers, FirefoxLanceurs du panneau (fichiers .desktop)
menuFavoritesCalibration, Calculatrice, Agenda, ParamètresFavoris du menu, réécrits au déploiement
enableRofiMenutrueGrille d’applications plein écran
rofiGridResolution{ columns = 6; rows = 4; }Tuiles par page de la grille
hiddenAppsTerminaux, doublons, manuel NixOSMasquées de la grille et du menu
enableStkWithMousefalseSuperTuxKart à la souris

Avec enableStkWithMouse, l’utilisateur pilote SuperTuxKart 🡕 avec sa seule souris, par exemple un joystick adapté reconnu comme une souris (n-ABLER…). Hôte umi uniquement. Le jeu est installé, son lanceur démarre aussi le convertisseur dnf-stk-mouse.

GesteAction dans le jeu
Joystick vers l’avantAccélérer
Joystick vers l’arrièreFreiner, reculer
Joystick à gauche, à droiteTourner
Clic gauche maintenuDéraper
Double clic gaucheUtiliser l’objet (arme)
Clic droit maintenuNitro

Le pointeur reste actif : les menus du jeu se pilotent à la souris, la course l’ignore. Les gestes n’agissent que lorsque la fenêtre du jeu est active, ailleurs la souris reste une souris.

Le poste est volontairement dépouillé de tout ce qui suppose un clavier ou une souris.

ChangementRaison
Session Cinnamon en X11Talon ne fonctionne (malheureusement) pas sous Wayland
Ouverture de session automatiqueAucun mot de passe saisissable
Verrouillage et veille désactivésUn écran verrouillé est un cul-de-sac
Trousseau de clés sans mot de passeÉvite une invite impossible à satisfaire
Accessibilité active dès l’ouvertureAucune invite d’activation (Onboard)
Curseur, texte, panneau et icônes agrandisPrécision limitée du regard (quelques dizaines de pixels) et du doigt
Fenêtres d’applications maximiséesGrandes cibles, panneau toujours accessible
Ouverture par simple clic (Nemo)Un double clic par temporisation exige de changer de mode
Clavier visuel ancré en basGrandes cibles, prédiction de mots
Clavier visuel masqué au démarrageÉcran dégagé, affiché par son bouton
Thème sombre par défaut (Cinnamon)Comme les sessions GNOME

Sous Cinnamon, enablePanel organise le panneau du bas pour le regard.

EmplacementContenu
GaucheMenu, grille, lanceurs, fenêtres ouvertes
DroiteTypes de clic, zone pause, regard
PuisAccessibilité, clavier visuel
EnfinIcônes d’état (Talon, Nextcloud…), horloge

Ni icône Bluetooth ni barre de coin (afficher le bureau). L’appairage passe par le Gestionnaire Bluetooth du menu.

Les types de clic (simple, simple unique, double, glisser, secondaire) et la zone pause n’apparaissent que si le clic par temporisation est actif. La zone pause laisse le regard explorer l’écran sans rien déclencher ; les types de clic se masquent pendant la pause.

Le clic simple unique (pastille orange « 1 ») clique une seule fois, puis met le clic par temporisation en pause. À la reprise, le clic simple se répète.

Action sur la zone pauseEffet
Clic, clics actifsSuspend le clic par temporisation
Pointeur posé 1,5 s, en pauseRéactive les clics (barre verte)
Clic souris, en pauseRéactive les clics

Le bouton regard (œil) coupe le pilotage du pointeur par le regard : les yeux ne déplacent plus rien, et le clic par temporisation passe en pause pour laisser la main à la souris. Le rallumer à la souris, au toucher ou par l’action Talon user.umi_gaze réactive aussi les clics. Il est rallumé à chaque démarrage.

Avec enableRofiMenu, le premier lanceur du panneau ouvre toutes les applications en plein écran, par pages de grandes tuiles, sans barre de défilement.

CibleEffet
Tuile survoléeMise en surbrillance
Clic sur une tuileLance l’application, ferme la grille
◀ ▶ (bords de l’écran)Page précédente, suivante
FermerFerme la grille

Les panneaux de réglages restent dans le menu Cinnamon. hiddenApps masque d’autres applications (fichiers .desktop), de la grille comme du menu. rofiGridResolution règle le nombre de tuiles par page.

Le favori Calibrer le regard, en tête du menu Cinnamon, lance la calibration de Talon, sans passer par son menu dans la zone de notification. Il apparaît avec enableTrackerAuto.

Recalibrer après un changement d’écran, de position du traqueur ou de l’utilisateur, ou d’éclairage.

Le traqueur se fixe sous l’écran principal, celui où Talon calibre. Le Tobii 5 suit un écran 16:9 de 27” au plus, à 45-95 cm : au-delà (téléviseur…), la calibration s’interrompt dès le premier point.

Avec enableHeadControl, le regard amène le pointeur dans la zone visée et la tête l’affine. Au-dessus de 1, headSpeed rend la tête plus sensible ; en dessous, il atténue les mouvements de tête trop amples. Ces réglages s’essaient sans redéploiement, depuis la console (REPL) de Talon, et sont perdus au redémarrage de Talon.

  1. Ouvrir la console de Talon de l’utilisateur, depuis un compte administrateur de l’hôte :

    Fenêtre de terminal
    sudo -u alice env HOME=/home/alice /home/alice/.talon/.venv/bin/repl
  2. Lire les réglages appliqués :

    print(actions.user.umi_tuning())
  3. Essayer des valeurs, l’utilisateur au poste :

    CommandeEffet
    actions.tracking.control_head_toggle(True)Active la tête
    actions.user.umi_head_speed(5)Tête 5 fois plus sensible (défaut)
    actions.user.umi_head_speed(0.3)Tête 3 fois moins sensible
    actions.user.umi_head_speed(1)Sensibilité d’origine de Talon
    actions.user.umi_filter_speed(1, 4)Réactivité regard et pointeur (défaut)
  4. Reporter les valeurs retenues dans usr/users/<login>/default.nix (enableHeadControl, headSpeed, gazeFilterSpeed, cursorFilterSpeed), puis déployer.

Un compte ordinaire garde sa session GNOME Wayland, avec quelques différences héritées de l’hôte :

  • Démarrage : la machine ouvre la session du compte UMI. Fermer celle-ci ou changer d’utilisateur pour ouvrir la sienne.
  • Seahorse : absent, car inutilisable sans clavier.
  • su : ne transmet pas l’accès à l’écran, une invite (trousseau…) y bloquerait le compte UMI. Administrer par SSH ou depuis sa propre session.
  • Extinction : chaque service a 5 secondes pour s’arrêter.
SymptômePiste
Talon ne voit pas le traqueurRebrancher le traqueur, puis relancer Talon (règle udev appliquée au branchement)
Icône Talon absente du panneauRouvrir la session
Micrologiciel non initialiséRepasser une fois par Tobii Experience sous Windows
Session ouverte sous GNOMEVérifier le profil umi du compte et sa présence dans les users de l’hôte, puis redémarrer
Le pointeur clique tout seulenableDwell activé sans traqueur, le désactiver
Fenêtre « Clic de survol », clics toujours simples, molette inopéranteUn démon mousetweaks tourne dans la session, lancé avant la mise à jour : rouvrir la session
Le pointeur vise toujours à côté du regardRecalibrer
Calibration interrompue au premier pointÉcran de plus de 27”, ou trop éloigné
Le pointeur s’arrête avant le point regardéAugmenter gazeFilterSpeed et cursorFilterSpeed
Le pointeur dépasse ou trembleLes diminuer
La tête déplace trop le pointeurBaisser headSpeed, ou enableHeadControl à false
Le kart ne répond pas à la sourisRétablir les touches par défaut du jeu, lire les messages du convertisseur (journalctl -b -g 'dnf-stk-mouse:')
Le joystick n’est pas dans les souris lues (reading …)Absent de lsusb : le brancher sur un autre port USB (connect-debounce failed dans dmesg)

Non sur un hôte umi : la session Cinnamon est réimposée à chaque démarrage, car Talon exige X11.

Le compte ouvre la session GNOME Wayland de l’hôte, avec le clavier visuel de GNOME, le curseur et le texte agrandis. Talon et Onboard, qui exigent X11, restent inactifs.