O botão liga / desliga de um PC ou laptop pode ser remapeado?

4

Esqueça por um segundo o quanto essa ideia seria ruim. Mas é possível remapear o botão de energia de um PC ou laptop para, digamos, imprimir alguma mensagem ou qualquer outra coisa além de gerenciar o poder?

Se não, por quê? Quem lida com esse botão e como essa modificação teria que ser de baixo nível?

Também estou interessado em saber como a resposta muda nos vários sistemas, se isso acontecer.

    
por glS 29.04.2015 / 16:07

1 resposta

2

Como James aponta, o botão liga / desliga é geralmente mapeado em um nível bastante baixo para o BIOS, para que ele sempre funcione mesmo se o sistema operacional falhar. É muito chato quando isso falha, pois você tem que mexer nos cabos de energia. É mais irritante em um laptop, pois você tem que mexer com os cabos de energia e da bateria. É mesmo (!) Mais irritante em um laptop moderno e leve, porque as baterias não são removíveis!

O Linux, no entanto, é bastante "hacker" amigável e tenta expor o máximo possível do funcionamento interno do hardware para você. Além disso, todos os sistemas operacionais precisam fazer "coisas" antes de fechar. Então tudo isso é um ato de equilíbrio. Geralmente, nos PCs modernos, pressionar o botão uma vez ativará um evento bastante suave no sistema operacional para que o sistema operacional possa ser encerrado normalmente. No entanto, manter pressionado o botão acionará, após alguns segundos, um evento no nível do BIOS para reduzir a energia.

Portanto, você deve ser capaz de capturar o evento de soft power em qualquer sistema operacional se tiver as habilidades necessárias para isso. Isso é relativamente fácil no Linux, porque o evento soft aciona uma sequência de eventos adicionais que fecham os níveis mais altos do sistema operacional (por exemplo, a GUI da área de trabalho), mudando para níveis mais baixos até que seja seguro desligar. Se você investigar "runlevels", você certamente encontrará mais detalhes sobre como fazer as coisas no ponto mais apropriado.

No Windows, você pode usar o Agendador de Tarefas do Windows para executar tarefas em eventos diferentes. Assim, você pode executar algo como "Ao desconectar-se da sessão do usuário", que deve ser acionado quando o desligamento está acontecendo (na verdade, não tentei). Ou você pode examinar seus logs de eventos para ver quais eventos podem ser acionados aos quais você pode se conectar.

    
por 29.04.2015 / 18:41