使用Pynput实现快捷键自动输入文本时字符丢失问题求助
解决Pynput热键触发后输入文本异常的问题
问题原因
触发<ctrl>+<alt>+h热键时,Ctrl和Alt键处于按下状态,直接调用k.type()会导致输入受修饰键干扰——比如小写字母会被修饰键组合成系统快捷键,空格也会因为修饰键的存在无法正常输出,最终出现只输入大写字符HELO的情况。
修正代码
from pynput import keyboard from pynput.keyboard import Key, Controller import time k = Controller() def on_activate_h(): # 释放按住的Ctrl和Alt键 for key in [Key.ctrl, Key.alt]: if k.is_pressed(key): k.release(key) # 短暂延迟确保按键状态同步 time.sleep(0.05) word = "HELlO" k.type(word) with keyboard.GlobalHotKeys({ '<ctrl>+<alt>+h': on_activate_h, }) as h: h.join()
说明
- 主动释放修饰键:必须先释放触发热键时按住的Ctrl和Alt,否则模拟输入会受这些键的干扰,导致字符输出异常。
- 延迟作用:给系统一点时间处理按键释放操作,避免输入时仍残留修饰键的按下状态。
- 空格输入:现在可以直接在
word变量中添加空格,比如word = "HELlO 测试",空格会正常输出。
内容的提问来源于stack exchange,提问作者DarkMole
相关产品推荐
相关产品推荐

