Windows环境下Python如何禁用与启用键盘输入(Valorant触发Bot开发)
解决Python鼠标点击前后禁用/启用键盘输入的问题
使用pynput库可以高效实现键盘事件的拦截与释放,适配你开发触发机器人的学习场景,以下是具体方案:
核心逻辑
- 执行鼠标点击前,启动键盘监听器拦截输入
- 点击操作完成后,停止监听器恢复键盘功能
完整代码示例
from pynput.mouse import Controller as MouseController from pynput.keyboard import Listener, KeyCode import time # 初始化鼠标控制器 mouse = MouseController() # 存储键盘监听器实例 keyboard_listener = None def on_key_press(key): # 返回False会阻止按键事件传递到系统,实现禁用效果 return False def disable_keyboard_input(): global keyboard_listener # 创建并启动监听器 keyboard_listener = Listener(on_press=on_key_press) keyboard_listener.start() def enable_keyboard_input(): global keyboard_listener if keyboard_listener: # 停止监听器并释放资源 keyboard_listener.stop() keyboard_listener = None # 测试流程 if __name__ == "__main__": print("3秒后将禁用键盘并执行左键点击...") time.sleep(3) # 禁用键盘 disable_keyboard_input() print("键盘已禁用,执行鼠标点击") mouse.click("left") # 根据需求添加操作延迟 time.sleep(0.5) # 恢复键盘 enable_keyboard_input() print("键盘已恢复正常")
自定义拦截规则
如果不需要禁用所有按键,仅拦截特定按键(比如游戏移动键WASD),可以修改on_key_press函数:
def on_key_press(key): # 定义需要拦截的按键集合 blocked_keys = { KeyCode.from_char('w'), KeyCode.from_char('a'), KeyCode.from_char('s'), KeyCode.from_char('d') } # 仅拦截指定按键,其他按键正常传递 if key in blocked_keys: return False return True
关键注意事项
- 运行脚本需管理员权限,否则可能无法在游戏进程中正确拦截键盘事件
- 确保已安装
pynput:执行命令pip install pynput - 若遇到监听器失效问题,检查是否有其他键盘监听程序冲突
内容的提问来源于stack exchange,提问作者Henry
相关产品推荐
相关产品推荐

