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

news2024/11/23 4:40:20

文章目录

  • 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保存即可。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPTs | Actions应用案例

上篇文章说道,如何使用创建的GPTs通过API接口去获取外部的一些信息,然后把获取的外部信息返回给ChatGPT让它加工出来,回答你的问题,今天我们就来做一个通俗易懂的小案例,让大家来初步了解一下它的使用法! …

【数字图像处理】实验二 图像变换

图像变换 一、实验内容: 1. 熟悉和掌握利用Matlab工具进行数字图像的读、写、显示等数字图像处理基本步骤。 2. 熟练掌握各种图像变换的基本原理及方法。 3. 能够从深刻理解图像变换,并能够思考拓展到一定的应用领域。…

【Zabbix】使用 Grafana 统一监控展示并对接Zabbix v6

Grafana是开源的可视化工具,支持各类数据源的接入MySQL、PostgreSQL、AWS CloudWatch、Microsoft SQL Server (MSSQL)等;支持丰富的插件生态系统 Bar chart、CloudWatch、Geomap、Jaeger等。以下是grafana的官方网站: Grafana Labs grafana服务端支持在…

Centos 7.9安装Oracle19c步骤亲测可用有视频

视频介绍了在虚拟机安装centos 7.9并安装数据库软件的全过程 视频链接:https://www.zhihu.com/zvideo/1721267375351996416 下面的文字描述是安装数据库的部分介绍 一.安装环境准备 链接:https://pan.baidu.com/s/1Ogn47UZQ2w7iiHAiVdWDSQ 提取码&am…

CUMT--Java复习--泛型与集合

目录 一、泛型 1、概述 2、通配符 3、有界类型 二、集合 1、概述 2、迭代器接口 三、集合类 1、Collection接口 2、List接口 3、Set接口 4、Queue接口 5、Map接口 四、集合转换 五、集合工具类 一、泛型 1、概述 从JDK5.0开始,Java引入泛型类型&…

ARM GIC(四) gicv3架构基础

GICv3架构是GICv2架构的升级版,增加了很多东西。变化在于以下: 使用属性层次(affinity hierarchies),来对core进行标识,使gic支持更多的core 将cpu interface独立出来,用户可以将其设计在core…

谷歌Gemini造假始末

💡大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、读书和自媒体。 在过去一年中,OpenAI ChatGPT引发了一股AI新浪潮,而谷歌则一直处于被压制的状态,迫切需要一款现象级的AI产品来…

一文读懂Java中的设计模式——代理模式,以翻译场景举例,特别通俗易懂!

代理模式概念 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。目的:为其他对象提供一种代…

HBase基础知识(二):HBase集群部署、HBaseShell操作

1. HBase安装部署 1.1 Zookeeper正常部署 首先保证Zookeeper集群的正常部署,并启动之: 创建集群启动脚本: #!/bin/bash case $1 in "start"){ for i in hadoop100 hadoop101 hadoop102 do echo----------zookeeper $i 启动----…

TKEStack容器管理平台实战之部署wordpress应用

TKEStack容器管理平台实战之部署wordpress应用 一、TKEStack介绍1.1 TKEStack简介1.2 TKEStack特点1.3 TKEStack架构图 二、kubernetes集群介绍2.1 k8s简介2.2 k8s架构图 三、本次实践介绍3.1 实践环境要求3.2 本次实践环境规划3.3 本次实践简介 四、安装容器管理平台4.1 安装T…

python基础-检测字符串是否含有中文的方法

1. 正则表达式 代码示例如下: import re def contains_chinese(text):pattern re.compile(r[\u4e00-\u9fff]) # 匹配中文字符的正则表达式范围return bool(pattern.search(text))2.unicodedata模块 import unicodedata def contains_chinese(text):for char in…

Codeforces Round 638 (Div. 2)B. Phoenix and Beauty(思维构造)

B. Phoenix and Beauty 这道题目学到的东西: 从给出的数据范围观察,得到一些有用信息(峰哥教的)考虑无解的情况‘ 其实这题考虑怎么操作是比较难的,如果能想出来满足条件的结果就比较好了(我在说什么我自…

力扣题:高精度运算-1.1

力扣题-1.1 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:67. 二进制求和 解题思想:将数组进行遍历相加即可 class Solution(object):def addBinary(self, a, b):""":type a: str:type b: str:rtype: str""…

java开发面试:常见业务场景之单点登录SSO(JWT)、权限认证、上传数据的安全性的控制、项目中遇到的问题、日志采集(ELK)、快速定位系统的瓶颈

单点登录(SSO) 单点登录,Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统。 如果是单个tomcat服务,session可以共享,如果是多个tomcat,那么服务s…

count(*)、count(1)、count(column)的区别

count(*)、count(1)、count(column)的区别 count(*): 返回检索到的行数,无论是否含有NULL值,在InnoDB下,仅计算当前事务可见的行,通过遍历最小的可用二级索引来处理count(*),除非索引或优化器指示优化器使…

阿里云林立翔:基于阿里云 GPU 的 AIGC 小规模训练优化方案

云布道师 本篇文章围绕生成式 AI 技术栈、生成式 AI 微调训练和性能分析、ECS GPU 实例为生成式 AI 提供算力保障、应用场景案例等相关话题展开。 生成式 AI 技术栈介绍 1、生成式 AI 爆发的历程 在 2022 年的下半年,业界迎来了生成式 AI 的全面爆发&#xff0c…

深信服技术认证“SCSA-S”划重点:命令执行漏洞

为帮助大家更加系统化地学习网络安全知识,以及更高效地通过深信服安全服务认证工程师考核,深信服特别推出“SCSA-S认证备考秘笈”共十期内容,“考试重点”内容框架,帮助大家快速get重点知识~ 划重点来啦 *点击图片放大展示 深信服…

持续集成交付CICD:基于ArgoCD 的GitOps 自动化完成前端项目应用发布与回滚

目录 一、实验 1. 环境 2. K8S master节点部署Argo CD 3.基于ArgoCD 实现GitOps (同步部署文件) 4.基于ArgoCD 实现GitOps (同步HELM文件) 二、问题 1. ArgoCD 连接K8S集群状态为 Unknown 2.ArgoCD 创建application失败 …

华为全屋wifi6蜂鸟套装标准

华为政企42 华为政企 目录 上一篇华为安防监控摄像头下一篇华为企业级无线路由器

Layui 2.9.2 列表商品展示页 用模板引擎 laytpl Ajax 读取json 数据 筛选数组 filter css 限制文体显示过长用。。。代替

全代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>软件管理器</title><meta name"renderer" content"webkit"><meta http-equiv"X-UA-Compatible" conten…