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

如何使用pynput在特定按键事件后捕获额外击键 实现实时脏话检测

pynput 主动脏话监听器实现方案

你完全不需要创建多个监听器,仅通过全局状态标记就能实现两种状态的切换,全程仅运行1个监听器,无冗余资源开销,也不会出现逻辑冲突。

实现逻辑

  • 全局声明两个变量:is_recording(布尔值,标记当前是否需要记录按键)、input_buffer(列表,临时存储用户输入的字符)
  • 监听器全程保持运行,未进入录制状态时仅响应「Enter开启录制」操作,其余按键直接忽略,不会产生多余计算
  • 进入录制状态后处理三类按键:
    • 普通字符:追加到input_buffer存储,可实时传入脏话过滤器做检测,触发违规时直接弹出提示
    • Enter键:结束录制,清空缓冲区,is_recording改回False,可根据需求执行提交/丢弃操作
    • 退格、Shift等功能键:按需做缓冲区裁剪/忽略处理即可

参考代码

from pynput.keyboard import Key, Listener

# 全局状态
is_recording = False
input_buffer = []
# 脏话词库可自行扩展
BAD_WORDS = {"xxx", "yyy"}

def check_bad_words(content):
    # 脏话检测逻辑,可替换为更精准的过滤算法
    for word in BAD_WORDS:
        if word in content.lower():
            print("检测到违规内容,请调整表述后再发送")
            return True
    return False

def on_press(key):
    global is_recording, input_buffer
    # 未进入录制状态,仅响应Enter开启录制
    if not is_recording:
        if key == Key.enter:
            is_recording = True
            input_buffer.clear()
        return
    # 已进入录制状态,处理按键
    if key == Key.enter:
        # 按下Enter结束录制
        is_recording = False
        full_content = ''.join(input_buffer)
        if not check_bad_words(full_content):
            # 无违规内容,可在此处添加提交逻辑
            print("内容合规,已提交")
        input_buffer.clear()
        return
    if key == Key.backspace:
        # 处理退格
        if input_buffer:
            input_buffer.pop()
        return
    # 处理普通字符
    try:
        input_buffer.append(key.char)
        # 实时检测可选,不需要实时检测的话可以放到结束录制时统一检查
        check_bad_words(''.join(input_buffer))
    except AttributeError:
        # 其他功能键直接忽略
        pass

def on_release(key):
    if key == Key.esc:
        # 停止整个监听器
        return False

if __name__ == "__main__":
    with Listener(on_press=on_press, on_release=on_release) as listener:
        listener.join()

方案优势

  • 全程仅运行1个监听器,没有多监听器的逻辑冲突,资源消耗极低,哪怕每秒几十次按键操作也不会有性能问题
  • 不需要调用input(),完全避免了内置输入函数和监听器的冲突问题,可灵活自定义提交/丢弃逻辑
  • 支持两种检测模式:实时输入检测、提交前统一检测,可根据需求自行调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:24:09