Вопрос или проблема
Я пытаюсь убедиться, что мой ноутбук перейдет в режим сна, если я отключу его после того, как крышка уже закрыта, и я полагаю, что один из способов достичь этого — симулировать событие крышки ACPI, когда адаптер питания подключен или отключен. Для этого мне нужно найти команду, которая сгенерирует поддельное событие крышки ACPI. Есть ли такая команда?
ACPI-FakeKeys может помочь в этом.
Ответ или решение
Для создания поддельного события крышки ACPI в Linux с помощью скрипта, существует несколько подходов, каждый из которых позволяет вам эмулировать поведение системы в отношении открытия или закрытия крышки. В данном ответе мы рассмотрим, как можно вручную сгенерировать событие крышки, используя acpi_fakekey
, что является одним из подходящих решений для вашего запроса.
Шаг 1: Установка acpi_fakekey
Прежде всего, вам необходимо установить пакет, который предоставляет утилиту acpi_fakekey
. Наиболее распространенный способ – использование пакетного менеджера вашей дистрибуции. Для Debian и Ubuntu это можно сделать с помощью команды:
sudo apt-get install acpi-fakekey
Шаг 2: Использование acpi_fakekey
После установки, вы можете использовать acpi_fakekey
для генерации событий крышки. Утилита поддерживает различные ключи, которые могут имитировать действия, происходящие в системе. Чтобы симулировать событие закрытия крышки, используйте следующую команду:
acpi_fakekey 106
Число 106
соответствует коду клавиши lid (крышка) в ACPI. Данная команда создаст событие крышки, как будто вы закрыли её.
Шаг 3: Автоматизация
Чтобы автоматизировать процесс и генерировать событие при подключении или отключении адаптера питания, вы можете использовать udev
-правила. Для этого выполните следующие действия:
- Создайте файл правил:
Создайте новый файл в каталоге /etc/udev/rules.d/
, например 99-power.rules
.
sudo nano /etc/udev/rules.d/99-power.rules
- Добавьте правило:
Вставьте следующее правило для отслеживания событий подключения/отключения питания:
ACTION=="power_supply", SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/usr/bin/acpi_fakekey 106"
Это правило указывает системе генерировать событие крышки, если адаптер питания отключен (вы можете настроить логику под свои нужды).
- Перезагрузите udev:
После внесения изменений необходимо обновить правила udev:
sudo udevadm control --reload-rules
sudo udevadm trigger
Шаг 4: Тестирование
После завершения всех шагов, закройте крышку и отключите адаптер питания, чтобы проверить, имитируется ли событие. Вы можете наблюдать состояние системы с помощью команды:
acpi
Это позволит вам увидеть, действительно ли система переходит в спящий режим как ожидается.
Заключение
Итак, с помощью acpi_fakekey
и настроенных правил udev вы сможете вручную генерировать события крышки в Linux. Это позволяет вам управлять поведением вашей системы в ответ на отключение питания, гарантируя, что ноутбук будет переходить в спящий режим, даже если крышка уже закрыта. Такой подход обеспечит вам необходимую степень контроля и стабильности работы вашего устройства.