我试图检测键盘按下的键但没有root-我找到了库键盘,但是它没有用(因为它需要root)
我发现一些网站说它不需要root,但绝对需要。
我尝试了这段代码
import keyboard
def key_press(key):
print(key.name)
keyboard.on_press(key_press)
但是就像我说的-它需要root
...
line 174, in ensure_root
raise ImportError('You must be root to use this library on linux.')
ImportError: You must be root to use this library on linux.
我需要没有root用户,因为当然首先要保证安全,并且因为稍后我将添加pygame-并且您无法使用root用户运行gui
我也尝试搜索其他库,但没有发现任何可检测按键的信息-有pykeyboard用于按键,但未检查是否按键
答案 0 :(得分:0)
在此模块的已知限制下被提及
为避免依赖X,Linux部件读取原始设备文件(
/dev/input/input*
),但这需要root。
可以从源代码(_nixkeyboard.py)中确认。
def ensure_root():
if os.geteuid() != 0:
raise ImportError('You must be root to use this library on linux.')
device = None
def build_device():
global device
if device: return
ensure_root()
device = aggregate_devices('kbd')
def init():
build_device()
...
def listen(callback):
build_device()
...
def write_event(scan_code, is_down):
build_device()
...
请注意,在执行任何操作之前,将调用build_device
,该调用将ensure_root
检查调用过程的有效用户ID。