Kubuntu 11.10 (издание для нетбуков)
Нетбук моей жены имеет следующую проблему: когда крышка закрыта, он время от времени активирует сенсорную панель - он делает небольшие движения и нажимает , Ноутбук настроен на то, чтобы не спать, когда адаптер переменного тока подключен, поэтому, когда крышка закрывается, он продолжает делать что-то самостоятельно.
Особенно раздражает при приостановке фильма и засыпании, так как через некоторое время он постучит в окошко плеера и возобновит воспроизведение фильма, испугав всех вокруг.
Я не нашел никакой возможности отключить тачпад, когда крышка закрыта, но, может быть, есть какое-то событие, к которому я мог бы подключиться и отключить / снова включить его вручную?
Что вы можете сделать, это перевести компьютер в спящий режим перед тем, как закрыть крышку. таким образом, нажатие кнопки питания приведет к возобновлению сна, а закрытая крышка не повлияет на сенсорную панель.
В качестве альтернативы вы можете открыть свой терминал (ctrl + alt + T) и набрать
sudo rmmod psmouse
. Он позволяет использовать USB-мышь, беспроводную или другую, но выключает сенсорную панель.
Кроме того, у вас есть возможность установить сенсорную панель-индикатор, которая обеспечивает простой способ деактивировать сенсорную панель.
sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install touchpad-indicator
Она будет находиться в разделе «Приложения»> «Аксессуар» ИЛИ, в зависимости от вашего пользовательского интерфейса, будет маленькая кнопка типа «тачпад» рядом с кнопкой регулировки громкости
Мне бы очень хотелось, чтобы такая функция тоже была, но теперь я взял за привычку отключать тачпад перед тем, как закрыть крышку с помощью ярлыка (здесь Fn + F7, зависит от марки и модели ноутбука). Конечно, это совсем не решает проблему, но это большое начало. Если у вас нет предустановки привязки клавиш на вашем ноутбуке, я вполне уверен, что есть способ привязать ее вручную.
Поскольку никто не мог сказать мне, как сделать именно то, что я хотел, вот решение, которое я придумала:
$ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ FSPPS/2 Sentelic FingerSensingPad id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ USB2.0 UVC PC Camera id=10 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
↳ MSI Laptop hotkeys id=13 [slave keyboard (3)]
Как мы видим, мой тачпад с id=12
. Чтобы отключить его, мне нужно запустить:
$ xinput set-int-prop 12 "Device Enabled" 8 0
и включить его снова:
$ xinput set-int-prop 12 "Device Enabled" 8 1
Прежде всего, я могу получить состояние крышки на моей системе из этого файла:
$ cat /proc/acpi/button/lid/LID0/state
state: open
Когда я закрываю крышку, состояние становится closed
.
Теперь, чтобы получить состояние в качестве переменной, я могу проверить состояние выхода изящной команды grep
:
$ grep -q closed /proc/acpi/button/lid/*/state
$ echo $?
1
Так, чтобы включить или отключить сенсорную панель в зависимости от состояния крышки, все нужно сделать:
$ grep -q closed /proc/acpi/button/lid/*/state
$ xinput set-int-prop 12 "Device Enabled" 8 $?
Чтобы выполнять вышеуказанные команды каждый раз, когда крышка закрывается или открывается, я создал файл /etc/acpi/local/lid.sh.post
со следующим содержимым:
export XAUTHORITY=`ls -1 /home/*/.Xauthority | head -n 1`
export DISPLAY=":`ls -1 /tmp/.X11-unix/ | sed -e s/^X//g | head -n 1`"
grep -q closed /proc/acpi/button/lid/*/state
xinput set-int-prop 12 "Device Enabled" 8 $?
XAUHTORITY
и DISPLAY
должны быть установлены, чтобы позволить root
(который запускает процесс acpid
) получить доступ к сеансу пользователя X.