【Karabiner】WhatsApp macOS版で
Enterキーによる誤送信を防ぎたい

チャットアプリを使っていると、文章を書いている途中でうっかりEnterキーを押してしまい、未完成のメッセージが送信されてしまった経験があります。

Karabiner-Elementsというキーボードカスタマイズツールを使えば、WhatsAppでのEnterキーの動作を変更し、⌘+Enterで送信するように設定できます。

関連記事

1. WhatsApp macOS版のキーボード設定の問題点

WhatsAppのmacOS版では、メッセージ入力中にEnterキーを押すとそのまま送信されます。
改行したい場合はShift+Enterが必要です。

Windows版には「Enter is send」というオプションがあり、これをオフにするとEnterキーの動作を変えられます。
しかし、macOS版にはこの設定がありません。

LINEやChatworkなど他のメッセージアプリでは送信と改行の割り当てを変更できるものもありますが、WhatsAppにはその機能がないため、誤送信が起きやすい状態が続きます1

1.1. Karabiner-Elementsとは

Karabiner-Elementsは、macOSでキーボードの動作をカスタマイズできる無料のアプリケーションです。
特定のキーの入れ替えや、特定のアプリでのみ有効になるキー設定など、柔軟な変更が可能です2

  1. 公式サイト(https://karabiner-elements.pqrs.org/)にアクセスします
  2. 「Download」ボタンをクリックしてダウンロードします
  3. ダウンロードしたdmgファイルを開きます
  4. インストーラーの指示に従ってインストールを進めます
  5. インストール中にセキュリティとプライバシーの許可を求められたら許可してください

キーボード入力を制御するアプリなので、最初の起動時にシステムへのアクセス許可が必要になります3

2. WhatsApp用のキー設定を作成する

Karabiner-Elementsでは、ルールごとに設定ファイルを追加できます。

  1. Karabiner-Elementsを起動します
  2. 「Devices」タブで使用しているキーボードが正しく認識されていることを確認します4

2.1. カスタムルールの作成

以下のディレクトリに移動します。

~/.config/karabiner/assets/complex_modifications/

このディレクトリ内に新しいJSONファイルを作成します。
ファイル名は whatsapp_enter_key.json などで構いません。
ファイルに以下の内容を記述します。

{
  "title": "WhatsApp Enter キー設定",
  "rules": [
    {
      "description": "WhatsAppでEnterキーによる誤送信を防止",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "return_or_enter",
            "modifiers": {
              "optional": ["any"]
            }
          },
          "to": [
            {
              "key_code": "return_or_enter",
              "modifiers": ["left_shift"]
            }
          ],
          "conditions": [
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [
                "^net\\.whatsapp\\.WhatsApp$"
              ]
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "return_or_enter",
            "modifiers": {
              "mandatory": ["left_command"]
            }
          },
          "to": [
            {
              "key_code": "return_or_enter"
            }
          ],
          "conditions": [
            {
              "type": "frontmost_application_if",
              "bundle_identifiers": [
                "^net\\.whatsapp\\.WhatsApp$"
              ]
            }
          ]
        }
      ]
    }
  ]
}Code language: JSON / JSON with Comments (json)

このJSONはWhatsAppが最前面にある時だけ動作する2つのルールを定義しています。

1つ目は「Enterを押したらShift+Enterとして扱う」設定で、Enterを押しても送信されず改行されます。
2つ目は「⌘+Enterを押したら通常のEnterとして扱う」設定で、⌘+Enterで送信できます5

  1. Karabiner-Elementsを再起動するか、「Complex Modifications」タブの「Reload」ボタンをクリックします
  2. 追加したルールが表示されたら「Enable」ボタンをクリックして有効化します

設定後にWhatsAppでチャットを開き、Enterキーを押して改行されることを確認してください。
送信したい場合は⌘+Enterを押します。
他のアプリではEnterキーが通常通り動作します6

3. アプリのバンドルIDを確認する方法

設定がうまく機能しない場合、以下を確認してください。

  • WhatsAppのバンドルIDが正しいか確認します。
    最新バージョンで変更されている可能性があります
  • Karabiner-Elementsに必要な権限が許可されているか確認します
  • 「Devices」タブで使用しているキーボードが登録されているか確認します
  • システム環境設定でキーボード設定に競合がないか確認します

bundle_identifiers はアプリの固有識別子で、正確に指定する必要があります。
最新版のWhatsAppでは net.whatsapp.WhatsApp が正しいバンドルIDですが、バージョンによって異なる場合があります7

たとえば、ターミナルを開き、以下のコマンドを実行します。

osascript -e 'id of app "WhatsApp"'Code language: JavaScript (javascript)

Karabiner-Elements Event Viewerで確認するには

Event Viewerでの確認
  1. Karabiner-Elementsのメニューバーアイコンをクリックし「Event Viewer」を選択します
  2. 「Frontmost application」タブを開きます
  3. WhatsAppを最前面にします
  4. Event Viewerに正確なバンドルIDが表示されます

バンドルIDが異なる場合は、設定ファイルの bundle_identifiers の値をそれに合わせて修正します。
たとえば com.whatsapp.WhatsApp だった場合は以下のようにします。

"bundle_identifiers": [
  "^com\\.whatsapp\\.WhatsApp$"
]Code language: JavaScript (javascript)

JSON内の「Shift+Enterを送信する」部分も同様に修正してください。

4. 【補足】変換の確定ができない?

Karabiner-Elementsで「WhatsApp上ではEnterをShift+Enterに置き換える」設定にすると、Google日本語入力(IME)で漢字かな変換中の「確定」まで置き換えられてしまい、変換候補を確定できなくなることがありました。

これは、IMEが変換確定に使うEnterキーのイベント自体が、Karabiner側でShift+Enterへ書き換えられてしまうためです。
WhatsApp上でのみ起きるように見えますが、実際には「WhatsAppが最前面の間はEnterが常に別キーとして送られる」ことが原因です。

  1. Windows版WhatsAppには設定画面の「Enter is send」をオフにすることでEnterキーを改行として使えるオプションがあります。macOS版にはこのオプションが存在しないため、サードパーティツールによる回避が必要です。 – WhatsApp で Enter キーが送信ボタンに変わったのはなぜですか?
  2. 2025年2月時点の最新版はv15.9.0で、macOS 13 Ventura以降が動作要件です。macOS 12 Monterey・11 Big Surにはv14.13.0、macOS 10.15 Catalinaにはv13.7.0など、旧OSに対応したバージョンも公式サイトから個別にダウンロードできます。 – Karabiner-Elements公式サイト
  3. macOS Sequoiaでは、起動後に「システム設定>一般>ログイン項目と拡張機能」でドライバ拡張機能をオンにする手順が加わります。さらに「システム設定>プライバシーとセキュリティ>入力監視」で karabiner_grabber のスイッチをオンにしないとキーリマップが機能しません。 – MacでKarabiner-Elementsを使う方法と効かない場合の注意点(macOS Sequoia / Sonoma)
  4. Devicesタブで対象キーボードの「Modify events」がオンになっていないと、ルールを有効化しても入力変換が反映されません。複数のキーボードを使い分けている場合は、デバイスごとにこのスイッチを確認してください。 – Karabiner-Elementsのインストール&設定&アンインストール
  5. JSONファイルをエディタで直接記述する際、構文エラーがあるとルールが読み込まれません。Karabiner-Elementsは起動時にJSONを検証するので、Enableボタンが表示されない場合はファイルの内容を確認してください。VSCodeや他のエディタでJSONの文法チェックを行うと確実です。 – Karabiner-Elements公式ドキュメント
  6. macOSをアップデートした後にKarabiner-Elementsが動かなくなることがあります。その場合は「システム設定>一般>ログイン項目と拡張機能」でドライバ拡張機能が有効になっているか再確認するか、Karabiner-Elementsを再起動してください。 – MacでKarabiner-Elementsを使う方法と効かない場合の注意点(macOS Sequoia / Sonoma)
  7. バンドルIDはアプリの更新で変わることがあります。
    以前は com.whatsapp.WhatsApp が使われていましたが、2024年以降の公式Mac App Store版では net.whatsapp.WhatsApp が正しいIDです。
    設定が機能しない場合は、後述のターミナルコマンドまたはEvent Viewerで現在のIDを必ず確認してください。