如何在Python中检测Mb4/X1按键是否处于按住状态?
检测Mb4/X1按键按住状态的解决方案
Windows平台(pywin32)
借助Windows系统API直接查询按键实时状态,可精准识别X1按键的按住状态:
- 安装依赖:
pip install pywin32
- 示例代码:
import win32api import time # X1按键的虚拟键码为0x05 X1_VK_CODE = 0x05 def check_x1_held(): # GetAsyncKeyState返回值的最高位为1时,表示按键处于按住状态 return (win32api.GetAsyncKeyState(X1_VK_CODE) & 0x8000) != 0 try: while True: status = "按住中" if check_x1_held() else "未按住" print(f"X1按键状态:{status}", end="\r") time.sleep(0.1) except KeyboardInterrupt: print("\n程序终止")
Linux平台(evdev)
通过读取系统输入设备的实时状态来检测按键按住:
- 安装依赖:
pip install evdev
- 示例代码:
from evdev import InputDevice, ecodes import time # 替换为你的鼠标设备路径,可通过`ls /dev/input/event*`查看并测试 mouse_device = InputDevice('/dev/input/event3') def check_x1_held(): # KEY_X1对应X1按键,通过active_keys()获取当前所有按住的键 return ecodes.KEY_X1 in mouse_device.active_keys() try: while True: status = "按住中" if check_x1_held() else "未按住" print(f"X1按键状态:{status}", end="\r") time.sleep(0.1) except KeyboardInterrupt: print("\n程序终止") finally: mouse_device.close()
补充说明
keyboard库也可尝试通过扫描码检测,但不同设备的X1扫描码可能不一致,稳定性不如系统级API。若要尝试,可使用keyboard.is_pressed(scancode=你的扫描码),扫描码可通过keyboard.record()录制按键获取。- 上述方案均能实时检测按键的按住状态,而非仅触发按下/松开事件。
内容的提问来源于stack exchange,提问作者GeoChicken
相关产品推荐
相关产品推荐

