找回密码
 会员注册
查看: 18|回复: 0

Python键盘监听:实现快捷操作和自动化脚本(监听组合键

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
70595
发表于 2024-9-10 04:51:37 | 显示全部楼层 |阅读模式
前言本文主要介绍一下使用Python进行事件监听功能,以实现一些特有的操作。本文旨在介绍如何实现这一功能。笔者根据一些需求写了一个小工具,流程和功能如下图所示(实际功能有更多):该工具主要实现了键盘监听和鼠标连击;通过键盘监听事件去驱动鼠标做一些操作;当按下Ctrl+Shift+A时候,进行鼠标连击当按下Ctrl+Shift+Q时候,进行停止连击辅助工具鼠标连击键盘监听开始连击Ctrl+Shift+ACtrl+Shift+Q停止连击工具的雏形参考这里:Python实现《咸鱼之王》后台挂机和鼠标连点器这个工具主要用于鼠标连击,但是实现的不仅仅鼠标连击,本文介绍的却是键盘监听事件,真是古怪也哉!本文的重点是Keyboard模块,Github地址在这:https://github.com/boppreh/keyboard。知识点📖📖安装模块pipinstallkeyboard1据官方介绍,Keyboard是可以在Windows和Linux上hook和模拟全局键盘事件的一个模块。这个模块就可以很好的实现本文的主题了。官网示例⚡⚡笔者在这里不去详细介绍keyboard的功效,它的功能很强大,这里列举下常用的方法:系统的学习应该去它的项目网站。方法/函数描述keyboard.is_pressed(key)检查给定的键是否当前按下。返回布尔值,表示键是否按下。keyboard.press(key)模拟按下给定的键。keyboard.release(key)模拟释放给定的键。keyboard.write(text)模拟键盘输入给定的文本。keyboard.press_and_release(key)模拟按下和释放给定的键。keyboard.hotkey(key1,key2,...,keyN)模拟同时按下给定的多个键。keyboard.wait(key)阻塞程序,直到给定的键被按下。keyboard.add_hotkey(key,callback)注册一个热键,当按下指定的键时,调用指定的回调函数。keyboard.remove_hotkey(key)移除先前注册的热键。keyboard.read_event()阻塞程序,直到键盘事件发生,并返回一个keyboard.KeyboardEvent对象,包含有关事件的详细信息。keyboard.record(events=True)记录用户的键盘输入,并返回一个包含事件的列表。如果events为False,仅记录按键和释放事件(不包括其他事件)。代码在官方示例拿来了这段Example:https://github.com/boppreh/mouse#Example这段代码展示了keyboard库的一些常见用法,包括模拟按键操作、注册热键、记录和回放事件等。下面我来尝试解释一下这段代码。importkeyboardkeyboard.press_and_release('shift+s,space')keyboard.write('Thequickbrownfoxjumpsoverthelazydog.')keyboard.add_hotkey('ctrl+shift+a',print,args=('triggered','hotkey'))#PressPAGEUPthenPAGEDOWNtotype"foobar".keyboard.add_hotkey('pageup,pagedown',lambda:keyboard.write('foobar'))#Blocksuntilyoupressesc.keyboard.wait('esc')#Recordeventsuntil'esc'ispressed.recorded=keyboard.record(until='esc')#Thenreplaybackatthreetimesthespeed.keyboard.play(recorded,speed_factor=3)#Type@@thenpressspacetoreplacewithabbreviation.keyboard.add_abbreviation('@@','my.long.email@example.com')#Blockforever,like`whileTrue`.keyboard.wait()123456789101112131415161718192021222324代码释义导入了keyboard模块importkeyboard1这行代码模拟按下并释放了组合键Shift+S,然后按下并释放了空格键。keyboard.press_and_release('shift+s,space')1这行代码将字符串Thequickbrownfoxjumpsoverthelazydog.写入当前焦点的应用程序。相当于模拟了键盘的按键输入。keyboard.write('Thequickbrownfoxjumpsoverthelazydog.')1这行代码注册了一个热键Ctrl+Shift+A,当用户按下该组合键时,回调函数print将被调用,并将参数('triggered','hotkey')传递给该回调函数。keyboard.add_hotkey('ctrl+shift+a',print,args=('triggered','hotkey'))1这行代码注册了一个热键PageUp,PageDown,当用户按下该组合键时,将调用一个匿名函数,该匿名函数会将字符串foobar写入当前焦点的应用程序。keyboard.add_hotkey('pageup,pagedown',lambda:keyboard.write('foobar'))1这行代码阻塞程序,直到用户按下Esc键为止。keyboard.wait('esc')1这行代码记录键盘事件,直到用户按下Esc键为止,并将记录的事件存储在recorded变量中。recorded=keyboard.record(until='esc')1这行代码将之前记录的键盘事件以三倍的速度回放。keyboard.play(recorded,speed_factor=3)1这行代码注册了一个缩写,当用户输入@@并按下空格键时,会自动替换为my.long.email@example.com。keyboard.add_abbreviation('@@','my.long.email@example.com')1这行代码将程序无限阻塞,类似于whileTrue的效果,直到用户终止程序。keyboard.wait()1键盘监听实现✨✨因为本篇文章需要实现的是监听键盘操作,所以需要关心的是keyboard的两个操作:keyboard.add_hotkey:注册热键,接受一个热键和回调函数;keyboard.wait:监听程序,直到给定的键被按下。代码代码释义这段代码使用了keyboard模块来监听键盘事件,并通过热键来触发回调函数。它的主要作用是:定义了两个回调函数start_keyboard_listener和stop_keyboard_listener,分别用于开始和停止键盘监听;使用keyboard.add_hotkey函数注册热键,将热键和相应的回调函数绑定起来。在本例中,按下Ctrl+Shift+A将调用start_keyboard_listener,按下Ctrl+Shift+Q将调用stop_keyboard_listener;在主程序中,通过keyboard.wait('ctrl+c')进入监听状态,等待用户按下Ctrl+C来终止程序。请注意,代码中的time.sleep(5)用于模拟执行某些操作时的时间延迟,可以根据需要进行调整或移除。另外,exceptKeyboardInterrupt用于捕获用户按下Ctrl+C的中断信号,以便优雅地退出程序或执行相应的处理逻辑。importtimeimportkeyboarddefstart_keyboard_listener():"""开始键盘监听的回调函数"""print("Ctrl+Shift+Apressed")time.sleep(5)#dosomethingdefstop_keyboard_listener():"""停止键盘监听的回调函数"""print("Ctrl+Shift+Qpressed")time.sleep(5)#dosomething#注册热键,设置回调函数keyboard.add_hotkey('Ctrl+Shift+A',start_keyboard_listener)keyboard.add_hotkey('Ctrl+Shift+Q',stop_keyboard_listener)#进入监听状态try:keyboard.wait('ctrl+c')exceptKeyboardInterrupt:...1234567891011121314151617181920212223242526272829303132运行效果可以清楚的看到(注意看左上角的显示键盘程序),当按下键盘的Ctrl+Shift+A时候,执行了start_keyboard_listener函数;当按下键盘的Ctrl+Shift+Q时候,执行了stop_keyboard_listener函数。总结🎈🎈本文介绍了利用keyboard模块的基本使用,并且实现键盘监听的操作,主要使用keyboard的add_hotkey和wait两个方法来实现。应用场景如下:快捷键操作:通过监听特定的快捷键,实现在特定情况下执行某些操作。例如,当按下Ctrl+Shift+A时开始执行某个任务,按下Ctrl+Shift+Q时停止执行任务。自动化脚本:在需要进行键盘监听的自动化脚本中使用。可以根据特定的键盘输入触发相应的操作,从而实现自动化任务的执行。例如,在某个特定的键盘事件发生时,自动触发截图、记录日志等操作。辅助工具开发:作为开发辅助工具的一部分,监听键盘事件,以便在特定的触发条件下执行相应的操作。例如,当按下特定的组合键时,显示帮助信息或执行调试操作。总之,本文代码可以用于监听键盘事件,并根据特定的键盘输入触发相应的操作,具体的应用场景取决于需求和实际情况。后话本次分享到此结束,seeyou~~🐱‍🏍🐱‍🏍
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 11:56 , Processed in 0.410717 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表