ChatGPT で Enter を押したら意図せず送信されたりされなかったりで挙動が一致しないのと、Enter で改行、Ctrl+Enter で送信とした方が分かりやすいのでやってみた。
※ Shift+Enter で改行のようだが、端末(win10 と win11 のOS 違い?)によっては Enter で改行になるのでよく分からない。その場合は tab を二回押して (送信ボタンにフォーカスを移動して) Enter が必要でめんどくさい (よくファイルダイアログが開く)。ime の設定周りが影響している?
- tampermonkey でスクリプトを組み込む
- Shift+Enter で改行になる場合 keyhac で Enter を Shift+Enter に置き換える。
- Shift+Enter は google ime の設定で確定にしておく
で実装 & 設定変更
// ==UserScript== // @name ChatGPT // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match https://chat.openai.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=openai.com // @grant none // ==/UserScript== (function() { 'use strict'; document.body.addEventListener('keydown', function(e) { if (!(e.ctrlKey && e.key === 'Enter') || e.isComposing) { return; } if (e.srcElement.id != "prompt-textarea") { return; } let ele = document.querySelector("button[data-testid='send-button']") ele.click(); setTimeout(()=> { let ele = document.querySelector("button.cursor-pointer"); console.log(ele); if (ele != null) { ele.click(); } }, 3000); }); })();
keyhac
gpt = keymap.defineWindowKeymap( exe_name="vivaldi.exe", class_name="Chrome_WidgetWin_1", window_text="ChatGPT" ) gpt["Enter"] = "Shift-Enter"
Google IME の設定
と、思ったら既に Chrome 拡張があった。
実装を見るに tampermonkey でやろうとしてたことと大差がないのだが・・・うまくいかなかったのなんでだろ。