Windows下Python inputs库优化及Xbox指南键监听方案咨询
性能优化方案
- 优先修复死循环空转问题:你当前的代码无任何休眠逻辑,会持续抢占CPU时间片,这是资源占用过高的核心原因,而非inputs库本身的缺陷。仅需在循环末尾添加10ms休眠,完全不会影响按键响应及时性,CPU占用可直接降至1%以内,修改后的参考代码如下:
import time while 1: events = get_gamepad() if events: print(events[0].code) if events[0].code == 'START' : ScreenShot() # 可选添加200ms消抖,避免单次按键触发多次截图 time.sleep(0.2) time.sleep(0.01)
- 如需进一步降低开销,可替换inputs库为
XInput-Python:该库直接调用Windows原生XInput接口,没有跨平台兼容的额外封装开销,资源占用更低,参考实现如下:
import time import XInput # 0对应系统识别的第一个手柄 CONTROLLER_ID = 0 while 1: if XInput.get_connected()[CONTROLLER_ID]: state = XInput.get_state(CONTROLLER_ID) # 检测START键按下 if state.Gamepad.wButtons & XInput.XINPUT_GAMEPAD_START: ScreenShot() time.sleep(0.2) time.sleep(0.01)
Xbox指南键监听方案
- 低成本实现方案:打开Windows自带的「Xbox 配件」应用,选中已连接的Xbox手柄,进入按键自定义设置页,将指南键绑定到系统无占用的组合快捷键(例如Ctrl+Alt+F12),之后直接使用你已熟练使用的pynput库监听该快捷键即可,无需处理手柄底层输入逻辑,零额外运行开销。
- 原生代码监听方案:标准XInput接口默认不会返回指南键的触发状态,你可以通过
pywin32库调用Windows RawInput原始输入接口,读取手柄的HID原始报告实现监听,指南键对应的按键位掩码为0x0400,可直接从HID报告的按键字段中读取判断。
内容的提问来源于stack exchange,提问作者Cool guy
相关产品推荐
相关产品推荐

