标题中描述的问题显然非常困难。我找到的每一个解决方案(仅在 SO 中就有几十个)都不足以满足以下至少一个原因:
对于我来说,作为一个非 root 程序员,有没有办法实现一个 Python 3 脚本,可以由非 root 用户在 Unix 环境中的终端 CLI 上运行,这样
?
我强调,我不能为此使用(非标准)
keyboard
模块,因为为了安装此模块以便非root用户可以使用它,必须拥有root权限,而我没有。另外,我不想仅仅为了使其可以在 Windows 或任何其他非 Unix 操作系统上运行而给脚本添加依赖项。 IE。就我的目的而言,最小化依赖性比跨平台可操作性更重要。
这应该可以在 unix/linux 上运行而没有问题(如果不能在 python 3.12 上运行,你可以通过最小的更改来适应它):
#! /usr/bin/env python3.12
import sys
import tty
import termios
from contextlib import contextmanager
@contextmanager
def raw(f):
fd = f.fileno()
try:
old = tty.setraw(fd, when=termios.TCSADRAIN)
yield
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
def readch(f):
with raw(f):
return f.read(1)
print(f"prompt: ", end="", flush=True)
ch = readch(sys.stdin)
print(f"{ch} ({ord(ch)})")