web-dev-qa-db-fra.com

Configuration avancée du défilement par inertie

Est-il possible de configurer le défilement inertiel synaptique de manière à ce qu'il soit perturbé lorsqu'une touche est enfoncée sur le clavier?

Pour expliquer cette question: j'utilise souvent des raccourcis. Maintenant, lorsque je navigue par exemple sur le Web et que je fais défiler vers le haut un site Web à l’aide du défilement inertiel, je fais un zoom avant sur le site si j’essaie d’ouvrir un nouvel onglet avec Ctrl+T parce que le navigateur ne détecte que Ctrl+scrolling.

Cela se produit dans de nombreuses applications et est vraiment agaçant. J'aimais le défilement par inertie, mais tant que ce problème persiste, je dois le désactiver.

9
Mouagip

Je crains que cela ait déjà été discuté sur Xorg et porte la mention "Résolu", mais ne sera pas corrigé, car Xorg ne réalisera pas que vous appuyez sur Ctrl et le défilement par inertie est toujours en place. (Voir commentaire de Peter Hutterer et son analogie avec Ctrl).

Donc, du moins jusqu'à ce que nous ayons Unity 8 (lorsque Xorg est remplacé par Mir et, espérons-le, considéré comme vraiment résolu), nous ne pouvons avoir qu'un mot de fond plutôt qu'un correctif parfait ou un défilement par inertie complètement invalidant.

Un des correctifs que je recommanderais est de désactiver Ctrl+scrolling fonctionnalité dans l'application elle-même. C’est une solution irréprochable, car le problème persiste mais seul l’effet est supprimé et vous devez le faire pour l’application que vous utilisez le plus fréquemment avec le défilement par inertie.

Pour désactiver Ctrl+scrolling Dans Firefox, tapez about:config dans la barre d’adresse puis cliquez sur "Je ferai attention, je vous le promets!" Maintenant, dans la barre de recherche, tapez mousewheel.with_control.action, double-cliquez sur le premier résultat et définissez sa valeur sur 1, ce qui ne ferait que faire défiler le contenu au lieu de zoomer. Vous pouvez définir sa valeur sur les valeurs suivantes avec les effets correspondants:

  • 0 (disabled)
  • 1 (scroll contents)
  • 2 (go back/forward in your history)
  • 3 (default, zoom in/out)

Je mettrai à jour la réponse si je parviens à trouver une solution plus propre et plus efficace.

5
jobin

La correction d'angle aide! Bien que ce ne soit pas un correctif, j'ai constaté que l'utilisation du mode CornerCoasting du pilote Synaptics à la place de la procédure normale (désactivée) mode de défilement inertiel aide. Raison: le mode de coin est actif tout en gardant le doigt dans le coin et s’arrête immédiatement lorsqu’on le relâche. En appuyant sur Ctrl lors du virage en angle crée toujours le problème de "folie du zoom Firefox" que vous décrivez, j’ai constaté qu’il était très peu probable que je le fasse alors que je suis activement impliqué dans une action (c’est-à-dire avec le doigt sur le pavé tactile plutôt que le passage au ralenti).

Tentative de décélération en virage. La commande suivante configure le mode de décélération en virage:

synclient VertEdgeScroll=1 CornerCoasting=1 CoastingSpeed=1 CoastingFriction=0

VertEdgeScroll=1 est parce que la correction d'angle ne fonctionne qu'avec le défilement Edge, et non avec le défilement à deux doigts. Si vous aimez les virages en coin sur les bords droit et inférieur, ajoutez HorizEdgeScroll=1 à la ligne ci-dessus. CornerCoasting=1 active le mode de roue libre. CoastingSpeed est la vitesse minimale de défilement lors du ralentissement, mais cela semble également être la vitesse minimale du curseur pour le déclencher. Je le règle donc au minimum pour faciliter le déclenchement du mode, qui peut être compliqué (et impossible avec quelque chose comme CoastingSpeed=100). CoastingFriction est une valeur permettant de faire disparaître le défilement inertiel. Nous le désactivons ici pour qu'il continue jusqu'à ce que vous leviez le doigt, ce qui est différent de ce que l'on souhaite habituellement dans le cabotage conventionnel. Pour plus de détails sur ces options, voir page de manuel Synaptics .

Quelque chose ne soit pas mentionné dans la page de manuel: la correction d'angle est apparemment activée en glissant une zone non angulaire du bord dans une zone d'angle, puis en gardant le doigt là-bas . Ainsi, les mouvements d'angle s'arrêtent si vous levez accidentellement le doigt, même très brièvement, en heurtant le touchpad Edge. Le mode de déclenchement "Déplacement dans une zone de coin" signifie également que la correction d'angle ne fonctionnera pas ou sera difficile à déclencher si vos paramètres TopEdge et BottomEdge ne laissent que peu ou pas de zone non angulaire au bord. . Celles-ci sont pertinentes ici car les zones d'angle sont définies par les intersections des zones d'arête. En outre, sans une zone de bord droite de taille accessible, il sera également difficile, voire impossible, de déclencher un virage en coin. Pour mon matériel (ThinkPad X201), j’ai constaté que ces valeurs fonctionnaient bien (les vôtres peuvent être différentes, il faut expérimenter):

synclient RightEdge=4800 TopEdge=2000 BottomEdge=4000

Fabriquer un stick de coin. Bien que synclient soit idéal pour tester les paramètres avec effet immédiat, ils sont perdus lors du redémarrage de X. Pour les coller , créez un fichier /etc/X11/xorg.conf.d/51-synaptics-cornercoasting.conf ou un fichier de configuration similaire comme décrit ici (cela fonctionne également sous Ubuntu!). Pour le cas ci-dessus, le contenu serait:

Section "InputClass"
    Identifier "Touchpad tweaks"
    Driver "synaptics"
    MatchIsTouchpad "on"
        Option "VertEdgeScroll" "on"
      # Option "HorizEdgeScroll" "on" # Enable if you want this.
        Option "CornerCoasting" "on"
        Option "CoastingSpeed" "1"
        Option "CoastingFriction" "0"

        Option "RightEdge" "4800"
        Option "TopEdge" "2000"
        Option "BottomEdge" "4000"
EndSection

Et puis redémarrez X pour voir l'effet, bien sûr.

2
tanius

Substitutions possibles. Si vous voulez désactiver complètement le défilement par inertie parce que le bogue est trop gênant, il existe quelques substituts possibles (pas exactement le défilement par inertie, mais de la même manière). modes de défilement sans effort qui peuvent être utilisés à la place):

À l'échelle du système:

  • Défilement sensible du point de suivi sensible Il utilise un point de suivi ThinkPad (mais il peut être modifié pour les autres points de suivi) pour le défilement lorsque le bouton de souris intermédiaire est enfoncé. Cela s'appelle " défilement sur bouton " dans le pilote libinput, et "émulation de la souris à la souris" dans l'ancien pilote evdev.

    L'idée est ici que vous le définissiez si sensible qu'un léger effort constant défilera rapidement dans les longues pages. Pour configurer ceci, veuillez vous référer à cette question , en particulier. le answer by @htorque qui fonctionne le mieux avec le pilote libinput (valeur par défaut à partir de Ubuntu 17.10).

Spécifiquement pour Firefox:

  • extension de saisie et de déplacement . Ceci fournit une sorte de mode de lancement/de déplacement par inertie, assez similaire au défilement inertiel à deux doigts. . Configurez-le pour utiliser le bouton gauche de la souris, qui est le mode le plus similaire au défilement inerte à deux doigts sur un pavé tactile. Il suffit d'utiliser un doigt avec Tap-and-Hold, puis "jeter la page Web". Cela gêne bien sûr la sélection de texte, mais ils ont un bouton pour désactiver l'extension temporairement.

    L'interférence de sélection de texte est ennuyeuse, mais sa configuration pour tout autre bouton de la souris sur un pavé tactile rend l'utilisation très délicate. (Par exemple, avec le clic du milieu, qui peut être configuré par un clic de deux doigts sur le pavé tactile, ce serait: tapez avec deux doigts, maintenez le doigt appuyé, soulevez un doigt, puis lancez le mouvement comme ci-dessus: D).

  • Défilement automatique. Voir cette réponse pour savoir comment le configurer. En outre, configurez le tapotage à deux doigts pour créer un effet de déclic moyen uniquement synclient TapButton2=2. Maintenant, un clic de deux doigts fera apparaître l'élément de défilement automatique dans Firefox, et le pointeur de la souris situé en dehors de celui-ci fera défiler en permanence dans cette direction jusqu'au clic. Malheureusement, le pointeur doit être déplacé avec un seul doigt. (Cela ne fonctionne tout simplement pas avec deux doigts, même lorsque le défilement à deux doigts est désactivé.) Et je ne pouvais pas savoir comment inverser le sens de défilement de cette fonction pour qu'il soit "naturel".

0
tanius