diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/eventcomm.c | 8 | ||||
-rw-r--r-- | src/properties.c | 3 | ||||
-rw-r--r-- | src/synaptics.c | 7 | ||||
-rw-r--r-- | src/synapticsstr.h | 1 |
4 files changed, 18 insertions, 1 deletions
diff --git a/src/eventcomm.c b/src/eventcomm.c index 152f973..20dbeea 100644 --- a/src/eventcomm.c +++ b/src/eventcomm.c @@ -50,6 +50,9 @@ #ifndef INPUT_PROP_SEMI_MT #define INPUT_PROP_SEMI_MT 0x03 #endif +#ifndef INPUT_PROP_TOPBUTTONPAD +#define INPUT_PROP_TOPBUTTONPAD 0x04 +#endif #define SYSCALL(call) while (((call) == -1) && (errno == EINTR)) @@ -805,6 +808,11 @@ event_query_touch(InputInfoPtr pInfo) xf86IDrvMsg(pInfo, X_INFO, "found clickpad property\n"); para->clickpad = TRUE; } + + if (rc>= 0 && BitIsOn(&prop, INPUT_PROP_TOPBUTTONPAD)) { + xf86IDrvMsg(pInfo, X_INFO, "found top buttonpad property\n"); + para->has_secondary_buttons = TRUE; + } #endif mtdev = mtdev_new_open(pInfo->fd); diff --git a/src/properties.c b/src/properties.c index 4c75797..718d054 100644 --- a/src/properties.c +++ b/src/properties.c @@ -176,6 +176,9 @@ InitSoftButtonProperty(InputInfoPtr pInfo) prop_softbutton_areas = InitAtom(pInfo->dev, SYNAPTICS_PROP_SOFTBUTTON_AREAS, 32, 8, values); + if (!para->has_secondary_buttons) + return; + values[0] = para->softbutton_areas[TOP_RIGHT_BUTTON_AREA][LEFT]; values[1] = para->softbutton_areas[TOP_RIGHT_BUTTON_AREA][RIGHT]; values[2] = para->softbutton_areas[TOP_RIGHT_BUTTON_AREA][TOP]; diff --git a/src/synaptics.c b/src/synaptics.c index 21bfb6b..a8784f9 100644 --- a/src/synaptics.c +++ b/src/synaptics.c @@ -659,6 +659,10 @@ set_default_parameters(InputInfoPtr pInfo) pars->tap_time_2 = xf86SetIntOption(opts, "MaxDoubleTapTime", 180); pars->click_time = xf86SetIntOption(opts, "ClickTime", 100); pars->clickpad = xf86SetBoolOption(opts, "ClickPad", pars->clickpad); /* Probed */ + if (pars->clickpad) + pars->has_secondary_buttons = xf86SetBoolOption(opts, + "HasSecondarySoftButtons", + pars->has_secondary_buttons); pars->clickpad_ignore_motion_time = 100; /* ms */ /* middle mouse button emulation on a clickpad? nah, you're joking */ middle_button_timeout = pars->clickpad ? 0 : 75; @@ -753,7 +757,8 @@ set_default_parameters(InputInfoPtr pInfo) } set_primary_softbutton_areas_option(pInfo); - set_secondary_softbutton_areas_option(pInfo); + if (pars->has_secondary_buttons) + set_secondary_softbutton_areas_option(pInfo); } static double diff --git a/src/synapticsstr.h b/src/synapticsstr.h index b8a3492..4bd32ac 100644 --- a/src/synapticsstr.h +++ b/src/synapticsstr.h @@ -176,6 +176,7 @@ typedef struct _SynapticsParameters { 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 has_secondary_buttons; /* Device has a top soft-button area */ int clickpad_ignore_motion_time; /* Ignore motion for X ms after a click */ int emulate_mid_button_time; /* Max time between left and right button presses to emulate a middle button press. */ |