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

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

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

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

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

 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" соответственно.

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

Если найдено универсальный сценарий переключателя, но я думаю, захватывая информацию, является более чистым.

Я также уже знаю, как связать сценарий оболочки с keyboardshortcut от того примера.

помогите значительно ценивший.

3
задан 24 November 2016 в 01:14

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, но см. ответ Nivatius для того, как использовать нажатия клавиш, включающие Fn . Я только когда-либо использовал , Супер , Управление , Высокий звук и Сдвиг . Я могу связать тот сценарий с Управление + Сдвиг + F5 , например.

<keybind key="C-S-F5">        # Toggle touchpad
  <action name="Execute"><command>/home/dkb/bin/toggle-touchpad</command></action>
</keybind>
2
ответ дан 1 December 2019 в 15:55

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

файл конфигурации сценария

# 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 затем закрывают всплывающее окно, прокручивают в долгом выводе и высматривают код клавиши.

1
ответ дан 1 December 2019 в 15:55

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

КОММЕНТАРИЙ
synclient (второй): перечисляет фактические параметры
grep : выберите строку, относящуюся к Сенсорной панели
cut -d = -f 2 : получите только часть после "="
expr \( ... + 1 \) %2 : инкремент 1 и получает напоминание подразделения 2 (т.е. переключите 0/1),
synclient TouchpadOff= : установите TouchpadOff на результат вышеупомянутых
bash -c "..." : удостоверьтесь, что все вышеупомянутое выполняется в оболочке удара.

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

1
ответ дан 1 December 2019 в 15:55

Другие вопросы по тегам:

Похожие вопросы: