ChatGPT Small Windows Enter Key Fix

Enable Enter to send (Shift+Enter for newline), will update whenever gpt update

目前為 2025-04-17 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         ChatGPT Small Windows Enter Key Fix
// @namespace    https://chatgpt.com
// @version      1.0
// @description  Enable Enter to send (Shift+Enter for newline), will update whenever gpt update
// @author       Gavin (adapted from rbutera's version 2.1)
// @match        https://chatgpt.com/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // Try to wire up Enter→Send on the textarea
    function bindEnterKey() {
        const textarea = document.getElementById('prompt-textarea') || document.querySelector('textarea');
        if (!textarea || textarea._enterBound) return;

        textarea.addEventListener('keydown', e => {
            //console.log("hit if")
            console.log(e.key, e.shiftKey)
            if (e.key == 'Enter' && !e.shiftKey) {
                console.log("pass enter if")
                e.preventDefault();
                const sendBtn = document.querySelector('button[data-testid="send-button"]');
                if (sendBtn) sendBtn.click();
            }
        });

        // Mark it so we don't double-bind
        textarea._enterBound = true;
    }

    // Initial binding
    bindEnterKey();

    // Watch for re-renders (ChatGPT UI can swap out the textarea)
    new MutationObserver(bindEnterKey).observe(document.body, { childList: true, subtree: true });
})();