一、背景
在日常找同事帮忙审批的时候,会频繁使用到一些官方用语,同时在查找自己的代码自测日志时会频繁使用到自己的账号,若每次都从收集的文档中复制内容,需要在多个页面之间进行切换,操作步骤繁琐,因此想到用快捷键来快速拿到一些频繁使用的文本。而电脑上可用的快捷键资源相对紧缺,为了更紧凑、高效地使用快捷键,按下快捷键时会参考剪切板内容更新剪切板,以此让快捷键的使用更加紧凑,并可以依赖这一特性,将同类的文本放在同一个快捷键下管理。
二、代码实现
import pyperclip
from pynput import keyboard
# 存储映射关系
mapping = {
# 可以继续添加更多的映射关系
"同事对话一": "同事对话二",
"账号": "密码",
"询问进度": "请告知一下当前项目的进度",
"索要日志": "请提供一下相关的日志文件"
}
# 存储快捷键对应的初始值
initial_values = {
'<ctrl>+<alt>+1': "同事对话一",
'<ctrl>+<alt>+2': "账号",
'<ctrl>+<alt>+3': "询问进度",
'<ctrl>+<alt>+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({
'<ctrl>+<alt>+1': lambda: on_activate('<ctrl>+<alt>+1'),
'<ctrl>+<alt>+2': lambda: on_activate('<ctrl>+<alt>+2'),
'<ctrl>+<alt>+3': lambda: on_activate('<ctrl>+<alt>+3'),
'<ctrl>+<alt>+4': lambda: on_activate('<ctrl>+<alt>+4')
}) as h:
h.join()
三、代码解释
1. 导入必要的库
import pyperclip
from pynput import keyboard
pyperclip:用于操作剪贴板,提供复制(copy)和粘贴(paste)功能,方便程序对剪贴板内容进行读写操作。pynput.keyboard:用于监听全局热键事件,使得程序能够在后台持续监听用户按下的快捷键组合。
2. 定义映射关系和初始值
# 存储映射关系
mapping = {
# 可以继续添加更多的映射关系
"同事对话一": "同事对话二",
"账号": "密码",
"询问进度": "请告知一下当前项目的进度",
"索要日志": "请提供一下相关的日志文件"
}
# 存储快捷键对应的初始值
initial_values = {
'<ctrl>+<alt>+1': "同事对话一",
'<ctrl>+<alt>+2': "账号",
'<ctrl>+<alt>+3': "询问进度",
'<ctrl>+<alt>+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({
'<ctrl>+<alt>+1': lambda: on_activate('<ctrl>+<alt>+1'),
'<ctrl>+<alt>+2': lambda: on_activate('<ctrl>+<alt>+2'),
'<ctrl>+<alt>+3': lambda: on_activate('<ctrl>+<alt>+3'),
'<ctrl>+<alt>+4': lambda: on_activate('<ctrl>+<alt>+4')
}) as h:
h.join()
keyboard.GlobalHotKeys:创建一个全局热键监听器,监听指定的快捷键组合。- 当按下
<ctrl>+<alt>+1、<ctrl>+<alt>+2、<ctrl>+<alt>+3或<ctrl>+<alt>+4时,分别调用on_activate函数并传入对应的热键字符串。 h.join():启动监听器,使程序持续运行,等待热键事件的触发。
754

被折叠的 条评论
为什么被折叠?



