У меня есть ThinkPad Edge E520 и я использую Ubuntu 14.04 LTS.
Я хотел бы иметь исполняемый файл на своем рабочем столе, который может легко включать или выключать мою сенсорную панель и TrackPoint:
xinput list
...
⎜ ↳ TPPS/2 IBM TrackPoint id=15 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)]
В результате собственных исследований я создал два файла, один для его включения. и один, чтобы выключить его. Однако я не могу понять, как объединить эти две программы в одну программу, чтобы отключить эти входные данные, если они включены, и наоборот. Я играл с , если , но могу заставить программу всегда включать входы или всегда их выключать.
Вот моя программа для включения входов:
xinput set-prop 15 "Device Enabled" 1
xinput set-prop 13 "Device Enabled" 1
и другая для их отключения:
xinput set-prop 15 "Device Enabled" 0
xinput set-prop 13 "Device Enabled" 0
Может ли кто-нибудь помочь мне объединить их в одну программу?
Заранее спасибо :)
Я использую другой подход для переключения состояния сенсорной панели: synclient
. Вы могли также использовать свои команды xinput вместо этого, но я предпочитаю synclient.
я использую следующий сценарий, присвоенный горячей клавише, для переключения моей сенсорной панели вкл\выкл:
#!/bin/bash
if [ -z "$(synclient | grep TouchpadOff | grep 1)" ]; then
synclient TouchpadOff=1
else
synclient TouchpadOff=0
fi
, Как это работает?
При выполнении synclient
без любых аргументов, это возвращает список всех настроек и их текущего состояния. Из этого списка сценарий захватывает опцию "TouchpadOff", которая является - кто предположил бы это - 1, если сенсорная панель выключена и 0 elsewise.
Для проверки этого я использовал тест -z
переключатель (после пустой строки), объединенный с другим grep, который оценивает к true
, если сенсорная панель выключена. В этом случае это снова звонит synclient
с аргументом, говоря этому установить опцию на "1", таким образом, отключая сенсорную панель.
Elsewise, сценарий делает противоположное и повторно включает сенсорную панель.
<час>Примечание, что synclient не хранит настройки постоянно, поэтому если Вы не делаете ничего больше, Ваш toucpad будет всегда включаться на начальной загрузке.
Я сделал немного сценария, который можно попробовать. Выполните его дважды от Терминала, чтобы видеть, может ли это запретить и повторно включить устройство 15. Если это будет работать, то я отредактирую в 13. Тест
Я использую этот сценарий для переключения состояния сенсорной панели.
#!/bin/bash
id=$(xinput | grep -i "TouchPad" | cut -f 2 | cut -d= -f 2)
status=$(xinput --list-props $id | grep "Device Enabled" | cut -f 3)
if [ $status -eq 1 ]; then
xinput --disable $id
else
xinput --enable $id
fi
Спасибо Seppi!
Ваш сценарий работал отлично. Я добавил в одной из моих исходных строк, чтобы также позволить/запретить TrackPoint также.
if [ -z "$(synclient | grep TouchpadOff | grep 1)" ]; then
synclient TouchpadOff=1
xinput set-prop 15 "Device Enabled" 0
else
synclient TouchpadOff=0
xinput set-prop 15 "Device Enabled" 1
fi