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

Python如何在窗口未聚焦时获取全局键盘按键输入?

keyboard模块是实现全局键盘监听的合理选型,它底层基于系统全局钩子实现,不需要程序窗口聚焦就可以捕获全系统的键盘输入,完全匹配你的开发需求。

核心使用方法

1. 事件回调模式(音游场景优先推荐)

该模式下按键事件触发时会主动调用你绑定的处理函数,响应延迟在毫秒级,适合需要实时更新按键叠加层的场景。
示例代码:

import keyboard

# 按键按下触发的回调函数
def handle_press(event):
    # event.name为按键名称,event.scan_code为硬件扫描码
    print(f"按键按下:{event.name}")
    # 此处填入你的叠加层状态更新逻辑

# 按键弹起触发的回调函数
def handle_release(event):
    print(f"按键弹起:{event.name}")

# 绑定全局所有按键的按下/弹起事件
keyboard.on_press(handle_press)
keyboard.on_release(handle_release)

# 若仅需监听特定按键,可使用如下写法(比如音游常用的z、x键)
# keyboard.on_press_key("z", lambda _: print("z键按下"))
# keyboard.on_release_key("x", lambda _: print("x键弹起"))

# 阻塞程序防止退出,若你自己有GUI主循环可删除该行
keyboard.wait()

2. 状态轮询模式

如果你习惯在自己的主逻辑循环中主动查询按键状态,可以使用is_pressed方法:

import keyboard
import time

while True:
    if keyboard.is_pressed("space"):
        print("空格键处于按下状态")
    # 监听组合键
    if keyboard.is_pressed("ctrl+c"):
        break
    # 调整轮询间隔平衡CPU占用和响应速度
    time.sleep(0.005)

注意事项

  • 权限要求:全局键盘钩子需要系统高级权限,Windows下需要以管理员身份运行脚本,Linux下需要root权限,macOS需要在系统设置中给脚本开启辅助功能权限。
  • 按键名查询:如果不知道目标按键的名称写法,可以临时运行keyboard.hook(lambda e: print(e.name)),按下对应按键即可在控制台打印出它的名称,常见特殊按键如方向左为left、左shift为left shift。
  • 事件拦截:如果需要拦截按键事件不传递给其他应用,在回调函数末尾返回False即可,普通的按键叠加层场景不需要该操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:24:02