选择困难?直接生成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正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...