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ライフを送ってほしい。