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

pynput自定义keyEvent类中event.key与Key对象不匹配问题

问题分析与解决

根本原因

问题出在keyEvent类的构造函数中:

def __init__(self, key, callback, onPress, onRelease):
    self.key = key,  # 这里多了一个逗号!
    # ... 其他代码

末尾的逗号会将key包装成单元素元组,比如原本传入的keyboard.Key.enter会变成(<Key.enter: <65293>>,)。而_onKeyPress中传入的key是原始的Key对象,元组和单个Key对象永远不可能相等,所以所有事件的匹配判断都失败了。

修复方法

去掉self.key = key,末尾的逗号,改为直接赋值:

self.key = key

修改后,event.key会存储原始的Key对象,和_onKeyPress传入的key类型一致,就能正确匹配触发fire方法。

验证说明

从你的输出日志也能佐证这个问题:

  • 第一行显示传入的key是Key.enter(单个对象)
  • 后续日志里的event.key都是带括号的元组格式,比如(<Key.enter: <65293>>,)
    两者类型和值都不匹配,自然无法触发事件。

内容的提问来源于stack exchange,提问作者AwesomeCronk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:05:32