您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add/replace some keyboard shortcuts for ChatGPT.
当前为
// ==UserScript== // @name ChatGPT Custom Shortcuts // @namespace http://tampermonkey.net/ // @version 2024-05-14 // @description Add/replace some keyboard shortcuts for ChatGPT. // @author David // @match https://chat.openai.com/* // @match https://chatgpt.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=openai.com // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; document.addEventListener('keydown', function(event) { // Focus on textarea when pressing Ctrl + / if (event.ctrlKey && event.key === '/') { // Prevent default action and stop propagation event.preventDefault(); event.stopPropagation(); document.getElementById('prompt-textarea').focus(); return; } // Check if the focused element is the textarea if (document.activeElement.id === 'prompt-textarea') { const textarea = document.getElementById('prompt-textarea'); // create newline (Sending Shift + Enter) when pressing Enter alone if (event.key === 'Enter' && !event.ctrlKey && !event.shiftKey) { // Prevent default action and stop propagation event.preventDefault(); event.stopPropagation(); const value = textarea.value; const start = textarea.selectionStart; const end = textarea.selectionEnd; textarea.value = value.substring(0, start) + '\n' + value.substring(end); textarea.selectionStart = textarea.selectionEnd = start + 1; return; } // Click the send button when pressing Ctrl + Enter or Shift + Enter if ((event.ctrlKey || event.shiftKey) && event.key === 'Enter') { // Prevent default action and stop propagation event.preventDefault(); event.stopPropagation(); // Copy all text in the textarea to clipboard textarea.select(); document.execCommand('copy'); // click send button // document.querySelector('[data-testid="send-button"]').click(); const sendButton = document.querySelector('button.mb-1.mr-1.flex.h-8.w-8.items-center.justify-center.rounded-full.bg-black.text-white'); sendButton.click(); } } // Prevent the default action of Ctrl + R if (event.ctrlKey && event.key === 'r') { // Prevent default action and stop propagation event.preventDefault(); event.stopPropagation(); } }, true); // Using capturing phase })();