Можно ли переназначить кнопку питания ПК или ноутбука?
Забудьте на секунду, насколько плохой будет эта идея. Но можно ли переназначить кнопку питания ПК или ноутбука, чтобы, скажем, напечатать какое-нибудь сообщение или что-то еще, кроме управления питанием?
Если нет, то почему? Кто обрабатывает эту кнопку, и насколько низкоуровневой должна быть такая модификация?
Меня также интересует, как меняется ответ в разных системах, если он меняется.
1 ответ
Как указывает Джеймс, кнопка питания обычно отображается на BIOS на довольно низком уровне, поэтому она всегда должна работать даже в случае сбоя ОС. Это очень раздражает, когда это терпит неудачу, так как тогда вам придется возиться с кабелями питания. Это больше раздражает на ноутбуке, так как приходится возиться с кабелями питания и аккумулятором. Это даже (!) Более раздражает на современном, легком ноутбуке, потому что батареи не являются съемными!
Linux, однако, довольно дружественен к хакерам и старается максимально раскрыть вам внутреннюю работу аппаратного обеспечения. Кроме того, все ОС должны делать "вещи" перед закрытием. Так что все это является балансом. Как правило, на современных ПК нажатие кнопки один раз вызовет довольно мягкое событие в ОС, чтобы ОС могла корректно завершить работу. Однако, удерживая нажатой кнопку, через несколько секунд произойдет событие уровня BIOS для отключения питания.
Так что вы должны быть в состоянии перехватить событие soft power в любой ОС, если у вас есть для этого навыки. Это относительно просто в Linux, потому что мягкое событие запускает последовательность дальнейших событий, которые закрывают более высокие уровни ОС (например, графический интерфейс рабочего стола), переходя на более низкие уровни, пока не будет безопасно отключаться. Если вы исследуете "уровни выполнения", вы, несомненно, найдете более подробную информацию о том, как действовать в наиболее подходящий момент.
В Windows вы можете использовать планировщик заданий Windows для запуска задач по различным событиям. Таким образом, вы можете запустить что-нибудь "При отключении от сеанса пользователя", которое должно срабатывать при отключении питания (на самом деле я не пробовал). Или вы можете просмотреть свои журналы событий, чтобы увидеть, какие события могут быть вызваны, к которым вы можете присоединиться.