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

Python keyboard模块:如何仅在控制台聚焦时检测按键输入?

解决控制台未聚焦时keyboard模块仍检测按键的问题

首先得明确:keyboard模块的on_press_key()是基于全局键盘钩子实现的,所以默认会捕获系统内所有按键操作,不管控制台窗口是否处于聚焦状态。要实现仅在控制台聚焦时响应按键,我们需要在按键回调中先判断当前活动窗口是否为控制台窗口,再执行对应的音乐播放器操作。

下面分平台给出具体实现方案:

Windows平台实现步骤

  1. 先安装所需依赖库:
pip install pywin32 psutil
  1. 编写判断控制台是否聚焦的逻辑,并结合keyboard模块使用:
import keyboard
import win32gui
import win32process
import psutil

def _get_current_active_process_name():
    """获取当前活动窗口对应的进程名称"""
    # 获取当前前台窗口句柄
    hwnd = win32gui.GetForegroundWindow()
    # 通过句柄获取进程ID
    pid = win32process.GetWindowThreadProcessId(hwnd)[1]
    # 用psutil获取进程名
    return psutil.Process(pid).name()

def is_console_focused():
    """判断当前聚焦窗口是否为控制台相关进程"""
    active_process = _get_current_active_process_name()
    # 根据你的实际运行环境调整进程名列表,比如python.exe是Python控制台,cmd.exe是命令提示符
    return active_process in ["python.exe", "cmd.exe", "powershell.exe"]

def handle_key_press(event):
    """按键回调函数:仅在控制台聚焦时执行操作"""
    if is_console_focused():
        # 这里替换成你的音乐播放器操作逻辑
        print(f"检测到按键 {event.name},控制台已聚焦,执行播放/暂停操作")
    # 控制台未聚焦时,直接忽略按键

# 注册你需要监听的按键,比如空格键控制播放暂停
keyboard.on_press_key("space", handle_key_press)

# 保持程序运行,等待按键事件
keyboard.wait()

macOS平台实现步骤

  1. 安装依赖库:
pip install pyobjc
  1. 适配macOS的窗口判断逻辑:
import keyboard
from AppKit import NSWorkspace

def is_console_focused():
    """判断当前聚焦窗口是否为终端应用"""
    active_app = NSWorkspace.sharedWorkspace().activeApplication()
    active_app_name = active_app["NSApplicationName"]
    # 根据你的终端工具调整,比如Terminal是系统自带终端,iTerm2是常用第三方终端
    return active_app_name in ["Terminal", "iTerm2"]

def handle_key_press(event):
    if is_console_focused():
        # 替换为你的音乐播放器操作
        print(f"检测到按键 {event.name},终端已聚焦,执行操作")

keyboard.on_press_key("space", handle_key_press)
keyboard.wait()

注意事项

  • 这种方案是全局监听后过滤,而非仅监听控制台窗口的按键,因为keyboard模块本身不支持针对特定窗口的钩子。但这种方式在功能上完全能满足你的需求。
  • 进程名/应用名需要根据你实际使用的终端工具调整,比如如果用的是VS Code的集成终端,进程名可能是Code.exe(Windows)或Code(macOS),需要自行确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 17:57:28