Skip to content

arbitre_geste

arbitre_geste

Choisir le vocabulaire d'une main, sans exécuter l'action.

Les deux moteurs restent séparés : un pincement ne doit jamais envoyer un fichier, un poing ne doit jamais cliquer. Cet arbitre ne fait qu'une chose — dire LEQUEL des deux a la main — après confirmation temporelle (§11).

Mélanger les actions dans un seul seuil, c'est ce qui a déjà fait rater les poings le 25 août (PINCE classée avant le poing). Ici le contact pouce-index force le pointeur, et un objet déjà tenu force le transfert.

Classes

Vocabulaire

Bases: str, Enum

Ce qui circule sur le fil — les mêmes noms que le mode verrouillé.

ArbitreDeGeste

ArbitreDeGeste(seuils: Optional[SeuilsArbitre] = None)

Confirmer un vocabulaire avant de le livrer aux moteurs.

Source code in src/diapason/desktop/arbitre_geste.py
def __init__(self, seuils: Optional[SeuilsArbitre] = None) -> None:
    self.seuils = seuils or SeuilsArbitre()
    self._vocabulaire = Vocabulaire.INCONNU
    self._candidat = Vocabulaire.INCONNU
    self._images = 0
Methods:
observer
observer(
    points: Optional[Sequence[Point]],
    *,
    tenu: bool = False,
    depot_en_attente: bool = False,
    pince_confirmee: bool = False,
) -> Vocabulaire

Rendre le vocabulaire confirmé, ou le précédent s'il n'y en a pas.

Source code in src/diapason/desktop/arbitre_geste.py
def observer(
    self,
    points: Optional[Sequence[Point]],
    *,
    tenu: bool = False,
    depot_en_attente: bool = False,
    pince_confirmee: bool = False,
) -> Vocabulaire:
    """Rendre le vocabulaire confirmé, ou le précédent s'il n'y en a pas."""
    if tenu or depot_en_attente:
        self._vocabulaire = Vocabulaire.TRANSFERT
        self._candidat = Vocabulaire.TRANSFERT
        self._images = 0
        return self._vocabulaire
    if pince_confirmee and self._vocabulaire is Vocabulaire.POINTEUR:
        return self._vocabulaire

    voulu = self._lire(points or ())
    if voulu is Vocabulaire.INCONNU:
        return (
            self._vocabulaire
            if self._vocabulaire is not Vocabulaire.INCONNU
            else Vocabulaire.TRANSFERT
        )
    if voulu is self._vocabulaire:
        self._candidat = voulu
        self._images = 0
        return self._vocabulaire
    if voulu is self._candidat:
        self._images += 1
    else:
        self._candidat = voulu
        self._images = 1
    if self._images >= self.seuils.images_stables:
        self._vocabulaire = voulu
        self._images = 0
    if self._vocabulaire is Vocabulaire.INCONNU:
        return Vocabulaire.TRANSFERT
    return self._vocabulaire

Functions: