mirror of
https://github.com/X11Libre/xf86-input-synaptics.git
synced 2026-03-24 01:34:04 +00:00
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>
This commit is contained in:
committed by
Peter Hutterer
parent
a64e163283
commit
331dd96953
@@ -48,6 +48,9 @@
|
||||
* taps, duration of a single click */
|
||||
#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"
|
||||
|
||||
|
||||
@@ -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"
|
||||
@@ -784,6 +790,10 @@ Properties supported:
|
||||
32 bit, 3 values, single touch timeout, max tapping time for double taps,
|
||||
duration of a single click.
|
||||
|
||||
.TP 7
|
||||
.BI "Synaptics ClickPad"
|
||||
8 bit (Bool).
|
||||
|
||||
.TP 7
|
||||
.BI "Synaptics Tap FastTap"
|
||||
8 bit (BOOL).
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -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 }
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user