油猴脚本教程案例【键盘监听】-编写 ChatGPT 快捷键优化

文章目录

  • 1. 元数据
    • 1. `name`
    • 2. `namespace`
    • 3. `version`
    • 4. `description`
    • 5. `author`
    • 6. `match`
    • 7. `grant`
    • 8. `icon`
  • 2. 编写函数
    • .1 函数功能
      • 2.1.1. `input` - 聚焦发言框
      • 2.1.2. `stop` - 取消回答
      • 2.1.3. `newFunction` - 开启新窗口
      • 2.1.4. `scroll` - 回到底部
  • 3. 监听键盘事件
    • 3.1 监听X - 开启新对话
    • 3.2 监听Z - 取消回答
    • 3.3 监听/ - 聚焦发言框
    • 3.4 监听L - 回到底部
  • 4.完整代码
  • 5.使用

1. 元数据

当编写油猴脚本时,元数据是脚本的一些基本信息,它们提供了关于脚本的描述和配置。以下是元数据的详细解释和用法:

1. name

解释: 这是脚本的名称,用于标识脚本的主题或功能。

用法:

// @name         ChatGPT快捷键优化

2. namespace

解释: 命名空间用于定义脚本的唯一标识符,通常是脚本的作者或网站。

用法:

// @namespace    http://tampermonkey.net/

3. version

解释: 版本号表示脚本的版本。每次更新脚本时,都应该递增版本号。

用法:

// @version      0.1

4. description

解释: 描述字段提供了对脚本功能的简要说明。

用法:

// @description  ChatGPT快捷键优化,添加新建、停止、输入功能

5. author

解释: 作者字段用于指定脚本的作者。

用法:

// @author       Your Name

6. match

解释: 匹配字段定义了脚本执行的网页地址。只有在匹配的网页上,脚本才会生效。

(支持正则表达式匹配)

用法:

// @match        https://chat.openai.com/*

7. grant

解释: @grant 字段用于定义脚本使用的油猴 API 功能。在这个例子中,是为了添加样式。

用法:

// @grant        GM_addStyle

8. icon

解释: 图标字段用于指定脚本在油猴管理界面中显示的图标。

用法:

// @icon         https://cdn.oaistatic.com/_next/static/media/apple-touch-icon.59f2e898.png

2. 编写函数

油猴脚本支持原生的JavaScript编程

.1 函数功能

2.1.1. input - 聚焦发言框

function input() {
    var input_button = document.querySelector('#prompt-textarea');
    input_button.focus();
}

在这里插入图片描述

2.1.2. stop - 取消回答

function stop() {
    var stop_button = document.querySelector(".flex.h-full.flex-row.items-center.justify-center.gap-3>button");
    stop_button.click();
}

在这里插入图片描述

2.1.3. newFunction - 开启新窗口

function newFunction() {
    var new_button = document.querySelector('.flex.w-full.gap-2.items-center.justify-center');
    new_button.click();
}

在这里插入图片描述

2.1.4. scroll - 回到底部

function scroll() {
    var down_button= document.querySelector('div.flex.h-full.flex-col > div.flex-1.overflow-hidden > div > div > div > button');
    down_button.click();
}

在这里插入图片描述

3. 监听键盘事件

3.1 监听X - 开启新对话

document.addEventListener('keydown', function (event) {
    if (event.shiftKey && event.ctrlKey && event.key.toLowerCase() === 'x') {
        newFunction(); // 表示shift + ctrl + X 即可新建对话
    }
});

3.2 监听Z - 取消回答

document.addEventListener('keydown', function (event) {
    if (event.shiftKey && event.ctrlKey && event.key.toLowerCase() === 'z') {
        stop();// 表示shift + ctrl + Z 即可取消回答
    }
});

3.3 监听/ - 聚焦发言框

document.addEventListener('keydown', function (event) {
    if (event.shiftKey && event.ctrlKey && event.code === 'Slash') {
        input();// 表示shift + ctrl + / 即可聚焦到发言框
    }
});

3.4 监听L - 回到底部

document.addEventListener('keydown', function (event) {
    if (event.shiftKey && event.ctrlKey && event.key.toLowerCase() === 'q') {
        input();// 表示shift + ctrl + Q 即可聚焦到发言框
    }
});

4.完整代码

// ==UserScript==
// @name         GPT快捷键优化
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  快捷使用
// @author       D0ublecl1ck
// @match        https://chat.openai.com/*
// @grant        GM_addStyle
// @icon         https://cdn.oaistatic.com/_next/static/media/apple-touch-icon.59f2e898.png
// ==/UserScript==

(function () {
    'use strict';

    // 定义要执行的函数
    function stop() {
        // 这里是 stop 函数的具体实现
        var stop_button = document.querySelector(".flex.h-full.flex-row.items-center.justify-center.gap-3>button");
        stop_button.click();
    }

    function scroll() {
        // 这里实现点击回到底部
        var down_button = document.querySelector(".m-1.text-black.dark");
        down_button.click();

    }

    function newFunction() {
        // 这里是 new 函数的具体实现
        var new_button = document.querySelector('.flex.w-full.gap-2.items-center.justify-center');
        new_button.click();
    }

    function input() {
        // 这里是 input 函数的具体实现
        var input_button = document.querySelector('#prompt-textarea');
        input_button.focus();
    }

    // 监听键盘事件
    document.addEventListener('keydown', function (event) {
        // 判断是否按下了 Shift 和 Ctrl 键
        if (event.shiftKey && event.ctrlKey) {
            if (event.key.toLowerCase() === 'x') {// 判断按下的是 X 键
                // 新的对话
                newFunction();
            } else if (event.key.toLowerCase() === 'z') {// 判断按下的是 Z 键
                // 停止回复
                stop();
            } else if (event.code === 'Slash') { // 判断按下的是 / 键
                // 聚焦搜索框
                input();
            } else if (event.key.toLowerCase() === 'l') {// 判断按下的是 L 键
                // 点击回到底部
                scroll();
            }
        }
    });
})();

5.使用

点击添加新脚本
在这里插入图片描述
删除初始的数据代码,复制粘贴我们的代码之后 CTRL+S保存即可。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/262236.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3D模型人物换装系统(二 优化材质球合批降低DrawCall)

3D模型人物换装系统 介绍原理合批材质对比没有合批材质核心代码完整代码修改总结 介绍 本文使用2018.4.4和2020.3.26进行的测试 本文没有考虑法线贴图合并的问题,因为生成法线贴图有点问题,放在下一篇文章解决在进行优化 如果这里不太明白换装的流程可以…

Python---socket之send和recv原理剖析

1. 认识TCP socket的发送和接收缓冲区 当创建一个TCP socket对象的时候会有一个发送缓冲区和一个接收缓冲区,这个发送和接收缓冲区指的就是内存中的一片空间。 2. send原理剖析 send是不是直接把数据发给服务端? 不是,要想发数据,必须得…

STL--stack、queue实现

STL中&#xff0c;vector、list 是容器&#xff0c;自己存储一系列的数据进行增删查改&#xff0c;而 stack、queue 是一种特殊的容器&#xff0c;叫容器适配器&#xff0c;提供一种特定的接口来访问底层容器。 STL--stack实现 template<class T, class Container deque&…

Springboot实现定时任务

一、定时任务是什么&#xff1f; 定时执行任务&#xff0c;只有电脑不关机就可以在特定的时间去执行相应的代码&#xff0c;例如抢购脚本等 二、使用步骤 1.无需引入springboot自带 package com.ltx.blog_ltx;import org.springframework.boot.SpringApplication; import o…

2023 年人工智能研究与技术排名前 10 的国家

人工智能研究是一项全球性的工作。虽然美国和中国因其对人工智能的贡献而备受关注&#xff0c;但事实是&#xff0c;世界各国都在涉足这项技术&#xff0c;尝试新的突破&#xff0c;并吸引投资者的关注。 斯坦福大学的《2023年人工智能报告》估计&#xff0c;到 2022 年&#…

hbase用shell命令新建表报错ERROR: KeeperErrorCode = NoNode for /hbase/master

或者HMster开启后几秒消失问题解决 报错如图&#xff1a; 首先jps命令查看当前运行的内容有没有HMaster,如果没有&#xff0c;开启一下hbase,稍微等一会儿&#xff0c;再看一下HMaster,如果仍和下图一样没有&#xff0c;就基本找到问题了 本人问题原因&#xff1a;hbase-site…

嵌入式中断理解

一、概念 中断&#xff1a; 在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行。 中断优先级&#x…

AIGC绘画Midjourney光线关键词、构图关键词、色调关键词

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

树莓派,opencv,Picamera2利用舵机云台追踪特定颜色对象(PID控制)

一、需要准备的硬件 Raspiberry 4b两个SG90 180度舵机&#xff08;注意舵机的角度&#xff0c;最好是180度且带限位的&#xff0c;切勿选360度舵机&#xff09;二自由度舵机云台&#xff08;如下图&#xff09;Raspiberry CSI 摄像头 组装后的效果&#xff1a; 二、项目目标…

STM32 使用ARM仿真器设置

STM32单片机程序下载到单片机芯片中有两种方式&#xff0c;①编译生成HEX&#xff0c;使用程序烧录软件刷到单片机芯片里。②使用ARM仿真器下载程序。使用ARM仿真器的优势是&#xff0c;在工程编译没问题直接在Keil软件里就可以将程序下载到单片机里&#xff0c;并且程序可以在…

6. 行为模式 - 观察者模式

亦称&#xff1a; 事件订阅者、监听者、Event-Subscriber、Listener、Observer 意图 观察者模式是一种行为设计模式&#xff0c; 允许你定义一种订阅机制&#xff0c; 可在对象事件发生时通知多个 “观察” 该对象的其他对象。 问题 假如你有两种类型的对象&#xff1a; ​ 顾…

如何在 openKylin 上使用 ONLYOFFICE 桌面编辑器

文章作者&#xff1a;ajun ONLYOFFICE 桌面编辑器是一款基于依据 AGPL v.3 许可进行分发的开源办公套件。使用这款应用&#xff0c;您无需保持网络连接状态即可处理存储在计算机上的文档。 本文章基于中国根操作系统 openKylin 操作系统&#xff0c;使用软件商店快速安装与手…

IPC之九:使用UNIX Domain Socket进行进程间通信的实例

socket 编程是一种用于网络通信的编程方式&#xff0c;在 socket 的协议族中除了常用的 AF_INET、AF_RAW、AF_NETLINK等以外&#xff0c;还有一个专门用于 IPC 的协议族 AF_UNIX&#xff0c;IPC 是 Linux 编程中一个重要的概念&#xff0c;常用的 IPC 方式有管道、消息队列、共…

深入了解Spring MVC工作流程

目录 1. MVC架构简介 2. Spring MVC的工作流程 2.1. 客户端请求的处理 2.2. 视图解析和渲染 2.3. 响应生成与返回 3. Spring MVC的关键组件 3.1. DispatcherServlet 3.2. HandlerMapping 3.3. Controller 3.4. ViewResolver 4. 结论 Spring MVC&#xff08;Model-Vi…

Node.js-模块化(二)

1. 模块化的基本概念 1.1 什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层将系统拆分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 1.2 编程领域中的模块化 编程领域中的模块化&#xff0c;就是遵守固定的规则&…

ubuntu下docker安装,配置python运行环境

参考自: 1.最详细ubuntu安装docker教程 2.使用docker搭建python环境 首先假设已经安装了docker&#xff0c;卸载原来的docker 在命令行中运行&#xff1a; sudo apt-get updatesudo apt-get remove docker docker-engine docker.io containerd runc 安装docker依赖 apt-get…

flink使用sql-client-defaults.yml无效

希望在flink sql脚本启动时自动选择catalog&#xff0c;减少麻烦。于是乎配置sql-client-defaults.yaml&#xff1a; catalogs:- name: hive_catalogtype: icebergcatalog-type: hiveproperty-version: 1cache-enabled: trueuri: thrift://localhost:9083client: 5warehouse: …

【Docker-5】镜像编排

Dockerfile语法 制作apache镜像 httpd.service 文件路径&#xff1a;/lib/systemd/system/httpd.service [rootdocker-0002 ~]# mkdir apache [rootdocker-0002 ~]# cd apache拷贝动态页面到docker-0002的/root/apache/ [rootecs-proxy ~]# scp /root/5/public/info.php 192.…

Unity中的导航系统

NavMesh(导航网格)是3D游戏世界中用于实现动态物体自动寻路的一种技术&#xff0c;将游戏中复杂的结构组织关系简化为带有一定信息的网格&#xff0c;在这些网格的基础上通过一系列的计算来实现自动寻路。导航时&#xff0c;只需要给导航物体挂载导航组建&#xff0c;导航物体便…

华为安防监控摄像头

华为政企42 华为政企 目录 上一篇华为政企城市一张网研究报告下一篇华为全屋wifi6蜂鸟套装标准