【Mac】ChatGPTの送信をcommandキーとreturnで行う方法

MacTips

ChatGPTとお話をしているとき、「あっ、送るつもりがないのに送っちゃった!」と思うことはないだろうか。僕は多々ある。

そして、間違えて送ってしまうたびに、ChatGPTからの返答がすべて表示されるまで大人しく待っている。この時間のなんと無駄なことか。

本記事では、そのような「誤送信による無駄な時間」を完全になくす方法をご紹介する。

英語と日本語は文字入力に使うキーが違う

そもそも、なぜこんな面倒なことになっているのか。

これには、文字入力に使うキーが英語と日本語で異なることが関係している。

というのも、英語の文字入力は、ほとんどがアルファベットキーとspaceキーだけで完結する。そのため、returnキーが出る幕が少ないのだ。

英語の入力中にreturnキーを使うのは、それこそ改行を行うときくらいだ。

しかし、日本語の場合は少し勝手が異なる。日本語の入力には、アルファベットキーで文字を打ち込み、spaceキーで変換、そして、returnキーで確定という3工程を踏まなければならない。

このように、日本語は英語と異なり、文字入力の手順にreturnキーが頻繁に登場する。これが、冒頭で述べたような誤送信という悲劇の原因である。

ただ残念なことに、macOSで動く公式のChatGPTアプリには、文章の送信方法を自分好みに編集することができない(2024年10月現在)。

Karabiner Elementsを入れよう

では、どのようにこの誤送信問題を解決すれば良いのか。

そこで登場するのが、「Karabiner Elements」というアプリである。これは、簡単に言えば「特定のキー入力を別のキー入力として振る舞わせるアプリ」である。

この機能により、returnキー単体でのメッセージ送信をできなくしてしまおうという算段である。

以下で、より具体的な手順を見ていくこととする。

returnで送信しないようにする手順

1. Karabiner Elementsをダウンロード

      Karabiner Elementsのサイトからアプリをダウンロードする。アプリの起動後に、必要な権限を承認する。

      2. キーの入力内容を変換するルールを追加する。

      Complex Modifications → Add your own ruleを選択する。

      下記のコードをエディタ部分に貼り付け、Saveする。

      {
          "description": "AIとの会話で、returnで文章を送信しないようにする",
          "manipulators": [
              {
                  "conditions": [
                      {
                          "bundle_identifiers": [
                              "^com\\.quora\\.poe\\.electron$",
                              "^com\\.openai\\.chat$"
                          ],
                          "type": "frontmost_application_if"
                      }
                  ],
                  "description": "returnをshift + returnに変更",
                  "from": { "key_code": "return_or_enter" },
                  "to": [
                      {
                          "key_code": "return_or_enter",
                          "modifiers": ["shift"]
                      }
                  ],
                  "type": "basic"
              },
              {
                  "conditions": [
                      {
                          "bundle_identifiers": [
                              "^com\\.quora\\.poe\\.electron$",
                              "^com\\.openai\\.chat$"
                          ],
                          "type": "frontmost_application_if"
                      }
                  ],
                  "description": "command + returnをreturnに変更",
                  "from": {
                      "key_code": "return_or_enter",
                      "modifiers": { "mandatory": ["command"] }
                  },
                  "to": [{ "key_code": "return_or_enter" }],
                  "type": "basic"
              }
          ]
      }

      このコードは一体何をしているのか

      ここからは、このコードが一体何をしているのか、ざっくり説明したい。

      まず、conditionsの部分では、このルールを発動する条件を指定している。

      "conditions": [
          {
              "bundle_identifiers": [
                  "^com\\.quora\\.poe\\.electron$",
                  "^com\\.openai\\.chat$"
              ],
              "type": "frontmost_application_if"
          }
      ],

      bundle_identifiersの部分で、ルールを発動する個別のアプリをBundle Identifiersという個々のアプリを識別するIDのようなもので指定している。

      例えば、^com\\.openai\\.chat$はChatGPT、^com\\.quora\\.poe\\.electron$PoeのBundle Identifierをそれぞれ指し示している。

      正規表現の形式で記述されているため、ドット(.)の前にはエスケープのためにバックスラッシュ(\\)がついている。

      正規表現まわりに関して、詳しくはChatGPTに訊いて理解を深めてほしい。

      そして、以下の部分では、実際に入力されたキー入力を別の出力に変換している。

      具体的には、returnキーが押された際の実際の動作をshift + returnに変更している。

      "from": { "key_code": "return_or_enter" },
      "to": [
          {
              "key_code": "return_or_enter",
              "modifiers": ["shift"]
          }
      ],

      大抵のチャット系アプリにおいてもそうだが、ChatGPTアプリでは、returnキーが「メッセージの送信」に割り当てられている。そして、改行はshift + returnで行うことになっている。

      そのため、return単体のキー入力をshift + returnとして受け取らせることで、return単体押しでの改行を実現しているのである。

      そして、コードの別の箇所では、command + returnの入力をただのreturnに変更している。これにより、command + returnによるメッセージの送信を実現している。

      (番外編) 特定のアプリのBundle Identifierを知る方法

      先で触れた通り、Karabiner Elementsでは、個々のアプリを識別するためにBundle IdentifierというIDを用いている。

      つまり、「ChatGPTアプリ以外の何らかのアプリでキー入力を入れ替えたい」という場合、そのアプリのBundle Identifierを調べなければならない。

      そんな時には、Karabiner Elementsのダウンロード時に一緒についてきたKarabiner-EventViewerアプリを使えば良い。

      具体的な手順は以下の通りである。

      EventViewerアプリを起動し、Frontmost Applicationタブを選択する。そして、Bundle Identifierを調べたいアプリのウィンドウを選択する。

      それから、再びEventViewerアプリに戻ると、ウィンドウの右側にBundle Identifierが表示されている。

      あとは、得られたBundle Identifierを正規表現の形にして、Karabiner Elementsアプリにて設定をすれば良い。

      快適なChatGPT生活を

      さて、これで、的外れな回答を出力するChatGPTを、何もできずに眺める無意味な時間を過ごさなくても良くなった。

      加えて、無駄な出力をAIにさせなくても済み、地球環境にも優しい。まさに、良いことずくめである。

      ちなみに、Karabiner Elementsを使って、キーボード入力を自分好みに組み替えたり、便利な機能を追加したりする方法は他にもある。

      ぜひ、自分なりのカスタマイズを見つけて、より快適なMacライフを送ってほしい。

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