Linux プログラムでは、コンソール (xorg がない場合など) で /dev/input/event* を使用してキーボードとマウスを読み取りますが、それらを読み取るには root になる必要があります。root権限を必要とせずに(permisonsやconfigファイルなどを変更せずに)そのようなものを読むための代替フォームはありますか?
デフォルトでそれを説明する必要がない理由を理解しています。
はい、udev ルールを作成することで可能です。このHowToを参照してください
たとえば、ルートとして、ファイル /etc/udev/rules.d/99-input.rules を作成します。
KERNEL=="イベント*"、NAME="input/%k"、MODE="660"、GROUP="input"
注: おそらく最初にグループ "input" を作成する必要があります。
デバイス ファイルがどのグループに属しているかを確認します。たとえば、次のようになります。
$ ls -l /dev/input/ ... crw-rw---- 1 ルート plugdev 13、64 Nov 4 18:01 event0 crw-rw---- 1 ルート plugdev 13、65 Nov 4 18:01 event1 crw-rw---- 1 ルート plugdev 13、66 Nov 4 18:01 event2 crw-rw---- 1 ルート plugdev 13、67 Nov 4 18:01 event3 crw-rw---- 1 ルート plugdev 13、68 Nov 4 18:01 event4 ...
プログラムを実行するユーザーは、このシステムの plugdev グループに属している必要があります。おそらく、あなたのシステムでも似たようなことが起こります。
それを回避する方法 (グループに属さずにデバイスの読み取りまたは書き込み) を求めている場合は、いいえ。これは明らかに、ユーザー グループによるセキュリティの目的を無効にします。
イベント デバイスを直接読み取る代わりに、適切なユーザー空間 API を使用することもできます。たとえば、キーボードを読み取るには ncurses を使用し、マウスを読み取るには GPM を使用します。