lkml.org 
[lkml]   [2010]   [Dec]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/3] Input: synaptics - add multi-finger and semi-mt support
    On 12/20/2010 08:39 AM, Henrik Rydberg wrote:
    > The Synaptics 2.7 series of touchpads support a mode for reporting two
    > sets of X/Y/Pressure data (advanced gesture mode). By default, these
    > devices report only single finger data, depriving userspace of the
    > nowadays ubiquitous two-finger scroll gesture.
    >
    > Enabling advanced gesture mode also enables the multi-finger report,
    > although the device does not claim that capability. Up to three
    > fingers can be reported this way.
    >
    > While two or three fingers are touching, the normal packet is
    > prepended by a reduced finger packet of lower resolution. From the two
    > packets (which do not represent the actual fingers), the bounding
    > rectangle of the individual contacts can be extracted. This
    > information is sufficient to perform scaling gestures and a limited
    > form of rotation gesture. The behavior has been coined semi-mt
    > capability, and is signaled to userspace via the INPUT_PROP_SEMI_MT
    > device property.
    >
    > Work to decode the advanced gesture packet: Takashi Iwai.
    > Cleanup and testing of the original patch: Chase Douglas.
    > Minor cleanup and testing: Chris Bagwell.
    > Finalization and semi-mt support: Henrik Rydberg.
    >
    > Reported-by: Tobyn Bertram
    > Not-yet-signed-off-by: Takashi Iwai <tiwai@suse.de>
    > Not-yet-signed-off-by: Chase Douglas <chase.douglas@canonical.com>
    > Not-yet-signed-off-by: Chris Bagwell <chris@cnpbagwell.com>
    > Signed-off-by: Henrik Rydberg <rydberg@euromail.se>

    You can keep my SOB.

    > +static void set_slot(struct input_dev *dev, int slot, bool active, int x, int y)
    > +{
    > + input_mt_slot(dev, slot);
    > + input_mt_report_slot_state(dev, MT_TOOL_FINGER, active);
    > + if (active) {
    > + input_report_abs(dev, ABS_MT_POSITION_X, x);
    > + input_report_abs(dev, ABS_MT_POSITION_Y,
    > + YMAX_NOMINAL + YMIN_NOMINAL - y);
    > + }
    > +}

    I take it that you feel MT_TOOL_FINGER should always be set, even if
    it's always the same as BTN_TOOL_*? I just want to be sure this is
    intended so we document it appropriately.

    > @@ -623,6 +686,7 @@ static void set_input_params(struct input_dev *dev, struct synaptics_data *priv)
    > int i;
    >
    > __set_bit(INPUT_PROP_POINTER, dev->propbit);
    > + __set_bit(INPUT_PROP_SEMI_MT, dev->propbit);

    Shouldn't this only be set when SYN_CAP_ADV_GESTURE(priv->ext_cap_0c) is
    true?

    Thanks,

    -- Chase


    \
     
     \ /
      Last update: 2010-12-21 17:39    [W:0.023 / U:151.660 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site