from evdev import uinput, UInput
from evdev import ecodes as e
Raspberry Pi上で上記のようにevdevパッケージを使ったPythonプログラムを実行しようとしたら、
env) foo@bar:~/tar $ python hogehoge.py
"/dev/uinput" cannot be opened for writing
Have you tried running as root? sudo hogehoge.py
env) foo@bar:~/tar $
というエラーが出た。
virutalenv 上でevdevをインストールしたからかも..
とおもって
virtualenv環境ではなくじかにevdevをインストールして、
sudoをつけて実行すると..うごいた..
でも、このプログラムを一般ユーザでうごかしたい..
ということで調べたら、
以下の方法で動いた。
sudo vi /etc/udev/rules.d/40-uinput.rules
してファイルを新規作成し、
SUBSYSTEM=="misc", KERNEL=="uinput", MODE="0660", GROUP="uinput"
と入力し保存。
つぎに、
sudo vi /etc/modules-load.d/uinput.conf
してファイルを新規作成し、
uinput
と入力し保存。
そして
sudo groupadd uinput
sudo usermod -aG uinput <実行ユーザ名>
して実行ユーザを新規作成したuinputグループに参加させる。
そして
sudo reboot
すればよい。
最近のLinux(raspbeianだけど..)は
ルール関係が複雑で、
入社当時のBSDなんかだと安直に
chmod a+rw /dev/uinput
とかしてたけど、
最近のLinux(raspbeianだけど..)は
ルール関係が複雑なので
こんなことしてもリブートしたらすぐに戻っちゃうだろうから..
(やったことないので、ほんとにそうなるかは、わからないけどね)
0 件のコメント:
コメントを投稿