web-dev-qa-db-fra.com

touche pour basculer le touchpad dans lubuntu (openbox)

J'utilise Lubuntu. Je souhaite ajouter un raccourci pour activer (activer et désactiver) le pavé tactile.

Je sais que je dois éditer le fichier XML dans ~/.config/openbox (dans mon cas, c'est lubuntu-rc.xml) comme décrit ici et ici

Je veux qu'il se déclenche lorsque Fn et F5 sont enfoncés (une icône sur le pavé tactile est présente sur mon Dell, je suppose donc que cela déclenche également la création d'un raccourci clavier x86, mais je ne sais pas si c'est le cas)

sur ma machine

 synclient TouchPadOff=1

éteint le touchpad, et

  synclient TouchPadOff=0

l'allume à nouveau.

La commande

synclient

sans aucune option, retourne cette liste

Parameter settings:
    LeftEdge = 300
    RightEdge = 1700
    TopEdge = 210
    BottomEdge = 1190
    FingerLow = 12
    FingerHigh = 15
    MaxTapTime = 180
    MaxTapMove = 107
    MaxDoubleTapTime = 180
    SingleTapTimeout = 180
    ClickTime = 100
    EmulateMidButtonTime = 75
    EmulateTwoFingerMinZ = 141
    EmulateTwoFingerMinW = 7
    VertScrollDelta = 48
    HorizScrollDelta = 48
    VertEdgeScroll = 1
    HorizEdgeScroll = 0
    CornerCoasting = 0
    VertTwoFingerScroll = 1
    HorizTwoFingerScroll = 0
    MinSpeed = 1
    MaxSpeed = 1.75
    AccelFactor = 0.0819336
    TouchpadOff = 0
    LockedDrags = 0
    LockedDragTimeout = 5000
    RTCornerButton = 2
    RBCornerButton = 3
    LTCornerButton = 0
    LBCornerButton = 0
    TapButton1 = 1
    TapButton2 = 3
    TapButton3 = 0
    ClickFinger1 = 1
    ClickFinger2 = 1
    ClickFinger3 = 0
    CircularScrolling = 0
    CircScrollDelta = 0.1
    CircScrollTrigger = 0
    CircularPad = 0
    PalmDetect = 0
    PalmMinWidth = 10
    PalmMinZ = 100
    CoastingSpeed = 20
    CoastingFriction = 50
    PressureMotionMinZ = 15
    PressureMotionMaxZ = 80
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    ResolutionDetect = 1
    GrabEventDevice = 1
    TapAndDragGesture = 1
    AreaLeftEdge = 0
    AreaRightEdge = 0
    AreaTopEdge = 0
    AreaBottomEdge = 0
    HorizHysteresis = 12
    VertHysteresis = 12
    ClickPad = 0

comme vous pouvez le voir, il y a la ligne "TouchpadOff = 0".

Donc, ce que je demande en gros, c’est quelqu'un qui sait comment utiliser grep et les expressions régulières pour me dire comment écrire un script Shell qui lit la sortie de snyclient et exécute "synclient TochPadOff = 0" ou "synclient TochPadOff = 1" en conséquence .

Si trouvé ceci script qui fait quelque chose de très similaire , mais je me bats sur la partie grep.

Si trouvé un script à bascule générique , mais je pense que la recherche d'informations est plus propre.

Je sais aussi déjà comment lier un script de shell à un raccourci clavier à partir de cet exemple.

aide grandement appréciée.

3
Nivatius

Cela fonctionne pour moi:

  #!/bin/sh
  TOGGLE=$HOME/.toggle

  if [ ! -e $TOGGLE ]; then
    touch $TOGGLE
    synclient TouchPadOff=1 &
  else
    rm $TOGGLE
    synclient TouchPadOff=0 &
  fi

exit 0

Il ne semble pas y avoir besoin de grep. En outre, je ne suis pas trop sûr que Openbox aime Fn dans n'importe quel rc.xml mais voir réponse de Nivatius pour savoir comment utiliser les pressions de touche impliquant Fn. J'ai seulement utilisé SuperControlAlt, et Shift. Je peux lier ce script à Control+Shift+F5, par exemple.

<keybind key="C-S-F5">        # Toggle touchpad
  <action name="Execute"><command>/home/dkb/bin/toggle-touchpad</command></action>
</keybind>
2
DK Bose

Voici ce que j'ai placé dans mon ~/.config/openbox/lubuntu-rc.xml

<keybind key='XF86TouchpadToggle'>
    <action name='Execute'>
        <command>bash -c "synclient TouchpadOff=$(expr \( $(synclient | grep TouchpadOff | cut -d = -f 2) + 1 \) % 2)"</command>
    </action>
</keybind>

COMMENTAIRE
synclient (deuxième): liste les paramètres actuels
grep: sélectionne la ligne se rapportant au Touchpad
cut -d = -f 2: n'obtient que la partie après "="
expr \( ... + 1 \) %2: incrémente de 1 et récupère le rappel de division par 2 (c.-à-d. Bascule 0/1)
synclient TouchpadOff=: définit TouchpadOff sur le résultat ci-dessus
bash -c "...": assurez-vous que tout ce qui précède est exécuté dans un shell bash.

De cette façon, je n'ai pas besoin d'un script shell séparé. Mais vous pouvez facilement tout mettre dans un script si vous préférez.

1
Mario F.

Je me suis installé pour cette solution:

scénario

# This Shell script is PUBLIC DOMAIN. You may do whatever you want with it.

TOGGLE=$HOME/.touchpadtoggle

if [ ! -e $TOGGLE ]; then
    touch $TOGGLE
    synclient TouchpadOff=1
else
    rm $TOGGLE
    synclient TouchpadOff=0
fi

fichier de configuration

<!-- toggle touchpad with fn key fn+F5 -->
    <keybind key="XF86TouchpadToggle">
     <action name="Execute">
          <command>~/scripts/touchpadtoggle.sh</command>
         </action>
    </keybind>

Le chemin en commande, bien sûr, doit pointer vers votre script

J'ai utilisé xev pour trouver le code XF de fn + F5:

lancez xev, appuyez sur les touches Fn et F5, puis fermez la fenêtre contextuelle, faites défiler la liste vers le haut et recherchez le code d'activation.

1
Nivatius