Как предотвратить движение мыши от пробуждения зависшего компьютера?


32

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

Ответы:


24

Я еще не проверил BIOS, но я нашел решение!

Краткое резюме: В /proc/acpi/wakeup, вы можете увидеть, какие устройства в настоящее время включены, чтобы возобновить из режима ожидания. Этот список показывает имена (сокращенно) так называемых «устройств». Пример «PWRB» означает «кнопка питания».

Если вы пишете имена устройств в этот файл, вы переключаете их между включенным / выключенным.

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


1
Это звучит намного лучше, чем мой ответ, и я отредактировал свой ответ соответственно. Благодарность!
Роби Басак

2
Итак, это работает (однако, я попутно замечаю, что просто использование sudoне будет работать: sudo suсначала нужно сделать , а затем повторить /proc/acpi/wakeup. Однако мне интересно, нашел ли кто-нибудь способ просто отключить мышь? У меня есть оба на моем рабочем столе, подключенном через (беспроводной) USB, и это также отключит пробуждение от клавиатуры
Marco

15

Спасибо всем постерам, так как пробуждение мышью является большим неудобством, и я получил свои ответы здесь. Я хочу добавить свой поворот к решениям, поскольку это может помочь в большем количестве случаев. Я должен был отключить 3 разных предметов в /proc/acpi/wakeup. Мои устройства: EHC1, EHC2, XHCI. Первые 2 - это usb2, а третья - запись usb3. Обратите внимание, что хотя usb-трансивер для моей мыши подключен к порту usb2, а в любом порту usb3 ничего нет, компьютер будет просыпаться при движениях мыши, пока все 3 элемента не будут отключены.

$ cat /proc/acpi/wakeup | sort 
Device  S-state   Status   Sysfs node
EHC1      S3    *disabled  pci:0000:00:1d.0
EHC2      S3    *disabled  pci:0000:00:1a.0
GLAN      S4    *enabled   pci:0000:08:00.0
.. ,, ..
USB7      S3    *disabled
WLAN      S3    *disabled  pci:0000:03:00.0
XHCI      S3    *disabled  pci:0000:07:00.0

Чтобы отключить элементы пробуждения при каждом запуске, вы можете добавить что-то вроде этого в /etc/rc.local..

echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHCI > /proc/acpi/wakeup

редактировать с помощью cipricus:

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

*** Проверьте, какие элементы необходимо отключить - как указано здесь - для каждого из элементов, которые были опубликованы, как показано enabledниже cat /proc/acpi/wakeup | sort, запустив в терминале каждую из приведенных ниже команд, а затем протестировав, разбудит ли мышь систему (без необходимости перезапуска) :

sudo sh -c "echo EHC1 > /proc/acpi/wakeup"
sudo sh -c "echo EHC2 > /proc/acpi/wakeup"
sudo sh -c "echo XHCI > /proc/acpi/wakeup"

(в моем случае первого было достаточно даже после тестирования с другими портами USB)

*** Если /etc/rc.localфайл не существует - согласно этому сообщению:

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local

Файл должен выглядеть примерно так:

#!/bin/bash
echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHCI > /proc/acpi/wakeup

exit 0

Перезагружать.


Если это по-прежнему не работает, возможно, файл /etc/systemd/system/rc-local.serviceотсутствует или неправильно настроен.

Тест с

sudo /etc/init.d/rc.local start

а также

sudo systemctl status rc-local

После Как включить /etc/rc.local с Systemd :

Создайте файл:

sudo nano /etc/systemd/system/rc-local.service

Затем добавьте следующий контент к нему.

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target

Сохраните и закройте файл. Чтобы сохранить файл в текстовом редакторе Nano, нажмите Ctrl + O, затем нажмите Enter для подтверждения. Чтобы выйти из файла, нажмите Ctrl + X.

Проверьте все хорошо без ошибок с:

sudo systemctl start rc-local.service
sudo systemctl status rc-local.service

Перезагрузитесь, чтобы увидеть изменения.


Если вам не нравятся мои изменения, пожалуйста, дайте мне знать, отметив @cipricus, и я опубликую отдельный ответ, связанный с вышеизложенным.

6

Моя система Ubuntu 15.10

Я попытался использовать lsusbкоманду, чтобы найти устройство мыши. Это очень просто, вы печатаете, lsusbзатем отключаете мышь (в моем случае это Bluetooth-приемник) и печатаете lsusbснова. Устройство выглядит так:

Bus 007 Device 008: ID 24ae:2000

Теперь найдите его в /sys/bus/usb/devices/папке тем же способом (отключите / подключите). В моем случае я обнаружил, что они где-то в папках начинаются с 7-2*.

Теперь попробуйте прочитать idProduct и idVendor. Например: cat /sys/bus/usb/devices/7-2.3/idProduct=> 2000, cat /sys/bus/usb/devices/7-2.3/idVendor=> 24ae. Вот и все.

Наконец я создаю сценарий в /lib/systemd/system-sleepкаталоге, назовите его как хотите.

#! /bin/sh

if [ ! -r /sys/bus/usb/devices/7-2.3/power/wakeup ]; then
    exit 0
fi
case "$1" in
    pre )
    echo disabled > /sys/bus/usb/devices/7-2.3/power/wakeup
;;
esac

Все сделано.


Он работает с Ubuntu 18.04 на моем ноутбуке.
Минь Нгуен

1

этот скрипт решил мою проблему. проверить это.

    #!/bin/bash

# allow only one instance
r=$(pidof -x -o $$ ssmonoff.sh)
set -- $r
if [ "${#@}" -ge 1 ]; then
    echo "Script already running. Exit..."
    exit
fi

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while read line; do
    if echo $line | grep "boolean true" &> /dev/null; then
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "0"
            xset dpms force off
    else
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "1"
    fi
done )

Все, что вам нужно сделать, это, во-первых, запустить sudo xinput list, найти заданное имя вашей мыши USB и вставить его в скрипт. Затем сохраните файл как «ssmonoff.sh», сделайте его исполняемым и установите для запуска при запуске.


1

Отличное объяснение. Я просто добавил в rc.local следующую команду

for d in `cat wakeup |grep enabled|grep -v PS2K|cut -b -4`; do echo $d >/proc/acpi/wakeup ; done

отключить каждое устройство, кроме PS2K (клавиатура PS2) от пробуждения. Просто и работает!


0

Может быть способ, специфичный для вашего оборудования, и в этом случае опция может быть доступна через настройки BIOS вашей системы.

Доступ к меню BIOS для изменения настроек также зависит от системы. Обычно вы нажимаете клавишу сразу после перезагрузки, и клавиша для нажатия часто отображается на экране.

Однако ответ пользователя 138339 кажется более общим способом достижения того, что вам нужно, и вы можете сделать это из работающей системы.


0

Это мой пошаговый «учебник», который поможет вам:

  1. Используйте команду, cat /proc/acpi/wakeupчтобы показать список устройств пробуждения
  2. Используйте команду sudo sh -c "echo XXXX >/proc/acpi/wakeup"(замените «XXXX» на код вашего устройства), чтобы переключить состояние устройства (включено / отключено). Перейдите по одному устройству за раз и попробуйте приостановить работу своего устройства и включить его с помощью устройства, которое вы хотите отключить, пока заслуженное устройство не сможет разбудить устройство. Не забывайте всегда включать устройства, которые вы не хотите отключать.
  3. Когда вы найдете подходящее устройство, создайте на рабочем столе файл «acpi_wakeup», содержащий следующий код: #!/bin/sh printf "XXXX" > /proc/acpi/wakeup (не забудьте заменить «XXXX» на код вашего устройства)
  4. Переместите или скопируйте файл в папку /etc/init.d/. Чтобы скопировать файл, используйте следующую команду: sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup (замените «ИМЯ ПОЛЬЗОВАТЕЛЯ» реальным именем пользователя)
  5. Сделайте файл исполняемым: sudo chmod 755 /etc/init.d/acpi_wakeup
  6. Затем используйте «update-rc.d» для автоматического создания необходимых символических ссылок в других каталогах: sudo update-rc.d acpi_wakeup defaults (он показывает, WARNING: ...missing LSB tags and overridesно все в порядке. Вам не нужно об этом беспокоиться)
  7. Перезагрузите компьютер.

Источники и дальнейшее чтение:

http://www.das-werkstatt.com/forum/werkstatt/viewtopic.php?f=7&t=1985 http://ubuntuforums.org/showthread.php?t=814939&page=3

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.