You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,提问作者ליאור כהן

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:54:05