#問題概要
ssh接続でMacBookからサーバにアクセスして作業しているとき、たまに接続したままMacBookをスリープさせてしまうことがあります。その状態からMacbook(英字配列キーボード搭載、アプリでキーマップを変更している)を復帰させようとすると、OSがキーボードを認識できずに一切操作できなくなることがありました。原因は英語キーボードで英数かな変換キーを実現するために入れているKarabiner-Elementsでした。試しに、英かな(ei-kana)アプリやBetterToolTouchも試しましたが同じ結果に終わりました。Auto-Update checkをオフにしたりもしてみましたが無駄でした。
#対処療法
根本解決には至らなかったので、対処療法として"ssh接続中はシステムをスリープさせない"ことで対処しました。caffeinateという一定条件下でスリープを回避できるコマンドを使い、その後ろのコマンド(sshコマンド)が終了するまではシステムをスリープさせないようにします。
例えば.bashrcか.zshrcなどに以下を記述し、caffeinateを通したsshコマンドを作成します。
alias ssh2="caffeinate -i ssh XXXアドレスなどXXX"
-i はcaffeinateのオプションで、"次に記述されるコマンドが終了するまでシステムをスリープさせない"という意味があります。(なので一定時間経つとMacBookの画面は消えます)
ターミナルでssh2と打つと実行されます。
#追記
VPN接続中にMacBookがスリープしても固まることがわかりました。スリープに入る直前にVPNを切断することでしのぎます。
sleepwatcherというライブラリはスリープに入る直前にコマンドを実行してくれます。
networksetup -disconnectpppoeservice "VPNの名前"
このコマンドでVPNを切断できるので、以下のサイトを参考にして設定すれば完了です。
http://blog.serverworks.co.jp/tech/2019/08/17/sleepwatcher/
#参考にしたサイト
https://www.softantenna.com/wp/review/caffeinate/
リモートせざるを得ない状況なので、すこしでも快適に....