在 linux 程序上,在控制台上(如没有 xorg 等),我使用 /dev/input/event* 来读取键盘和鼠标,但是我需要成为 root 才能读取它们。是否有另一种形式可以在不需要 root 权限的情况下读取这些内容(无需更改权限和配置文件等)?
我理解为什么默认情况下会这样做,无需解释。
是的,可以通过创建 udev 规则,请参阅此HowTo
例如,以 root 身份创建文件 /etc/udev/rules.d/99-input.rules:
内核==“事件*”,名称=“输入/%k”,模式=“660”,组=“输入”
注意:您可能需要先创建组“输入”。
检查设备文件属于哪个组。例如,在这里我得到:
$ ls -l /dev/输入/ ... crw-rw---- 1 root plugdev 13, 64 Nov 4 18:01 event0 crw-rw---- 1 root plugdev 13, 65 Nov 4 18:01 event1 crw-rw---- 1 root plugdev 13, 66 Nov 4 18:01 event2 crw-rw---- 1 root plugdev 13, 67 Nov 4 18:01 event3 crw-rw---- 1 root plugdev 13, 68 Nov 4 18:01 event4 ...
执行您的程序的用户需要在此系统上的 plugdev 组中。您的系统上可能存在类似的情况。
如果您正在寻求一种规避方法(在不加入组的情况下读取或写入设备),那么不会。这显然会破坏用户组的安全目的。
直接读取事件设备的替代方法是使用适当的用户空间 API。例如,要读取键盘,您将使用 ncurses,而要读取鼠标,您将使用 GPM。