diff options
author | Chase Douglas <chase.douglas@canonical.com> | 2012-02-09 11:26:06 -0800 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2012-03-14 08:46:54 +1000 |
commit | 331dd969536aad48fae107e2215bfdd3e95db77e (patch) | |
tree | 2746326071917d40c6e3cb01acb7aba308a3241a | |
parent | a64e1632836067091be5ca45d0444c416bf48948 (diff) |
Add clickpad device property
Add it as a writable device property. We may not know how to probe some
clickpads so allow the user to override it.
Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | include/synaptics-properties.h | 3 | ||||
-rw-r--r-- | man/synaptics.man | 10 | ||||
-rw-r--r-- | src/eventcomm.c | 7 | ||||
-rw-r--r-- | src/properties.c | 7 | ||||
-rw-r--r-- | src/synaptics.c | 1 | ||||
-rw-r--r-- | src/synapticsstr.h | 1 | ||||
-rw-r--r-- | tools/synclient.c | 1 |
7 files changed, 30 insertions, 0 deletions
diff --git a/include/synaptics-properties.h b/include/synaptics-properties.h index c550cef..140f14b 100644 --- a/include/synaptics-properties.h +++ b/include/synaptics-properties.h @@ -49,6 +49,9 @@ #define SYNAPTICS_PROP_TAP_DURATIONS "Synaptics Tap Durations" /* 8 bit (BOOL) */ +#define SYNAPTICS_PROP_CLICKPAD "Synaptics ClickPad" + +/* 8 bit (BOOL) */ #define SYNAPTICS_PROP_TAP_FAST "Synaptics Tap FastTap" /* 32 bit */ diff --git a/man/synaptics.man b/man/synaptics.man index b6b1dce..8edc2f0 100644 --- a/man/synaptics.man +++ b/man/synaptics.man @@ -143,6 +143,12 @@ Maximum time (in milliseconds) for detecting a double tap. Property: The duration of the mouse click generated by tapping. Property: "Synaptics Tap Durations" .TP 7 +.BI "Option \*qClickPad\*q \*q" boolean \*q +Whether the device is a click pad. A click pad device has button(s) integrated +into the touchpad surface. The user must press downward on the touchpad in order +to generated a button press. This property may be set automatically if a click +pad device is detected at initialization time. Property: "Synaptics ClickPad" +.TP 7 .BI "Option \*qFastTaps\*q \*q" boolean \*q Makes the driver react faster to a single tap, but also makes double clicks caused by double tapping slower. Property: "Synaptics Tap FastTap" @@ -785,6 +791,10 @@ Properties supported: duration of a single click. .TP 7 +.BI "Synaptics ClickPad" +8 bit (Bool). + +.TP 7 .BI "Synaptics Tap FastTap" 8 bit (BOOL). diff --git a/src/eventcomm.c b/src/eventcomm.c index b49b73a..d031eb4 100644 --- a/src/eventcomm.c +++ b/src/eventcomm.c @@ -716,6 +716,7 @@ static void event_query_touch(InputInfoPtr pInfo) { SynapticsPrivate *priv = (SynapticsPrivate *)pInfo->private; + SynapticsParameters *para = &priv->synpara; struct eventcomm_proto_data *proto_data = priv->proto_data; struct mtdev *mtdev; int i; @@ -733,6 +734,12 @@ event_query_touch(InputInfoPtr pInfo) return; } + if (rc >= 0 && BitIsOn(&prop, INPUT_PROP_BUTTONPAD)) + { + xf86IDrvMsg(pInfo, X_INFO, "found clickpad property\n"); + para->clickpad = TRUE; + } + mtdev = mtdev_new_open(pInfo->fd); if (!mtdev) { diff --git a/src/properties.c b/src/properties.c index 0a52801..38f21b2 100644 --- a/src/properties.c +++ b/src/properties.c @@ -58,6 +58,7 @@ Atom prop_finger = 0; Atom prop_tap_time = 0; Atom prop_tap_move = 0; Atom prop_tap_durations = 0; +Atom prop_clickpad = 0; Atom prop_tap_fast = 0; Atom prop_middle_timeout = 0; Atom prop_twofinger_pressure = 0; @@ -189,6 +190,8 @@ InitDeviceProperties(InputInfoPtr pInfo) values[2] = para->click_time; prop_tap_durations = InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_DURATIONS, 32, 3, values); + prop_clickpad = InitAtom(pInfo->dev, SYNAPTICS_PROP_CLICKPAD, 8, 1, + ¶->clickpad); prop_tap_fast = InitAtom(pInfo->dev, SYNAPTICS_PROP_TAP_FAST, 8, 1, ¶->fast_taps); prop_middle_timeout = InitAtom(pInfo->dev, SYNAPTICS_PROP_MIDDLE_TIMEOUT, 32, 1, ¶->emulate_mid_button_time); @@ -392,7 +395,11 @@ SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop, para->single_tap_timeout = timeouts[0]; para->tap_time_2 = timeouts[1]; para->click_time = timeouts[2]; + } else if (property == prop_clickpad) { + if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER) + return BadMatch; + para->clickpad = *(BOOL*)prop->data; } else if (property == prop_tap_fast) { if (prop->size != 1 || prop->format != 8 || prop->type != XA_INTEGER) diff --git a/src/synaptics.c b/src/synaptics.c index 6143005..77afbcd 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -552,6 +552,7 @@ static void set_default_parameters(InputInfoPtr pInfo) pars->tap_move = xf86SetIntOption(opts, "MaxTapMove", tapMove); pars->tap_time_2 = xf86SetIntOption(opts, "MaxDoubleTapTime", 180); pars->click_time = xf86SetIntOption(opts, "ClickTime", 100); + pars->clickpad = xf86SetIntOption(opts, "ClickPad", pars->clickpad); /* Probed */ pars->fast_taps = xf86SetBoolOption(opts, "FastTaps", FALSE); pars->emulate_mid_button_time = xf86SetIntOption(opts, "EmulateMidButtonTime", 75); pars->emulate_twofinger_z = xf86SetIntOption(opts, "EmulateTwoFingerMinZ", emulateTwoFingerMinZ); diff --git a/src/synapticsstr.h b/src/synapticsstr.h index b346293..a6e94e3 100644 --- a/src/synapticsstr.h +++ b/src/synapticsstr.h @@ -126,6 +126,7 @@ typedef struct _SynapticsParameters int single_tap_timeout; /* timeout to recognize a single tap */ int tap_time_2; /* max. tapping time for double taps */ int click_time; /* The duration of a single click */ + Bool clickpad; /* Device is a has integrated buttons */ Bool fast_taps; /* Faster reaction to single taps */ int emulate_mid_button_time; /* Max time between left and right button presses to emulate a middle button press. */ diff --git a/tools/synclient.c b/tools/synclient.c index 14ec605..6e77ee8 100644 --- a/tools/synclient.c +++ b/tools/synclient.c @@ -144,6 +144,7 @@ static struct Parameter params[] = { {"AreaBottomEdge", PT_INT, 0, 10000, SYNAPTICS_PROP_AREA, 32, 3}, {"HorizHysteresis", PT_INT, 0, 10000, SYNAPTICS_PROP_NOISE_CANCELLATION, 32, 0}, {"VertHysteresis", PT_INT, 0, 10000, SYNAPTICS_PROP_NOISE_CANCELLATION, 32, 1}, + {"ClickPad", PT_BOOL, 0, 1, SYNAPTICS_PROP_CLICKPAD, 8, 0}, { NULL, 0, 0, 0, 0 } }; |