python3 linux-检测按下了root的键盘键

时间:2018-12-14 03:50:02

标签: python python-3.x

我试图检测键盘按下的键但没有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用于按键,但未检查是否按键

1 个答案:

答案 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。