Sair do Emacs e redefinir o touchpad

8

Eu tenho o código elisp abaixo na minha configuração do emacs que desativa meu touchpad, para que não me incomode ao escrever.

;; disable touchpad when on emacs

(defun turn-off-mouse (&optional frame)
  (interactive)
  (call-process-shell-command "xinput --disable bcm5974"
                              nil "*Shell command output*" t))

(defun turn-on-mouse (&optional frame)
  (interactive)
  (call-process-shell-command "xinput --enable bcm5974"
                              nil "*Shell command output*" t))

(add-hook 'focus-in-hook #'turn-off-mouse)
(add-hook 'focus-out-hook #'turn-on-mouse)
(add-hook 'delete-frame-functions #'turn-on-mouse)

(provide 'setup-xinput)

Isso funciona bem; o problema é apenas ao sair do Emacs.

Se eu sair do Emacs enquanto estiver no Emacs, ele manterá meu touchpad desativado. Então, preciso abrir um novo terminal com o teclado e executar xinput --enable bcm5974.

Existe alguma solução alternativa para isso? Como eu poderia sair do Emacs e ao sair da reativação do meu touchpad?

seds
fonte

Respostas:

11

Você pode usar o kill-emacs-hookque é executado quando o emacs é encerrado 'normalmente'.

O gancho funciona quando kill-emacsé chamado. Como kill-emacspode ser chamado quando o terminal é desconectado (ou em outras situações semelhantes), as funções colocadas neste gancho não devem esperar poder interagir com o usuário. Para pedir confirmação, consulte kill-emacs-query-functions.

Basta adicionar turn-on-mousepara kill-emacs-hookcurtir

(add-hook 'kill-emacs-hook #'turn-on-mouse)
Iqbal Ansari
fonte