影灬殇 发表于 2021-1-12 19:52

mac端多次复制粘贴源码分享

本帖最后由 影灬殇 于 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



#!/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
    del global_save_list
    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()

页: [1]
查看完整版本: mac端多次复制粘贴源码分享