発端
先日の出来事なのですけれど、とある 開発合宿 で友達とプログラミングをしていたところ、MacBook をスリープから復帰させたのを機に、なぜだか突然 いくつかのキーが打てなくなってしまう問題 に遭遇しました。
終わってみれば そんな機能があったのか! という感じですけれど、MacBook に馴染んだ数人がかりで原因をなかなか見つけられなかったので、今回は解決策というよりは、それの 解決までに至った経緯を中心に 綴ってみようと思います。原因究明までの体験記です。
症状
発端はちょっと手を休めている隙に MacBook がスリープ状態に移行して、その直後の出来事でした。スリープを解除して、画面ロックを解除したら、なぜだか J
とか K
とか M
の辺りのキーを打っても 文字を入力できなく なっていました。
原因にアタリをつける
あまりにも突然すぎる出来事でしたけど、ついさっきまでちゃんと打てていたことを考えると ハードウェアの故障とは思いにくい 、そんなところから考えをスタートしてみました。
1. 疑いを、ソフトウェアに向ける
もしかして 再起動すれば直るかな とも思ったのですけれど、そうしてみても直る気配なく。
ところで、そういえば再起動した後に入力するパスワードには、打てなくなったはずの文字が含まれているのにちゃんと解除できるのをみると、どうやら打てなくなるのはログインしてから。つまり、やはり ハードウェア自体は正常 と言えそうな機運が高まります。
2. セーフモードで起動してみる
ソフトウェアの問題なのなら、もしかして セーフモードで起動 すれば何かきっかけを掴めるかもしれない、そう思って試してみたのですけど、結果は今ひとつでした。
MacBook を shift
を押しながら起動すればセーフモードになるのですけど、そうしてみても、ログイン後にはやっぱり問題のキーが打てなくなっています。セーフモードなら余計なソフトウェアが起動していないはずなので、そうなると 原因がハードウェア寄りの可能性も浮上してくる 心地です。
3. SMC をリセットしてみるも、効果なく
ただ、ログインの時には毎回ちゃんとキーが打てるのをみると 機械そのものは壊れていない可能性 が高そうです。そうなると、自分の中で ハードウェア周りの動作が不可思議になった場合に試すもの みたいに思っている SMC リセット を試してみたくなったのですけど、こちらも結果は今ひとつでした。
SMC をリセットするには、内蔵キーボードの左側の shift
+ control
+ option
を押しながら電源ボタンを押し、それらのキーを話して再び電源ボタンを押せば良いのですけど、そうしてみても問題が解消する様子はありませんでした。ところでここ、別件ですけど 右側のを押したら効果があった事例もあるみたい なので、ハードウェアの漠然とした不調のときは、両方を試してみると良かったりするかもしれませんね。
4. アプリケーションの問題かをはっきりさせる
これまでを総合すると ハードウェアの故障とは考えにくい、ただしセーフモードでも直らないため、もっと低いレベルでのソフトウェアの問題の可能性が高い といった印象でした。
低いレベルでのプログラムの起動を調整する方法を知っていればよかったのですけど、せいぜいアカウント設定の起動項目くらいしか知らなかったので、それよりももう少しだけ低いところで問題を切り分けるために、とりあえず ゲストアカウントでのログイン を試みてみることにしました。
システム環境設定の ユーザとグループ で ゲストユーザ を有効化しました。そしてそのアカウントでログインしてみたところ、ゲストアカウントではちゃんと問題のキーが打てることが確認できました。原因は 稼働中のアプリケーションがキーボードをフックしながら誤動作している または 最低でもユーザプロファイルの破損 ということになりそうです。
5. 原因プロセスを突き止める
とりあえず目に見えるアプリケーション全てを終了させてみても改善されず、プロファイルの再構築はどうしたら良いか判らないけれど きっとつらそう だったので、とりあえず手当たり次第にプロセスを止めてみることにしました。Activity Monitor を使って 疑わしいそうなプロセスをひとつ終了させて、ターミナルで M
が打てるか確認する という方法で実施します。ちなみに疑わしそうなプロセスの選択基準は 完全に勘 です。
そんなふうにして手当たり次第に試していたら universalaccessd
を強制終了したタイミングで 何か特徴的なサウンドが鳴って、一時的にターミナルに 0
が入力される ようになりました。ただしそれから数秒ほどでプロセスが復帰するのか、再び M
が打てなくなる様子でした。
原因はアクセシビリティ
そんな universalaccessd
ってなんだろうって思って調べてみたら、このプロセスは アクセシビリティ を管理するもののようでした。
確かに、アクセシビリティならキーボードに影響を与える可能性はありそう、そう思って手当たり次第にそれっぽい設定項目を調整していたところ マウスキー というまさにこれっぽいものが見つかりました。
この マウスキーを有効にする にチェックが ON になっていて、このチェックを OFF にすると、全てのキーが正しく打てるようになりました。しかも universalaccessd
を強制終了させた時に聞こえた特徴的なサウンドが、ここのチェックボックスを切り替えるたびに聞こえてくるとか、もはや 完全に黒 です。
どうやらこの機能が ON になっていると テンキーをマウスとして使えるようになる みたいです。MacBook の場合はテンキーがないので、テンキーに相当するキーの 7
8
9
U
I
O
J
K
L
m
,
.
が、マウスカーソルの操作のために使えるようになります。
このせいで、文字が打てなくなっていたんですね。
再発防止策
この マウスキーの機能を無効化することで問題解消 したわけですけど、どうして突然これが有効になったんだろうと思いながら、その オプション
設定を開いたところで、その理由がわかりました。
ここで Option キーを 5 回押してマウスキーの入/切を切り替える
にチェックが入っていました。試してみると確かに option
を 5 回連続で押すたびに マウスキー の有効状態が切り替わって、いわゆる一部のキーが打てなくなる状態と正常な状態とが切り替わることを確認できました。今回の問題は、きっと何かの拍子に option
を 5 回連続で押してしまったことが原因なのでしょう。
忘れた頃に再び同じ問題で苦労しなくて済むように Option キーを 5 回押してマウスキーの入/切を切り替える
のチェックを外しておくことにして、これで一件落着です。