2015-11-30 8 views
0

Я нахожу, что коврик для мыши на моем ноутбуке раздражает, потому что я часто чищу его рукой, когда набираю текст, поэтому я решил, что я сделаю переключатель, чтобы отключить его, снова, когда я хочу использовать мышь. По какой-то причине synaptics не поднимает мой коврик для мыши, поэтому я прибегаю к использованию xinput disable 11, а 11 - идентификатором моего коврика для мыши. Я пытаюсь использовать bindsym в конфигурации i3, чтобы «m» переключить коврик для мыши. Я сделал sh-скрипт, чтобы отключить коврик для мыши, но он, похоже, не возвращается, когда я снова нажимаю «m». Я решил, что я сделаю системную переменную, чтобы определить, включен или нет коврик для мыши, но сценарий sh, похоже, не видит его должным образом. Это мой сценарий на данный момент называется «трекпада» в/бен:Как переключить команду с нажатием клавиши в Arch Linux с помощью i3

#!/bin/bash 
if [[ $1 -eq 1 ]] 
then 
    xinput enable 11 && export TRACKPAD=0 
else 
    xinput disable 11 && export TRACKPAD=1 
fi 

Тогда в моем файле конфигурации i3 у меня есть:

bindsym $mod+m exec trackpad $TRACKPAD 

Я не уверен, если это даже самый лучший метод чтобы сделать это, чтобы любые альтернативные предложения были бы замечательными. В противном случае, как я могу это исправить? Я довольно новичок в Linux.

+0

Можете ли вы проверить с помощью 'xinput', если устройство включено в настоящее время или нет? Вероятно, это будет самое простое решение. 'export' применяется только к текущему процессу и к любым дочерним процессам, он не выходит из этих границ, поэтому вы не можете использовать его так. Это должна быть переменная 'i3', которую вы использовали для отслеживания этого, чтобы она работала как аргумент. –

+0

Я не могу найти что-нибудь, что показывает, включено ли устройство с помощью xinput ... Как сделать и использовать переменную i3 в этом случае? –

+0

Не знаю. Я даже не знаю, сможешь ли ты. Я не использую 'i3'. Я хотел сказать, что вам нужно сохранить состояние вне/над скриптом (и средой сценариев), если вы хотите, чтобы такой режим работал. Если вы можете вызвать изменение в привязке 'i3', вы тоже можете это сделать. Каждый запуск устанавливает привязку к противоположному значению аргумента (или что-то еще). –

ответ

2

xinput предлагает аргумент list-props для перечисления всех свойств устройства. По крайней мере, с моей сенсорной панелью, выполнение xinput enable и xinput disable переключает свойство Device Enabled (0/1). Greping статус этого свойства позволяет проверить, включено ли устройство в данный момент.

Быстрый и грязный подход использовать это для вашей проблемы может быть следующий фрагмент:

#!/bin/bash 
if xinput list-props 11 | grep -qE "Device Enabled.*1$" 
then 
    xinput disable 11 
else 
    xinput enable 11 
fi 

или как простой однострочника:

#!/bin/bash 
xinput list-props 11 | grep -qE "Device Enabled.*1$" && xinput disable 11 || xinput enable 11 

Как вы можете см. эти сценарии не нуждаются в аргументе, который нужно передать. Простое выполнение переключает состояние устройства.

+0

Спасибо, это сработало отлично! :) –

 Смежные вопросы

  • Нет связанных вопросов^_^