keybind для переключения тачпада в lubuntu (openbox)

3

Я использую lubuntu. Я хочу добавить ярлык для переключения (включения и выключения) моей сенсорной панели.

Я знаю, что мне нужно отредактировать файл xml в ~ / .config / openbox (в моем случае это lubuntu-rc.xml) , как описано здесь , и здесь

Я хочу, чтобы он запускал его, когда нажаты Fn и F5 (на моем dell есть значок тачпада на нем, поэтому я предполагаю, что он запускает также keybind x86, не знаю, если это имеет значение)

на моей машине

 synclient TouchPadOff=1

отключает сенсорную панель и

  synclient TouchPadOff=0

снова включится.

Команда

synclient

без каких-либо параметров, возвращает этот список

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

, как вы можете видеть, есть строка "TouchpadOff = 0".

Так что я в основном прошу, это тот, кто знает, как работать с grep и регулярными выражениями, чтобы рассказать мне, как написать сценарий оболочки, который читает вывод snyclient и выполняет "synclient TochPadOff = 0" или "synclient TochPadOff = 1 "соответственно.

Если найден этот скрипт, который делает что-то очень похожее , но я борется с частью grep.

Если найден общий сценарий переключения , но я думаю, что grepping информация чище.

Я также уже знаю как связать shellscript с клавиатуройhortcut из этого примера .

помощь очень ценится.     

задан Nivatius 25.01.2016 в 09:42
источник

3 ответа

3

Это работает для меня:

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

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

exit 0

Кажется, что не требуется grep . Кроме того, я не уверен, что Openbox нравится Fn в любом rc.xml, но см. ответ Ниватия , как использовать нажатия клавиш Fn . Я использовал Super , Control , Alt и Shift . Я могу связать этот скрипт с Control + Shift + F5 , например.

<keybind key="C-S-F5">        # Toggle touchpad
  <action name="Execute"><command>/home/dkb/bin/toggle-touchpad</command></action>
</keybind>
    
ответ дан DK Bose 25.01.2016 в 12:22
источник
1

Я решил для этого решения:

сценарий

# 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

конфигурационный файл

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

Конечно, путь в команде должен указывать на ваш скрипт

Я использовал xev, чтобы узнать XF-код fn + F5:

запустите xev, нажмите клавишу Fn и F5, затем закройте всплывающее окно, прокрутите вверх по длинному выходу и обратите внимание на код ключа.

    
ответ дан Nivatius 25.01.2016 в 13:09
1

Вот что я поместил в свой файл ~ / .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>

COMMENT
synclient (второй): отображает фактические параметры
grep : выберите строку, относящуюся к сенсорной панели
cut -d = -f 2 : получите только часть после «=»
expr \( ... + 1 \) %2 : увеличение на 1 и получение напоминания о делении на 2 (т. е. toggle 0/1)
synclient TouchpadOff= : установите TouchpadOff в результат выше% %__%%: убедитесь, что все вышеперечисленное выполнено в оболочка bash.

Таким образом, мне не нужен отдельный сценарий оболочки. Но вы можете легко поместить все в сценарий, если хотите.

    
ответ дан Mario F. 09.11.2017 в 10:56