Python实现英文转希伯来语快捷键工具时无法粘贴输出问题求解
问题原因
pyautogui.typewrite() 方法仅支持输入ASCII编码的字符,无法识别并输出希伯来语这类非拉丁 Unicode 字符,因此输出失效是该方法的固有特性导致的。
解决方案
放弃使用typewrite逐字符输入的逻辑,改为将转换完成的希伯来语文本直接写入系统剪贴板,再模拟粘贴快捷键输出内容。系统级的粘贴操作天生支持所有Unicode字符,不存在编码兼容问题。
同时需要给复制操作增加短延迟,避免快捷键还没执行完成就读取剪贴板,导致取到旧的剪切板内容。
修正后完整代码
from pynput.keyboard import Key, Listener import pyautogui as pya import pyperclip import time def copy_clipboard(): pya.hotkey('ctrl', 'c') # 加短延迟等待剪贴板更新 time.sleep(0.05) return pyperclip.paste() def changeLanguage(text): finalText = "" data = { 't': 'א', 'c': 'ב', 'd': 'ג', 's': 'ד', 'v': 'ה', 'u': 'ו', 'z': 'ז', 'j': 'ח', 'y': 'ט', 'h': 'י', 'f': 'כ', 'k': 'ל', 'n': 'מ', 'b': 'נ', 'x': 'ס', 'g': 'ע', 'p': 'פ', 'e': 'ק', 'm': 'צ', 'r': 'ר', 'a': 'ש', ',': 'ת', 'w': "'", 'q': '/', 'i': 'ן', 'o': 'ם', ';': 'ף', 'l': 'ך', '.': 'ץ', '/': '.', } for char in text: if char in data: finalText += data[char] else: finalText += char return finalText def on_press(key): if str(key) == 'Key.f9': raw_text = copy_clipboard() translated_text = changeLanguage(raw_text) # 将转换后的文本写入剪贴板 pyperclip.copy(translated_text) # 模拟粘贴输出 pya.hotkey('ctrl', 'v') with Listener(on_press=on_press) as listener: listener.join()
注意事项
如果你使用的是macOS系统,请将代码中所有的ctrl替换为cmd即可正常运行。
内容的提问来源于stack exchange,提问作者ליאור כהן
相关产品推荐
相关产品推荐

