Python实现快捷键更新剪切板

一、背景

在日常找同事帮忙审批的时候,会频繁使用到一些官方用语,同时在查找自己的代码自测日志时会频繁使用到自己的账号,若每次都从收集的文档中复制内容,需要在多个页面之间进行切换,操作步骤繁琐,因此想到用快捷键来快速拿到一些频繁使用的文本。而电脑上可用的快捷键资源相对紧缺,为了更紧凑、高效地使用快捷键,按下快捷键时会参考剪切板内容更新剪切板,以此让快捷键的使用更加紧凑,并可以依赖这一特性,将同类的文本放在同一个快捷键下管理。

二、代码实现

import pyperclip
from pynput import keyboard

# 存储映射关系
mapping = {
    # 可以继续添加更多的映射关系
    "同事对话一": "同事对话二",
    "账号": "密码",
    "询问进度": "请告知一下当前项目的进度",
    "索要日志": "请提供一下相关的日志文件"
}

# 存储快捷键对应的初始值
initial_values = {
    '++1': "同事对话一",
    '++2': "账号",
    '++3': "询问进度",
    '++4': "索要日志"
}


def on_activate(hotkey):
    current_clipboard = pyperclip.paste()
    if current_clipboard in mapping:
        new_text = mapping[current_clipboard]
    else:
        new_text = initial_values[hotkey]
    pyperclip.copy(new_text)
    print(new_text)


with keyboard.GlobalHotKeys({
    '++1': lambda: on_activate('++1'),
    '++2': lambda: on_activate('++2'),
    '++3': lambda: on_activate('++3'),
    '++4': lambda: on_activate('++4')
}) as h:
    h.join()

三、代码解释

1. 导入必要的库

import pyperclip
from pynput import keyboard
  • pyperclip:用于操作剪贴板,提供复制(copy)和粘贴(paste)功能,方便程序对剪贴板内容进行读写操作。
  • pynput.keyboard:用于监听全局热键事件,使得程序能够在后台持续监听用户按下的快捷键组合。

2. 定义映射关系和初始值

# 存储映射关系
mapping = {
    # 可以继续添加更多的映射关系
    "同事对话一": "同事对话二",
    "账号": "密码",
    "询问进度": "请告知一下当前项目的进度",
    "索要日志": "请提供一下相关的日志文件"
}

# 存储快捷键对应的初始值
initial_values = {
    '++1': "同事对话一",
    '++2': "账号",
    '++3': "询问进度",
    '++4': "索要日志"
}
  • mapping 字典:存储了文本之间的映射关系,当剪贴板内容为字典中的键时,程序会将其替换为对应的值。你可以根据实际需求添加更多的映射关系。
  • initial_values 字典:存储了每个快捷键对应的初始文本。当按下快捷键且剪贴板内容不在 mapping 字典中时,程序会将剪贴板内容设置为该快捷键对应的初始值。

3. 定义热键处理函数

def on_activate(hotkey):
    current_clipboard = pyperclip.paste()
    if current_clipboard in mapping:
        new_text = mapping[current_clipboard]
    else:
        new_text = initial_values[hotkey]
    pyperclip.copy(new_text)
    print(new_text)
  • on_activate 函数:接收热键字符串作为参数。
    • 首先使用 pyperclip.paste() 获取当前剪贴板的内容。
    • 检查剪贴板内容是否在 mapping 字典中,如果存在则使用映射后的文本;否则,使用该热键对应的初始文本。
    • 最后使用 pyperclip.copy() 将新的文本复制到剪贴板。

4. 设置全局热键并启动监听

with keyboard.GlobalHotKeys({
    '++1': lambda: on_activate('++1'),
    '++2': lambda: on_activate('++2'),
    '++3': lambda: on_activate('++3'),
    '++4': lambda: on_activate('++4')
}) as h:
    h.join()
  • keyboard.GlobalHotKeys:创建一个全局热键监听器,监听指定的快捷键组合。
  • 当按下 ++1++2++3 或 ++4 时,分别调用 on_activate 函数并传入对应的热键字符串。
  • h.join():启动监听器,使程序持续运行,等待热键事件的触发。

你可能感兴趣的:(python,开发语言)