Ctrl + Enter
で送信したいんだー。
要件
Enter
で改行する。Ctrl + Enter
で送信する。Ctrl + Enter
は Google IME の予測変換確定にしているので送信しない。- Mac の vivaldi はアドレスバーで予測変換確定 (
Ctrl + Enter
) するとナビゲーション(検索等)してしまうため、karabiner-elements を使って vivaldi だけCtrl + Enter
をCtrl + ]
に置き換えている。
ChatGPT Ctrl+Enter Sender を使ったりもしたけど添付ができるようになったあたりから送信が微妙 (添付アイコンにフォーカスがあたる) になったりしたので自作して今に至る。
上記を満たすロジックを自分でコントロールできるように Tampermonkey で埋め込むことにした。
// ==UserScript== // @name ChatGPT // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match https://chat.openai.com/* // @match https://chatgpt.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=chatgpt.com // @grant none // ==/UserScript== (function() { 'use strict'; document.body.addEventListener('keydown', function(e) { // Enter キー以外は何もしない // Mac の vivaldi でのアドレスバー等での予測変換の考慮を karabiner-elements を設定しているため。 if (e.key != 'Enter' && e.key != ']') { return; } // 送信 (ctrl + enter) じゃない、または変換中はイベント中断 if (!e.ctrlKey || e.isComposing) { e.stopPropagation(); return; } // イベント発生元がテキストボックスじゃない場合 if (e.srcElement.id != "prompt-textarea") { return; } // 送信ボタンをクリック let ele = document.querySelector("button[data-testid='send-button']") ele.click(); }, { capture: true }); })();