Python中keyboard模块移除后,内置替代按键检测模块咨询
仅用Python内置库实现特定按键触发事件的方案
因为不能使用第三方keyboard库,可根据操作系统选择对应的内置库实现:
Windows 平台
使用内置的msvcrt库,它提供了与控制台交互的函数:
import msvcrt def wait_for_key(target_key): while True: # 获取按下的按键(阻塞式) pressed_key = msvcrt.getch().decode('utf-8') if pressed_key == target_key: print("触发事件:目标按键已按下") # 在这里添加你要执行的事件逻辑 break # 示例:等待按下字母'a'时触发事件 wait_for_key('a')
- 说明:
msvcrt.getch()会阻塞程序直到有按键按下,返回的字节需解码为字符串后判断;如果要监听特殊按键(如方向键),需要处理多字节输入,可结合msvcrt.kbhit()做非阻塞检测。
Unix/Linux/macOS 平台
使用sys、termios和tty这几个内置库修改终端输入模式,实现按键监听:
import sys import termios import tty def get_key(): # 保存终端原有设置 old_settings = termios.tcgetattr(sys.stdin) try: # 设置终端为原始模式,直接读取按键 tty.setraw(sys.stdin.fileno()) key = sys.stdin.read(1) finally: # 恢复终端原有设置 termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings) return key def wait_for_key(target_key): while True: pressed_key = get_key() if pressed_key == target_key: print("触发事件:目标按键已按下") # 在这里添加你要执行的事件逻辑 break # 示例:等待按下字母'b'时触发事件 wait_for_key('b')
- 说明:
tty.setraw()让终端不再等待回车键,直接返回按键;特殊按键(如Ctrl+C)会被捕获,若需要保留系统默认行为,需额外处理信号;同样,方向键等特殊键会返回多字节序列,需额外判断。
内容的提问来源于stack exchange,提问作者James Logie
相关产品推荐
相关产品推荐

