Можно ли переназначить кнопку питания ПК или ноутбука?

2149
glS

Забудьте на секунду, как плоха эта идея. Но можно ли переназначить кнопку питания ПК или ноутбука, чтобы, скажем, напечатать какое-нибудь сообщение или что-то еще, кроме управления питанием?

Если нет, то почему? Кто обрабатывает эту кнопку, и насколько низкоуровневой должна быть такая модификация?

Меня также интересует, как меняется ответ в разных системах, если он меняется.

4
Вы можете изменить то, что делает кнопка питания в терминах выключения / гибернации / сна, но в конце дня все, что эта кнопка делает, это закорачивает два контакта на материнской плате, поэтому вы ограничены тем, что эти контакты могут быть запрограммированы, что Я ожидаю, не так много. Ctrl-alt-dlt 9 лет назад 2
Это кажется интересным, не могли бы вы рассказать об этом подробнее? Также я замечаю, что, например, в Linux tty ряд операций выполняется, когда кнопка питания выключает систему, что заставляет меня думать, что что-то МОЖЕТ быть изменено в том, что делает кнопка питания, на программном уровне. glS 9 лет назад 0
Эти два контакта будут отправлять очень низкоуровневое сообщение на процессор, возможно, через встроенный чипсет. Вы не сможете изменить это сообщение. Я предполагаю, что он будет двоичным вплоть до того момента, когда он будет скомпилирован процессором. Вы могли бы с некоторой экспертизой потенциально изменить то, как процессор реагирует на сообщение на более высоком уровне, чем двоичный машинный код. Ctrl-alt-dlt 9 лет назад 0

1 ответ на вопрос

2
Julian Knight

As James points out, the power button is generally mapped at quite a low level to the BIOS so that it should always work even if the OS fails. It is very annoying when this fails since you then have to mess about with power cables. It is more annoying on a laptop as you have to mess with power cables and the battery. It is even (!) more annoying on a modern, lightweight laptop because the batteries are not removable!

Linux, however is pretty "hacker" friendly and tries to expose as much as possible of the inner workings of the hardware to you. Also, all OS's need to do "stuff" before closing down. So all of that is a balancing act. Generally, on modern PC's, pressing the button once will trigger a fairly soft event into the OS so that the OS can shut down gracefully. However holding down the button will, after a few seconds, trigger a BIOS level event to cut the power.

So you should be able to trap the soft power event in any OS if you have the skills to do so. This is relatively easy in Linux because the soft event triggers a sequence of further events that close down the higher levels of the OS (e.g. the desktop GUI), moving to lower levels until it is safe to power off. If you investigate "runlevels", you will doubtless find more details on how to do things at the most appropriate point.

In Windows, you can use Windows Task Scheduler to run tasks on different events. So you could run something "On disconnect from user session" which should trigger as power down is happening (I've not actually tried it). Or you can look through your event logs to see which event(s) might be triggered that you can attach to.

Похожие вопросы