选择困难?直接生成pynput快捷键字符串
from pynput import keyboard# 文档:https://pynput.readthedocs.io/en/latest/keyboard.html#monitoring-the-keyboard
# 博客(pynput相关源码):https://blog.csdn.net/qq_39124701/article/details/145230331
# 虚拟键码(十六进制):https://learn.microsoft.com/zh-cn/windows/win32/inputdev/virtual-key-codes## 虚拟键码页面使用方法
## 1.访问虚拟键码页面, https://learn.microsoft.com/zh-cn/windows/win32/inputdev/virtual-key-codes
## 2.按F6将光标聚焦到地址栏## 粘贴这行文本 j删除avascript: document.querySelectorAll("table").forEach((table)=>{if(table.innerText.includes("0x01")){const thead=table.querySelector('thead');const tbody=table.querySelector('tbody');if(thead&&tbody){const th=document.createElement('th');th.textContent=decodeURIComponent('%E5%8D%81%E8%BF%9B%E5%88%B6%E5%80%BC');th.style.width='10%';th.style.textAlign='center';thead.querySelector('tr').insertBefore(th,thead.querySelector('tr').children[2]);tbody.querySelectorAll('tr').forEach(row=>{const td=document.createElement('td');td.style.width='10%';td.style.textAlign='center';const hexValue=row.querySelector('td:nth-child(2)').textContent.trim();const decimalValue=parseInt(hexValue,16);td.textContent=decimalValue;row.insertBefore(td,row.children[2])})}}})## 4.删除地址栏里的中文和#符号# 快捷键字符串列表
# 注意:pynput不能识别"<win>"、"<numpad1>"
hotkey_strings = ["<ctrl>+a","<ctrl>+<alt>+a","<ctrl>+<shift>+a","<ctrl>+<shift>+<alt>+a","<ctrl>+<cmd>+a","<alt>+a","<shift>+a","<cmd>+a","<ctrl>+~","<ctrl>+<f1>", # f1到f24"<ctrl>+1","<ctrl>+-","<ctrl>+=","<ctrl>+<backspace>","<ctrl>+<tab>","<ctrl>+q","<ctrl>+{","<ctrl>+}","<ctrl>+<enter>","<ctrl>+<caps_lock>","<ctrl>+;","<ctrl>+'",# 1.反斜线紧挨着引号会触发转义# 2.非原始字符串模式下, 反斜线+空格会触发无效转义# 3.pynput无法解析带空格的字符串r"<ctrl>+\ ".strip(),"<ctrl>+|","<ctrl>+<shift_l>","<ctrl>+,","<ctrl>+.","<ctrl>+/","<ctrl>+<shift_r>","<ctrl>+<cmd_l>","<ctrl>+<alt_l>","<ctrl>+<space>","<ctrl>+<alt_r>","<ctrl>+<cmd_r>","<ctrl>+<menu>","<ctrl_l>+<ctrl_r>","<ctrl>+<insert>","<ctrl>+<delete>","<ctrl>+<home>","<ctrl>+<end>","<ctrl>+<page_up>","<ctrl>+<page_down>","<ctrl>+<up>","<ctrl>+<down>","<ctrl>+<left>","<ctrl>+<right>","<ctrl>+<print_screen>","<ctrl>+<scroll_lock>","<ctrl>+<pause>","<ctrl>+<num_lock>",# pynput1.7.?不支持小键盘:https://github.com/moses-palmer/pynput/issues/545# 但是可以使用解决方案:https://github.com/moses-palmer/pynput/issues/545#issuecomment-2185323984"<ctrl>+<96>", # 小键盘数字0(96是pynput使用的十进制vk码)"<ctrl>+<105>", # 小键盘数字9"<ctrl>+<106>", # 小键盘*"<ctrl>+<107>", # 小键盘+"<ctrl>+<109>", # 小键盘-"<ctrl>+<110>", # 小键盘."<ctrl>+<111>", # 小键盘/
]# 随机生成快捷键
def generate_random_hotkey():import random# 随机选择一个快捷键字符串random_hotkey_str = random.choice(hotkey_strings)# 检查是否包含单个字符,并随机替换为a到z中的某个字符if '+' in random_hotkey_str:parts = random_hotkey_str.split('+')for i, part in enumerate(parts):if len(part) == 1 and part.isalpha():# 随机选择一个字符random_char = chr(random.randint(ord('a'), ord('z')))parts[i] = random_charelif part.startswith('<f') and part.endswith('>'):# 随机选择一个功能键random_f_key = f"<f{random.randint(1, 12)}>"parts[i] = random_f_keyrandom_hotkey_str = '+'.join(parts)try:# 解析快捷键字符串parsed_hotkey = keyboard.HotKey.parse(random_hotkey_str)print(f"生成的快捷键为: {random_hotkey_str}")return parsed_hotkey, random_hotkey_strexcept ValueError as e:print(f"解析 '{random_hotkey_str}' 失败: {e}")return None, random_hotkey_str# 测试这些快捷键字符串是否合法
def parse_hotkey_strings():# 解析每个快捷键字符串for hotkey_str in hotkey_strings:try:parsed_hotkey = keyboard.HotKey.parse(hotkey_str)print(f"\033[1;32m解析 '{hotkey_str}' 结果为: {parsed_hotkey}\033[0m")except ValueError as e:print(f"\033[1;31m解析 '{hotkey_str}' 失败: {e}\033[0m")# 测试监听小键盘
def test_numpad_hotkey():hotkey_s = '<ctrl>+<105>'def on_activate():print(f"按下了{hotkey_s}")def for_canonical(f):return lambda k: (setattr(k, '_scan', None), f(listener.canonical(k)))hotkey = keyboard.HotKey(keyboard.HotKey.parse(hotkey_s), on_activate)listener = keyboard.Listener(on_press=for_canonical(hotkey.press), on_release=for_canonical(hotkey.release))listener.start()import time;time.sleep(5)listener.stop()listener.join()# 按按键, 输出vk码
def print_vk_on_press():def format_key_info(key):key_info = f" {key}"if hasattr(key, 'char'):key_info += f' char:{key.char}'if hasattr(key, 'vk'):key_info += f' vk:{key.vk}'return key_infodef on_press(key):print(format_key_info(key))def on_release(key):print('{0} released'.format(key))if key == keyboard.Key.esc:import os;os._exit(0) # 强行退出, 因为主线程在睡觉# return Falselistener = keyboard.Listener(on_press=on_press, on_release=on_release)listener.start()import timetime.sleep(10)listener.stop()listener.join()if __name__ == "__main__":pass# 随机生成快捷键字符串for i in range(10):generate_random_hotkey()# 判断快捷键字符串合法性# parse_hotkey_strings()# 测试监听小键盘# test_numpad_hotkey()# 按按键,输出vk码# print_vk_on_press()
相关文章:
选择困难?直接生成pynput快捷键字符串
from pynput import keyboard# 文档:https://pynput.readthedocs.io/en/latest/keyboard.html#monitoring-the-keyboard # 博客(pynput相关源码):https://blog.csdn.net/qq_39124701/article/details/145230331 # 虚拟键码(十六进制):https:/…...
DeepSeek-R1:强化学习驱动的推理模型
1月20日晚,DeepSeek正式发布了全新的推理模型DeepSeek-R1,引起了人工智能领域的广泛关注。该模型在数学、代码生成等高复杂度任务上表现出色,性能对标OpenAI的o1正式版。同时,DeepSeek宣布将DeepSeek-R1以及相关技术报告全面开源。…...
国内优秀的FPGA设计公司主要分布在哪些城市?
近年来,国内FPGA行业发展迅速,随着5G通信、人工智能、大数据等新兴技术的崛起,FPGA设计企业的需求也迎来了爆发式增长。很多技术人才在求职时都会考虑城市的行业分布和发展潜力。因此,国内优秀的FPGA设计公司主要分布在哪些城市&a…...
3.日常英语笔记
screening discrepancies 筛选差异 The team found some screening discrepancies in the data. 团队在数据筛选中发现了些差异。 Don’t tug at it ,or it will fall over and crush you. tug 拉,拽,拖 He tugged the door open with all his might…...
基于RIP的MGRE实验
实验拓扑 实验要求 按照图示配置IP地址配置静态路由协议,搞通公网配置MGRE VPNNHRP的配置配置RIP路由协议来传递两端私网路由测试全网通 实验配置 1、配置IP地址 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 15.0.0.1 24 [R1]int LoopBack 0 [R1-LoopBack0]i…...
【开源免费】基于Vue和SpringBoot的美食推荐商城(附论文)
本文项目编号 T 166 ,文末自助获取源码 \color{red}{T166,文末自助获取源码} T166,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
Pandas DataFrame 拼接、合并和关联
拼接:使用 pd.concat(),可以沿着行或列方向拼接 DataFrame。 合并:使用 pd.merge(),可以根据一个或多个键进行不同类型的合并(左连接、右连接、全连接、内连接)。 关联:使用 join() 方法,通常在设置了索引的 DataFrame 上进行关联操作。 concat拼接 按列拼接 df1 = …...
【Redis】Redis修改连接数参数
1.重启操作背景 Redis数据库连接数上限,需要修改配置文件里maxclients参数,修改后需重启数据库 1.1、修改操作系统open files参数 1.2、修改redis连接数 2.登录操作系统 登录堡垒机 ssh {ip}3.查看当前状态 3.1、查看操作系统配置 ulimit -a3.2、…...
scratch变魔术 2024年12月scratch三级真题 中国电子学会 图形化编程 scratch三级真题和答案解析
目录 scratch变魔术 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、 推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、py…...
51单片机开发:点阵屏显示数字
实验目标:在8x8的点阵屏上显示数字0。 点阵屏的原理图如下图所示,点阵屏的列接在P0端口,行接在74HC595扩展的DP端口上。 扩展口的使用详见:51单片机开发:IO扩展(串转并)实验-CSDN博客 要让点阵屏显示数字࿰…...
mysql DDL可重入讨论
mysql的bug:当执行 MySQL online DDL 时,期间如有其他并发的 DML 对相同的表进行增量修改,比如 update、insert、insert into … on duplicate key、replace into 等,且增量修改的数据违背唯一约束,那么 DDL 最后都会执…...
DAY01 面向对象回顾、继承、抽象类
学习目标 能够写出类的继承格式public class 子类 extends 父类{}public class Cat extends Animal{} 能够说出继承的特点子类继承父类,就会自动拥有父类非私有的成员 能够说出子类调用父类的成员特点1.子类有使用子类自己的2.子类没有使用,继承自父类的3.子类父类都没有编译报…...
127周一复盘 (165)玩法与难度思考
1.上午测试,小改了点东西, 基本等于啥也没干。 匆忙赶往车站。 从此进入春节期间,没有开发,而思考与设计。 2.火车上思考玩法与难度的问题。 目前的主流作法实际上并不完全符合不同玩家的需求, 对这方面还是要有自…...
【C语言常见概念详解】
目录 -----------------------------------------begin------------------------------------- 什么是C语言: 1. 基本数据类型 2. 变量与常量 3. 运算符与表达式 4. 控制结构 5. 函数 6. 指针 7. 数组与字符串 8. 结构体与联合体 9. 文件操作 结语 ----…...
弹性分组环——RPR技术
高频考点,考查20次: RPR与FDDI一样使用双环结构RPR环中的每一个节点都会执行SRP公平算法(非DPT、MPLS)传统的FDDI环,当源节点成功向目的结点发送一个数据帧后,这个数据帧由源结点从环中回收。但RPR环&#…...
定制Centos镜像
环境准备: 一台最小化安装的干净的系统,这里使用Centos7.9,一个Centos镜像,镜像也使用Centos7.9的。 [rootlocalhost ~]# cat /etc/system-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]# rpm -qa | wc -l 306 [rootloca…...
Java---判断素数的三种方法
我们首先先来了解一下什么是素数 素数:一个整数只能被1和自身整除 , 注意:0与1不是素数 目录 方法一:暴力法 方法二:除二法(优化) 方法三.根号法(最优法) 方法一:暴力法 最简单最暴力的方法就是根据定义,判断n是不是素数,让n除以2到n-1的所有数,只要遇到能除开…...
多级缓存(亿级并发解决方案)
多级缓存(亿级流量(并发)的缓存方案) 传统缓存的问题 传统缓存是请求到达tomcat后,先查询redis,如果未命中则查询数据库,问题如下: (1)请求要经过tomcat处…...
代理模式 - 代理模式的应用
引言 代理模式(Proxy Pattern)是一种结构型设计模式,它允许你提供一个代理对象来控制对另一个对象的访问。代理对象通常会在客户端和目标对象之间起到中介的作用,从而可以在不改变目标对象的情况下,增加额外的功能或控…...
编辑器Vim基本模式和指令 --【Linux基础开发工具】
文章目录 一、编辑器Vim 键盘布局二、Linux编辑器-vim使用三、vim的基本概念正常/普通/命令模式(Normal mode)插入模式(Insert mode)末行模式(last line mode) 四、vim的基本操作五、vim正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...



