【Python】监听键盘鼠标,基于pynput库

这篇具有很好参考价值的文章主要介绍了【Python】监听键盘鼠标,基于pynput库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

首先放上官网链接

示例代码

模拟输入

监控输入

按键与鼠标宏

测试时的问题:按键按下不弹起的bug


前言

键盘输入我们第一时间会想到win32api,这货还行,就是稍微繁琐了点,底层了点

Windows平台Python编程必会模块之pywin32_顺其自然~的博客-CSDN博客_python pywin32

如果想监听键盘,网上大量的文章都是pyHook,但是这货是为python2服务的,然后python3要用就得经过复杂的途径,所以监听键盘用这个很难搞。

终于,我发现了pynput库,简直是救星!

对于键盘输入,pynput非常简洁,并且提供了组合键的简洁写法

对于键盘监听,pynput也非常简洁,关键是pynput一个库就实现了我们要的所有功能!

安装就pip即可,不会真有人搜到这里还不会用pip吧。

好,进入学习

首先放上官网链接

官网pynput Package Documentation — pynput 1.7.6 documentation

关于键盘Handling the keyboard — pynput 1.7.6 documentation

示例代码

模拟输入

from pynput import keyboard,mouse
from pynput.keyboard import Key
from pynput.mouse import Button

# 键盘
# 生成了一个控制器类
key_ctrl = keyboard.Controller()

# 简单按下放松
key_ctrl.press('a')
key_ctrl.release('a')

# 组合键写法1,顺序press,倒序release,比较麻烦
key_ctrl.press(Key.shift)
key_ctrl.press('a')
key_ctrl.release(Key.shift)
key_ctrl.release('a')

# 组合键写法2,使用with,自动释放,代码量缩小一半
with key_ctrl.pressed(Key.shift):
    key_ctrl.press('a')
    key_ctrl.release('a')

# 整段文字输入
key_ctrl.type('text')

# 鼠标
mouse_ctrl=mouse.Controller()
mouse_ctrl.scroll(0,-1) # 左右,上下,-1是往下滚,有小伙伴好奇,怎么能左右滚呢?
#当然是shift滚轮啦

print(mouse_ctrl.position)
mouse_ctrl.position=(0,0) # 绝对移动,直接设置坐标
mouse_ctrl.move(80,10) # 相对移动,通过函数实现
mouse_ctrl.click(Button.left,1) #选择键和次数
mouse_ctrl.press(Button.left) # 按下与释放,选择键
mouse_ctrl.release(Button.left)

监控输入

from pynput import keyboard
from pynput import mouse

def on_press(key):
    """定义按下时候的响应,参数传入key"""
    try:
        print(f'{key.char} down')
    except AttributeError:
        print(f'{key} down')


def on_release(key):
    """定义释放时候的响应"""
    print(f'{key} up')

def on_move(x,y):
    print('move to',x,y)

def on_click(x,y,button,pressed):
    print('click at',x,y,button,pressed)

def on_scroll(x,y,dx,dy):
    print('scroll at',x,y,'by',dx,dy)

# 监听写法1
def listen_key_block():
    with keyboard.Listener(
            on_press=on_press, on_release=on_release) as listener:
        listener.join()  # 加入线程池,阻塞写法


# 监听写法2
def listen_key_nblock():
    listener = keyboard.Listener(
        on_press=on_press, on_release=on_release
    )
    listener.start()  # 启动线程

def listen_mouse_nblock():
    listener = mouse.Listener(
        on_move=None, # 因为on_move太多输出了,就不放进来了,有兴趣可以加入
        on_click=on_click,
        on_scroll=on_scroll
    )
    listener.start()


if __name__ == '__main__':
    listen_mouse_nblock()
    listen_key_nblock()
    while True: # 这里应该用一个循环维持主线程,否则主线程结束了子线程就自动结束了
        pass

按键与鼠标宏

# 注意,按键类型有两种,一种是'pynput.keyboard._win32.KeyCode',另一种就是下面的枚举类

# 注意按键的模块是这个,'pynput.keyboard.Key',下面举出部分枚举,实际上还有更多

_MODIFIER_KEYS = (
    (Key.alt_gr, (Key.alt_gr.value,)),
    (Key.alt,    (Key.alt.value,   Key.alt_l.value,   Key.alt_r.value)),
    (Key.cmd,    (Key.cmd.value,   Key.cmd_l.value,   Key.cmd_r.value)),
    (Key.ctrl,   (Key.ctrl.value,  Key.ctrl_l.value,  Key.ctrl_r.value)),
    (Key.shift,  (Key.shift.value, Key.shift_l.value, Key.shift_r.value)))

测试时的问题:按键按下不弹起的bug

【Python】win32api调用后ctrl键弹不起,无法释放的原因_亦梦亦醒乐逍遥的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-486756.html

到了这里,关于【Python】监听键盘鼠标,基于pynput库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pynput:用Python轻松掌握鼠标和键盘的控制

    引言 控制鼠标和键盘是自动化任务中的常见需求。在Python中,pynput库是一种强大的工具,可以帮助我们实现这些操作。本文将详细介绍pynput库的使用方法,并提供一些示例帮助读者快速上手。 1. 安装pynput库 首先,我们需要安装pynput库。可以使用pip命令来进行安装: 2. 控制鼠

    2024年02月04日
    浏览(42)
  • Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘

    🚀🚀🚀学会控制鼠标和键盘是实现自动化的捷径!🚀🚀🚀 pynput是第三方库,所以在使用pynput之前需要下载pynput包。 下载方式1: 在终端输入 pip install pynput 下载包 下载方式2: 进入pypi官网:https://pypi.org➡️搜索 pynput ➡️选择版本➡️点击pip install pynput 下载方式3: 点击

    2023年04月09日
    浏览(43)
  • python 监听键盘事件和鼠标事件

    键盘监听: python有一个很强大的键盘监听库,那就是 keyboard 。他的父类库 pynput 可以实现鼠标监听 可以自行下载 pip install keyboard | pip install pynput 代码参考

    2024年02月13日
    浏览(42)
  • python——实现鼠标与键盘监听与事件处理

    侦听按键 侦听鼠标 监听按键 需要注意的是必须使用cv加载图像,只有点击图像窗口才能侦听点击窗口时所使用的按键 ord和chr的用法我这里重复一下,可以实现对于acall码的解释,方便直接看到按键结果 ord()函数主要用来返回对应字符的ascii码, chr()主要用来表示ascii码对应的

    2024年02月06日
    浏览(41)
  • [Python进阶] 操纵键盘:Pynput

    6.7.1 press、release 按下或释放某个按键。 6.7.2 tap 按下并弹起某个按键,按键只能为单个字符。否则报错。 输入字符串及组合键

    2024年02月05日
    浏览(43)
  • vue监听鼠标与键盘事件

     效果:  

    2024年02月16日
    浏览(40)
  • js之 事件监听(鼠标、焦点、键盘、文本)

    目标 :能够给DOM元素添加事件监听 什么是事件 :事件是在编程时系统内发生的动作或者发生的事情,比如用户在网页上单击一个按钮 什么是事件监听 :        就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为 绑定事件或者注册事

    2024年02月14日
    浏览(35)
  • c#使用Hook钩子全局监听键盘和鼠标

    背景:今天接到客户一个需求,就是在收银员在用扫码枪扫顾客会员码或者微信付款码的时候判断用户有没有加企微好友和进企微群,然后根据这个状态进行语音播报,判断顾客能不能享受优惠价。关键难点就是用户用的收银系统是别家的,线上小程序用的是我们家的,两家

    2024年01月22日
    浏览(49)
  • python基于win32实现梦幻西游手游后台鼠标键盘

    获取窗口句柄         可以使用按键精灵的按键抓抓         

    2024年02月11日
    浏览(50)
  • 【pynput】鼠标行为追踪并模拟

    利用本文内容从事的任何犯法行为和开发与本人无关,请理性利用技术服务大家,创建美好和谐的社会,让人们生活从繁琐中变得更加具有创造性! 这前面文章中,提到了【实时屏幕捕获】的内容,这篇文章则是为大家介绍在现代计算机环境中,鼠标行为追踪的有效的方法,

    2024年02月04日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包