On Tue, Nov 15, 2011 at 09:35:14AM +0000, Nuno Santos wrote: > On 11/14/2011 06:57 PM, Dmitry Torokhov wrote: > >On Monday, November 14, 2011 10:24:17 AM Nuno Santos wrote: > >>Hi, > >> > >>I have defined my first attribute in the following way: > >> > >>static ssize_t usbtouchscreen_update_sensibility(struct device *dev, > >> struct device_attribute *attr, > >> const char *buf, size_t count) > >>{ > >> > >> printk(KERN_INFO "update sensibility called"); > >> > >Updating sensibility is always a good thing but I gather you mean > >sensitivity here... > > hahaahha thanks for the correction!!!! I need to do it in several > places now! :) > > > >BTW this should probably be a per-user setting and belong to the X driver, > >not kernel driver. I.e. kernel streams all data and userspace (X) decides > >what data do discard according to current user preferences. > didn't knew about this capability. but how do you change the > settings thru X? where can I find the API for that? This API is private to particular X driver. For example Synaptics X driver (that handles all touchpads that we support in Linux, be it actualy Synaptics, ALPS, Elantech, Sentelic, Broadcom, etc) allows user select touch sensitivity. If device support pressure reading (ABS_PRESSURE) then X driver will simply ignore all event packets where pressure is less than the threshold. The kernel portion still streams all events; the X portion is simply choses to ignore some of them, according to user preference. > > > >> return 0; Actually this shoudl be return count; > >>} > >> > >>static DEVICE_ATTR(sensibility, 0664, NULL, > >>usbtouchscreen_update_sensibility); > >> > >>static struct attribute *usbtouchscreen_attrs[] = { > >>&dev_attr_sensibility.attr, > >> NULL > >>}; > >> > >>static const struct attribute_group usbtouchscreen_attr_group = { > >> .attrs = usbtouchscreen_attrs, > >>}; > >> > >>In the probe function I have added: > >> > >>if (sysfs_create_group(&intf->dev.kobj,&usbtouchscreen_attr_group)) > >> goto out_unregister_input; > >> > >> > >>Then I tried to write on the attribute in the following way: > >> > >>nsantos@NS-PC:~/workspaces/linux-kernel-driver$ echo 45> > >>/sys/class/input/input7/sensibility > >>bash: /sys/class/input/input7/sensibility: No such file or directory > >> > >>After digging a bit under /sys/class/input/input7 i found that the sub > >>directory device add sensibilty listed so I tried the following: > >> > >>nsantos@NS-PC:~/workspaces/workspace-mtt/linux-kernel-driver$ sudo echo > >>45> /sys/class/input/input7/device/sensibility > >>bash: /sys/class/input/input7/device/sensibility: Permission denied > >> > >>With no success again... > >> > >>Am I doing something terribly wrong? > >You aren't doing this as root and don't have permission to access the > >attribute. > sudo doesn't work in this case? Because I was suddoing. Should have worked, something else must be wrong then. > if I change > the attribute to 777 will it be available to everyone? is this a > good way of doing it? Generally we restrict access to sysfs attributes to root since they control behavior for all users, not only one why is changin sysfs attribute. BTW, please use "reply-all" on linux kernel mailing lists - it is most preferred method. This way you ensure faster responses from people who already participating in the thread as I scan my inbox is much more often than folder where I save linux-input mails. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html