开发者

Python自动化之pynput键盘鼠标操作全攻略

目录
  • 键盘操作
  • 鼠标操作
  • 键盘监听
  • 鼠标监听

键盘操作

需要执行 pressrelease 来输入按键。 当然,也可以单独执行 press

from pynput.keyboard import Key, Controller
from time import sleep

# 初始化键盘控制器
keyboard = Controller()

sleep(3)

# 模拟按下和释放 A 键
keyboard.press('a')
keyboard.release('a')

# 模拟按下和释放 Enter 键
keyboard.press(Key.enter)
keyboard.releasehttp://www.devze.com(Key.enter)

鼠标操作

from pynput.mouse import Button,Controller
from time import sleep

# 初始化鼠标控制器
mouse = Controller()

sleep(3)

# 模拟鼠标移动到 (100, 100) 位置
mouse.position = (100, 100)

mouse.click(Button.left,1)

# 模拟鼠标右键点击
mouse.click(Button.right, 1)

注意:这里引入的是 pynput.mouse 的 Controller,与键盘处的名称相同,但是作用不同,需要区分。推荐使用别名的方式将 Controller 命名为 MouseController。下面的方法也会用别名的方式进行区分。

from pynput.mouse import Controller as MouseController

键盘监听

from pynput.keyboard import Listener as KeyboardListener

def on_press(key):
    print(f'Alphanumeric key pressed: {key}')

def on_release(key):
    print(f'Alphanumeric key released: {key}')
    if key == Key.esc:
        # 停止监听
        return False
  
# 设置键盘监听
with KeyboardListener(on_press=on_presswww.devze.com, on_release=on_release) as listener:
    listener.join()

该方法输出用户按下的按键,当用户按下 Esc 时停止。

全局热键监听

def keyboard_hotkey():
    keyboard_controller = Controller()
  
    def on_activate_f():
        print('全局热键 F 被激活')
        keyboard_controller.type('你按了热键F')

    def on_activate_shift_a():
        print('全局热键 Shift+A 被激活')
        keyboard_controller.type('你按了热键Shift+A')

    # 创建热键
    with keyboard.GlobalHotKeys({
            'f': on_activate_f,
            '<shift>+a': on_activate_shift_a}) as h:
        h.join()

鼠标监听

from pynput.mouse import Listener as MouseListener

def mouse_listener():
    # 添加左键点击计数器
    left_click_count = 0
  
    def on_move(x, y):
        print(f'Mouse moved to ({x}, {y})')
  
    def on_click(x, y, button, pressed):
        nonlocal left_click_count
        print(f'Mouse clicked at ({x}, {y}) with {button}')
        # 检查是否是左键点击且按下状态
        if button == Button.left and pressed:
            left_click_count += 1
            print(f'左键点击次数: {left_click_count}')

            # 如果左键点击次数超过三次,停止监听
            if left_click_count >= 3:
                print('左键点击已达到3次,停止监听')
                return False
www.devze.com
    def on_scroll(x, y, dx, dy):
        print(f'Scrolled at ({x}, {y})')

  

    # 设置鼠标监听
    with MouseListener(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as listener:
        listener.join()

mouse_listener()

该示例记录鼠标信息,当鼠标左键点击三次停止。

知识补充

如何通过pynput与日志记录实现键盘、鼠标的监听行为?

将相关的模块导入到代码块中。

# 鼠标键盘监控
from pynput import keyboard, mouse
# 日志处理
from loguru import logger
# 多线程处理
from threading import Thread

将目标日志记录文件加入到logger代码处理器中。

logger.add('lister.log')

编写鼠标被按下时的处理函数。

def on_keyboard_press(key):
    '''
    按键时记录所按下的键
    :param key:
    :return:
    '''
    logger.debug(f'{key} :被按下了')

编写鼠标抬起时的处理函数。

def on_keyboard_release(key):
    '''
    释放按键处理函数
    :param key:
    :return:
    '''
    if key == keyboard.Key.esc:
        return False

编写鼠标单击、右击以及滑轮的处理函数。

def on_mouse_click(x, y, click, pressed):
    if click == mouse.Button.left:
        logger.debug('鼠标左键按下了')
    elif click == mouse.Button.right:
        logger.debug('鼠标右键按下了')
        return False
    else:
        logger.debug('中间滚轮按下了')

将键盘相关的处理函数加入到键盘事件的监听中。

def func_keyboard():
    '''
    键盘的按下/释放的监听
    :return:
    '''
    with keyboard.ListenGsQajer(on_press=on_keyboard_press, on_release=on_keyboard_release) as keyboard_listener:
        keyboard_listener.join()

将鼠标相关的处理函数加入到鼠标事件的监听中。

def func_keyboard():
    '''
    键盘的按下/释放的监听
    :return:
    '''
    with keyboard.Listener(on_press=on_keyboard_press, on_release=on_keyboard_release) as keyboard_listener:
        keyboard_listener.join()

在main()的处理函数中将鼠标监听、键盘监听分别作为两个线程启动。

if __name__ == '__main__':
    '''
    执行线程
    '''
    # 定义键盘监听线程
    thread_keyboard = Thread(target=func_keyboard)
    # 定义鼠标监听线程
    thread_mouse = Thread(target=func_mouse_click)
    # 分别启动线程
    thread_keyboard.start()
    thread_mouse.start()

最后可以得到一份键盘、鼠标历史执行状态记录的日志文件,通过NLTK语言的处理从而逆向推出电脑的操作内容,这一部分就不演示了。

到此这篇关于python自动化之pynput键盘鼠标操作全攻略的文章就介绍到这了,更多相关Pythonwww.devze.com pynput操作键盘鼠标内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜