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

如何在Python中监听全局按键或指定应用窗口的鼠标点击

解决方案:监听键盘按键与鼠标点击事件

推荐使用pynput模块,它能同时监听键盘和鼠标输入,API简洁直观,完全匹配你的需求。以下是完整的可运行代码:

1. 先安装依赖

pip install pynput pywin32  # pywin32仅Windows平台需要

2. 完整实现代码

from pynput import keyboard, mouse
import time
import win32gui  # Windows平台专用,获取窗口标题

key_pressed = None
clicked_app = None

# 键盘按键监听回调
def on_press(key):
    global key_pressed
    try:
        # 记录普通字符按键
        key_pressed = key.char
    except AttributeError:
        # 记录特殊按键(如Shift、Ctrl等)
        key_pressed = str(key)
    # 触发后立即停止监听
    return False

# 鼠标点击监听回调
def on_click(x, y, button, pressed):
    global clicked_app
    if pressed:
        # 获取点击位置对应的窗口标题
        hwnd = win32gui.WindowFromPoint((x, y))
        clicked_app = win32gui.GetWindowText(hwnd)
        # 触发后立即停止监听
        return False

print('press any key or click on any application...')

# 启动两个监听线程
key_listener = keyboard.Listener(on_press=on_press)
mouse_listener = mouse.Listener(on_click=on_click)

key_listener.start()
mouse_listener.start()

# 等待任一监听线程结束
while key_listener.is_alive() and mouse_listener.is_alive():
    time.sleep(0.1)

# 等待线程收尾
key_listener.join()
mouse_listener.join()

# 输出结果
if key_pressed:
    print(f'You pressed {key_pressed}.')
if clicked_app:
    print(f'You clicked on {clicked_app}')

代码说明

  • 键盘监听:捕获任意按键,区分普通字符和特殊按键(如Key.space、Key.shift)
  • 鼠标监听:捕获左键点击(可修改为监听其他按键),通过win32gui获取点击位置的窗口标题
  • 双线程同时监听,任一输入触发后立即停止所有监听,继续执行后续逻辑

跨平台注意事项

  • 如果是macOS/Linux平台,获取窗口标题的代码需要替换:
    • macOS:使用Quartz模块
    • Linux:使用Xlib模块
  • pynput本身是跨平台的,仅窗口标题获取部分需要适配系统

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:38:16