Macユーザ必見!アプリ終了の誤爆ショートカットを防ぐ方法!

Tools

はじめに

Mac ユーザは、誰もが「タグを閉じる(⌘ + W)」 と 「アプリの終了(⌘ + Q)」 を押し間違えるという悲しい事故を経験したことがあるでしょう。こちらの記事では、その様な不測な事態を避けるための方法を紹介します!尚、少々エンジニア寄りの内容になりますw

結論、この記事では必要最低限の設定のみで Karabiner-Elements を採用しました。参考までに、私個人の環境は以下の通りです。

  • MacBook Pro(13インチ, 2016年モデル、TouchBar搭載)
    • Mac OS Mojave 10.14.6, JISキーボード
  • QBlocker 1.2
  • Karabiner-Elements 12.9.0

アプリ導入

ここでは、2つのアプリが候補に挙がりました。

QBlocker

真っ先に導入したのが、こちらの QBlocker

機能は非常にシンプルで、「アプリの終了(⌘ + Q)を長押し時のみ有効にする」 という、今回の要件をミニマムで満たしてくれます。

ただし、厄介なことに私の環境ではアプリメニューを開くだけでアプリが強制終了してしまいました。。。 調べてみると、最終更新は2016年とのこと。
image.png

この状態でもアプリ立ち上げ自体は可能なので、細かい設定項目を指定できないことに目を瞑れば、導入自体はとても簡単です。

ただし、初期設定ではログイン時に自動起動がされないため、毎回立ち上げる必要があります。こういう細かい操作を毎回要求されるのは個人的に鬱陶しいので、今回は採用を見送りました。

もし詳細な導入手順を知りたい場合は、先人がまとめて下さった記事があるので、こちらを参照しましょう。MacOS が古ければ、問題なく利用できるかもしれません。
Macアプリ「QBlocker」 – 「Command + Q」を長押しに変更 – アプリ終了時に警告

Karabiner-Elements

本命は、こちらのKarabiner-Elementです。Macユーザなら耳にしたことがあるかもしれません。上記URLからdmgファイルをダウンロードできるため、従来のMacアプリ同様に解凍+インストールが可能です。ここでまでの手順は割愛します。

インストール時、以下の様に「ダウンロードしたアプリケーションの実行許可」 で弾かれてしまったため、鍵アイコン押下で鍵を外す > 許可押下、の手順で実行許可を与える必要があります。
image.png

Command + Q の挙動設定

次に、全タブ終了を防げ!command+qでブラウザが終了するのを防ぐ方法【Karabiner-Elements対応】 を参考に、設定を有効にします。

まず、Safari(Chromeだとダメ)で以下のURLを入力して実行。

karabiner://karabiner/assets/complex_modifications/import?url=https%3A%2F%2Fpqrs.org%2Fosx%2Fkarabiner%2Fcomplex_modifications%2Fjson%2Fcommand_q.json

その後、以下のポップアップ表示に対して「許可」を押下。
image.png

すると、Karabinerが立ち上がり以下の表示になります。ここで、Command + Q ショートカットの設定をインポートしたいので、’Import’を押下。
image.png

その後、以下の画面の様になるので、’Quit application by holding command-q’のEnableを選択。
‘Quit application by pressing command-q twice’ を選択すると、長押しではなく二度押しで終了設定ができます。
image.png

上記手順で、’Complex Modification’に選択した設定が表示されていればOK
image.png

詰まりポイント

インストールと設定は簡単に済ませられたものの、細かい挙動が異なってしまう現象がいくつか発生しました。以下、その現象とその解決方法になります。

一部キーボード入力で異なる文字が反映される

Chromeのショートカットが一部おかしくなっていました。具体的には、タブ左移動が右移動に、タブ右移動が無効になっていたのです。
原因はJISキーボードがUSキーボードとして認識されることだったので、以下を参考に解決します。
Karabiner-ElementsでJISキーボードがUSキーボードとして認識される問題 – Qiita

まずは、’Virtual keybord’から、Countery code を 45 で指定。
image.png

その後、システム環境設定 > キーボード から 左下の「キーボードの種類を変更」を選択。
image.png

その後、画面の指示に従ってキーを入力し、最終的にJIS(日本語)を選択します。USの場合は、この辺の設定は不要かもしれません。
image.png

Cmd + F1 で画面切り替えができない。

ファンクションキー単体押下時には問題ないのだが、「Command + F1」の様に修飾キーと組み合わせたショートカットが効かなくなってしまいました。


[Mac][Karabinar-Elements] MacBook Pro Touch BarでCommand+F1が効かない を見るに、キーボードとTouchBarは内部的に別デバイスとして認識されている様で、Karabiner上でTouchBarの方が無効化されていた様です。

したがって、TouchBarを有効化することで解消します。具体的には、’Devices’の’No product name(No manufacturer name)’のチェックを有効化します。
image.png

その後、参考記事には記載されていませんが、’Function keys’の’Use all F1, F2, etc. keys as standard function keys’ を有効にする必要がありました。。
image.png

参考までに、システム環境設定 > キーボード の設定は以下のとおりです。無入力時の TouchBar はファンクションキーが表示されている状態ですね。
image.png

修飾キーの設定が適用されない

私は Mac の capsキーを極端に嫌っており、capsキー を controlキー に置き換えています。しかし、この設定が無効になっていました。


こちらの解決方法としては、システム環境設定 > キーボード の「修飾キー」から修飾キー設定画面を開いた際に、「キーボードを選択」から Karabiner を指定して再設定する必要がありました。
image.png

最終手段のアンインストール

もし上記以外の問題が解決できずに困り果てた場合は、導入を一旦見送ったほうが良いかもしれません。Misc > Uninstall Karabiner-Elements を選択すればアンインストールをして導入前の状態に戻すことができます。
image.png

応用:emacs キーバインドを有効にする

この項目は少し応用的なので、興味のない方は読み飛ばしてくださいw

あらゆる場面で方向キーを使うことが苦痛で堪らないため、emacsバインドの方向キーを導入してみました。画像はありませんが、一旦手順だけ記載します。

  • Complex modifications > Rules > Add rule > Import more rules from the Internet (open a web browser)を選択 。
  • 検索欄に「Emacs」と入力 > 「Emacs key bindings (rev 12, @tekezo)」を選択 > import
  • Karabiner-Elements が開くので、 control+keys をEnableする。

参考:Macでemacsのキーバインドを設定する〜Karabinerの設定

おわりに

PCタイピング

これでアプリ終了ショートカットの長押し化のみ有効 + それ以外のキーボード入力は従来通り、という今回の要件を満たすことができました。


Karabinerは使いこなすと変態キーバインドを堪能できるので、自称効率厨として機会があればカスタマイズしてみようと思います。

コメント

タイトルとURLをコピーしました