Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Touchpad state control psmouse driver patch by rkraevskiy@gmail.com
- to check touchpad state:
- cat /sys/bus/serio/drivers/psmouse/serio1/enabled
- 1 -> touchpad is enabled
- 0 -> touchpad is disabled
- to disable touchpad:
- echo 0 >/sys/bus/serio/drivers/psmouse/serio1/enabled
- to enable touchpad:
- echo 1 >/sys/bus/serio/drivers/psmouse/serio1/enabled
- In /etc/acpi/handler.sh
- button/lid)
- STATE=`cat /proc/acpi/button/lid/LID/state | cut -c13-`
- case "$STATE" in
- closed)
- echo 0 >/sys/bus/serio/drivers/psmouse/serio1/enabled
- ;;
- open)
- echo 1 >/sys/bus/serio/drivers/psmouse/serio1/enabled
- ;;
- esac
- ;;
- diff -ur a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
- --- a/drivers/input/mouse/psmouse-base.c 2012-12-11 05:30:57.000000000 +0200
- +++ b/drivers/input/mouse/psmouse-base.c 2012-12-21 23:57:06.000000000 +0200
- @@ -87,6 +87,9 @@
- PSMOUSE_DEFINE_ATTR(resync_time, S_IWUSR | S_IRUGO,
- (void *) offsetof(struct psmouse, resync_time),
- psmouse_show_int_attr, psmouse_set_int_attr);
- +PSMOUSE_DEFINE_ATTR(enabled, S_IWUSR | S_IRUGO,
- + NULL,
- + psmouse_attr_show_enabled, psmouse_attr_set_enabled);
- static struct attribute *psmouse_attributes[] = {
- &psmouse_attr_protocol.dattr.attr,
- @@ -94,6 +97,7 @@
- &psmouse_attr_resolution.dattr.attr,
- &psmouse_attr_resetafter.dattr.attr,
- &psmouse_attr_resync_time.dattr.attr,
- + &psmouse_attr_enabled.dattr.attr,
- NULL
- };
- @@ -1419,7 +1423,7 @@
- psmouse->resetafter = psmouse_resetafter;
- psmouse->resync_time = parent ? 0 : psmouse_resync_time;
- psmouse->smartscroll = psmouse_smartscroll;
- -
- + psmouse->enabled = true;
- psmouse_switch_protocol(psmouse, NULL);
- psmouse_set_state(psmouse, PSMOUSE_CMD_MODE);
- @@ -1602,7 +1606,7 @@
- retval = attr->set(psmouse, attr->data, buf, count);
- if (attr->protect) {
- - if (retval != -ENODEV)
- + if (retval != -ENODEV && psmouse->enabled)
- psmouse_activate(psmouse);
- if (parent)
- @@ -1637,6 +1641,26 @@
- return count;
- }
- +
- +static ssize_t psmouse_attr_show_enabled(struct psmouse *psmouse, void *data, char *buf)
- +{
- + return sprintf(buf, "%d\n", psmouse->enabled);
- +}
- +
- +static ssize_t psmouse_attr_set_enabled(struct psmouse *psmouse, void *data, const char *buf, size_t count)
- +{
- + unsigned int value;
- + int err;
- +
- + err = kstrtouint(buf, 10, &value);
- + if (err){
- + return err;
- + }
- +
- + psmouse->enabled = (value!=0);
- + return count;
- +}
- +
- static ssize_t psmouse_attr_show_protocol(struct psmouse *psmouse, void *data, char *buf)
- {
- return sprintf(buf, "%s\n", psmouse_protocol_by_type(psmouse->type)->name);
- diff -ur a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h
- --- a/drivers/input/mouse/psmouse.h 2012-12-11 05:30:57.000000000 +0200
- +++ b/drivers/input/mouse/psmouse.h 2012-12-21 23:53:54.000000000 +0200
- @@ -62,6 +62,7 @@
- unsigned int resolution;
- unsigned int resetafter;
- unsigned int resync_time;
- + bool enabled;
- bool smartscroll; /* Logitech only */
- psmouse_ret_t (*protocol_handler)(struct psmouse *psmouse);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement