Bonjour,
J'ai une tablette wacom et je voudrais que son nom soit constant. Il varie de /dev/inout/event0 à /dev/input/event3 selon... l'humeur du système (bon, il doit bien y a voir une raie raison mais je n'ai pas trouvé).
J'ai donc réé une entrée /etc/udev/rules.d que j'ai appelé 'tablet" et qui contient :
BUS="usb", SYSFS{idVendor}="056a", SYSFS{idProduct}="0011", NAME="%k", SYMLINK="input/tablet"
056a:0111 est l'id USB de ma tablette.
dans /dev/input, il y a : crw------- 1 root root 13, 64 2005-02-05 14:30 event0 crw------- 1 root root 13, 65 2005-02-05 14:30 event1 crw------- 1 root root 13, 66 2005-02-05 14:30 event2 crw------- 1 root root 13, 67 2005-02-05 14:30 event3 crw------- 1 root root 13, 63 2005-02-05 14:30 mice crw------- 1 root root 13, 32 2005-02-05 14:30 mouse0 crw------- 1 root root 13, 33 2005-02-05 14:30 mouse1
dans ce cas, il me lie tablet à mouse0
J'ai fait un strace sur udevstart et il créé bien
d'abord* le bon lien (event1) puis ensuite le défait et le recréé pour les autres entrées, la dernière se voyant affctée à la tablette.
J'ai essyé de ruser en mettant un eligne comme :
BUS="usb", SYSFS{idVendor}="056a", SYSFS{idProduct}="0011", NAME="event%n", SYMLINK="input/tablet"
Il procède de même, il créé le lien vers event1 (celui que je souhaite) et ensuite le défait et termine alors par even0...
open("/sys/devices/pci0000:00/0000:00:10.0/usb1/1-1/idVendor", O_RDONLY) = 3
read(3, "056a\n", 4096) = 5
close(3) = 0
Ca, c'est mon idVendor
lstat64("/sys/class/input/event1/idProduct", 0xbfffcf9c) = -1 ENOENT (No such file or directory)
open("/sys/class/input/event1", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3fstat64(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
getdents64(3, /* 5 entries */, 4096) = 136
lstat64("/sys/class/input/event1/dev", {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
lstat64("/sys/class/input/event1/driver", {st_mode=S_IFLNK|0777, st_size=0, ...}) = 0
lstat64("/sys/class/input/event1/device", {st_mode=S_IFLNK|0777, st_size=0, ...}) = 0
getdents64(3, /* 0 entries */, 4096) = 0
close(3) = 0
open("/sys/devices/pci0000:00/0000:00:10.0/usb1/1-1/idProduct", O_RDONLY) = 3
read(3, "0011\n", 4096) = 5
close(3) = 0
Ca c'est mon idVendor
(jusqu'ici tout va bien...)
[ ... ]
stat64("/dev/event1", {st_mode=S_IFCHR|0660, st_rdev=makedev(13, 65), ...}) = 0
chmod("/dev/event1", 020660) = 0
stat64("/dev/input", {st_mode=S_IFDIR|0755, st_size=200, ...}) = 0
unlink("/dev/input/tablet") = 0
symlink("../event1", "/dev/input/tablet") = 0
Hop ! il me créé le bon lien (content ;) )
chmod("/dev/event0", 020660) = 0
stat64("/dev/input", {st_mode=S_IFDIR|0755, st_size=200, ...}) = 0
unlink("/dev/input/tablet") = 0
symlink("../event0", "/dev/input/tablet") = 0
stat64("/dev/.udevdb", {st_mode=S_IFDIR|0755, st_size=23540, ...}) = 0
open("/dev/.udevdb/[EMAIL PROTECTED]@mouse0", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
Et plus loin, il me défait le travail si bien commencé ....
event0 n'est lié à rien et event2 est mon clavier USB, event3? la souris
Si je ne mets pas NAME"event%n" masi NAME="%k", il me balaie tout ce qui se trouve dans /dev/input en commençant par le bon (!) et en terminant par mouse0 (sniff)
Une idée avant le BTS ?
Jean-Luc
pgp31NPbW8eKV.pgp
Description: PGP signature