keybind para alternar o touchpad em lubuntu (openbox)

3

Estou usando o lubuntu. Quero adicionar um atalho para alternar (ligar e desligar) meu touchpad.

Eu sei que preciso editar o arquivo xml em ~ / .config / openbox (no meu caso é lubuntu-rc.xml) como descrito aqui e aqui

Eu quero que ele acione quando Fn e F5 forem pressionados (no meu dell há um ícone do touchpad nele, então eu suponho que ele dispara também um atalho de teclado x86, não sei se isso importa)

na minha máquina

 synclient TouchPadOff=1

desliga o touchpad e

  synclient TouchPadOff=0

liga novamente.

O comando

synclient

sem opções, retorna esta lista

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

como você pode ver, há a linha "TouchpadOff = 0".

Então, o que eu estou basicamente pedindo é alguém que saiba como trabalhar expressões grep e regulares para me dizer como escrever um script de shell que leia a saída de snyclient e execute "synchient TochPadOff = 0" ou "synclient TochPadOff = 1 "de acordo.

Se encontrou este script que faz algo muito similar , mas eu estou lutando na parte grep.

Se for encontrado um script de alternância genérico , mas acho que o grepping a informação é mais limpa.

Eu também já sei como ligar um shellscript a um keyboardshortcut daquele exemplo .

ajuda muito apreciada.

    
por Nivatius 25.01.2016 / 09:42

3 respostas

3

Isso funciona para mim:

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

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

exit 0

Parece não haver necessidade de grep . Além disso, não tenho certeza se o Openbox gosta de Fn em qualquer rc.xml, mas veja a resposta de Nivatius para como usar pressionamentos de tecla envolvendo Fn . Eu só usei Super , Controle , Alt e Shift . Eu posso ligar esse script a Controlar + Deslocar + F5 , por exemplo.

<keybind key="C-S-F5">        # Toggle touchpad
  <action name="Execute"><command>/home/dkb/bin/toggle-touchpad</command></action>
</keybind>
    
por DK Bose 25.01.2016 / 12:22
1

Aqui está o que eu coloquei no meu ~ / .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>

COMENTÁRIO de synclient (segundo um): lista os parâmetros reais em grep : selecione a linha referente ao Touchpad em cut -d = -f 2 : obtenha apenas a parte após "="
expr \( ... + 1 \) %2 : incrementa 1 e recebe o lembrete de divisão por 2 (ou seja, alterna 0/1)
synclient TouchpadOff= : define o TouchpadOff como o resultado acima de% bash -c "..." : certifique-se de que todos os itens acima sejam executados em uma concha bash.

Dessa forma, não preciso de um script de shell separado. Mas você pode facilmente colocar tudo em um script, se preferir.

    
por Mario F. 09.11.2017 / 10:56
1

Eu decidi por essa solução:

script

# 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

arquivo de configuração

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

O caminho no comando, claro, precisa apontar para o seu script

Eu usei xev para descobrir o código XF de fn + F5:

execute xev, pressione a tecla Fn e F5 e feche o pop-up, role para cima na saída longa e procure o código-chave.

    
por Nivatius 25.01.2016 / 13:09