python获取键盘上哪个键按下

当在Windows系统中,termios模块并不可用,因为termios是Unix系统(包括Linux和macOS)上的一个用于终端输入输出信息的接口,而Windows没有这样的系统调用。

如果你需要在Windows上使用类似termios的功能,你可以考虑以下替代方案:

  1. 使用Windows特有的库,如msvcrt(Microsoft Visual C Runtime),它提供了一些终端操作的功能。

    import os
    import sys
    import tty
    import termios

    def getkey():
    old_settings = termios.tcgetattr(sys.stdin)
    tty.setcbreak(sys.stdin.fileno())
    try:
    while True:
    b = os.read(sys.stdin.fileno(), 3).decode()
    if len(b) == 3:
    k = ord(b[2])
    else:
    k = ord(b)
    key_mapping = {
    127: 'backspace',
    10: 'return',
    32: 'space',
    9: 'tab',
    27: 'esc',
    65: 'up',
    66: 'down',
    67: 'right',
    68: 'left'
    }
    return key_mapping.get(k, chr(k))

    复制代码
     except TypeError:
         pass
     finally:
         termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)

    if name == 'main':
    try:
    while True:
    key = getkey()
    if key == 'esc':
    break
    else:
    print("key= ",key);
    except (KeyboardInterrupt, SystemExit):
    os.system('stty sane')
    print('stopping.')

运行程序按下键盘上的按键,会在终端打印对应的按键名

相关推荐
我不是疯子是傻子8 小时前
Qt CAN通信周期发送抖动?实测定时器精度校准与时间戳补偿方案
开发语言·数据库·qt
IT_陈寒8 小时前
Vue的双向绑定把我坑惨了,原来这个场景不能用
前端·人工智能·后端
比高创意品牌策划设计8 小时前
零售卖场设计软件用CAD还是SketchUp还是酷家乐
python
hunterandroid8 小时前
[Android 从零到一] Compose LazyColumn 性能优化:key、稳定性与重组治理
android·前端
IT爱学堂8 小时前
尚硅谷 - 2025年3月Java+AI大模型应用开发
java·开发语言·人工智能
有点。8 小时前
C++认识数
开发语言·c++
lichenyang4538 小时前
从一次团队邀请开始:用 React、NestJS 与 Socket.IO 做可靠的实时通知
前端
vtian8 小时前
一篇文章吃透 Monorepo:pnpm + Turborepo + Changesets 全流程实战(含 8 个踩坑)
前端
默_笙9 小时前
❗ 点击计数按钮,为什么"峨眉队"也跟着重新渲染?React.memo 说:我记住了
前端·javascript
31535669139 小时前
DeepSeek Harness 发布后,我没急着跑 Demo,先把 `.agents/` 翻了一遍
前端·后端·github