【UNIX】キー入力が受け付けなくなる原因と対処と注意点

Linuxが登場し取っ付き易くなったとはいえ、30,40代の現役でもWindowsの開発環境でやってきた人とか、さらに昔の汎用機を使ってた人とかにはあまりUNIXは馴染みが無く、UNIXを使ってる人でも原因が分からず困惑するものがこの記事のタイトルにある症状です。

疲れてたり寝ぼけてたりしてる時にふと何を操作しても動かない状況になり、Ctrl+cを連打したり、Enterキーを連打したり… SSH接続のセッションが切れているようでもなく、ネットワークも問題無し。何が何だか原因が分からず、しまいには、「いらすとや」さんが激オコするかもしれない利用規約すれすれの↓に。


1. 原因
おそらく大抵は「Ctrl + s」((S)top)を入力してしまったことが原因で、機能は「画面の更新の停止」です。
この機能は私なんかが知らないような、コンピュータ黎明期にあった要因で作られたようなのですが、なぜ左手ホームポジションのキーに今も存在し続けるのだろう…

2. 対処
画面の更新を再開させるには「Ctrl + q」です。なんでQなのかは不明です…
Stopはわかる。まぁ、そのまんまだからな… だが、Qってどういう事だああ~~~っ!? QとかQuitと思うだろーーーッ!まさか「停止」を「やめる」から「Quit」とか言い出すんじゃあねぇだろうな~~~~!!
根掘り葉掘りおじさん


3. 注意点
これには、他の真面目な情報サイトではあまり触れられていない危険性があります。これは文字通り「画面の更新を停止」しているだけなので、実はキーの入力は受け付けられています。それはもちろんEnterキーも含まれます。そしてつまりは、シェル上でコマンド実行もされます。ですので、この症状になった場合は一切の入力を止めて、慌てず騒がず、深呼吸をして「Ctrl + q」を押しましょうw
なお、Ctrl+qを押すと今まで入力した分が一気に流れるため、Ctrl+qを押した瞬間に実行されると勘違いしてしまいがちですが、文字列を入力してEnterを押した時点でもう実行されています。真ブラインドタッチ(キーボードだけでなく画面も見ない)状態です。
テキトーに連打したら偶然にも「rm -rf /[Enter]」とかになってしまったら…
今やシェルのデフォルトがemacsモードになっているため、sキーの近くのCtrl+を多用する人が多く、知っていても誤って押してしまう事があると思いますが、「あっ!」と思ったらEnterキーは押さず「Ctrl + c」を押してから「Ctrl + q」で解除しましょう。
ご存じの通りCtrl+cはシグナルを送ってコマンドを中断しますが、入力中の行を何も実行せずにCancelして空行にするため、BackSpace等で文字を消すよりも安全かつ簡単です。