吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1556|回复: 0
收起左侧

[Python 转载] mac端多次复制粘贴源码分享

[复制链接]
影灬殇 发表于 2021-1-12 19:52
本帖最后由 影灬殇 于 2021-6-10 15:09 编辑

工作中mac需要用到复制粘贴功能,网上找了一些发现都不是很友好,自己查资料写了一个可以实现多次复制粘贴功能,分享给有需要的人
用到模块:pyperclip、pynput


copy_and_paste_mac

mac端多次复制粘贴

运行环境

mac + python3

PS:window可以根据快捷键做修改

脚本逻辑

判断键盘按键快捷键是复制还是粘贴,将复制内容加入列表,粘贴的时候依次从列表中取出复制内容

运行方式

将代码拉到本地

git clone https://github.com/WhiteNightShadow/copy_and_paste_mac.git

下载依赖包

pip install -r requirements.txt

运行脚本

python keyboard_function.py





[Python] 纯文本查看 复制代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 依赖包下载
# pyperclip==1.8.0
# pynput==1.7.1
import os
import time
import pyperclip
import threading
from pynput import keyboard

# 复制快捷键
copy_list = ["Key.cmd", "c"]
# 粘贴快捷键
paste_list = ["Key.cmd", "v"]
# 全局键盘多个按键
global_keyboard_list = []
# 存储复制内容
global_save_list = []


def copy_exec():
    """执行复制操作"""
    time.sleep(0.1)
    curr_copy = pyperclip.paste()
    global_save_list.append(curr_copy)
    print(f"内容:{curr_copy},加入成功:{global_save_list}")


def paste_exec():
    """执行粘贴操作"""
    if not global_save_list:
        print("没有复制内容")
        return None
    curr_copy = global_save_list[0]
    del global_save_list[0]
    pyperclip.copy(curr_copy)
    print(f"取出内容:{curr_copy}")


def on_press(key):
    """监听键盘按下"""

    global_keyboard_list.append(str(key).replace("'", ""))
    if global_keyboard_list == copy_list:
        copy_exec()
    elif global_keyboard_list == paste_list:
        paste_exec()
    print(global_keyboard_list)


def on_release(key):
    """监听键盘松开"""
    # 停止运行
    if key == keyboard.Key.esc:
        os._exit(0)
    global_keyboard_list.clear()


def monitor_keyboard():
    """监听键盘操作"""
    while True:
        with keyboard.Listener(
                on_press=on_press,
                on_release=on_release) as listener:
            listener.join()


def main():
    """
    1.线程监听键盘输入情况
    2.判断输入复制或粘贴快捷键
    3.执行复制或粘贴快捷键方法
    """
    thread_monitor = threading.Thread(target=monitor_keyboard)
    thread_monitor.start()


if __name__ == '__main__':
    main()

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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