On Thu, Feb 2, 2012 at 10:08 AM, Aristeu Rozanski <a...@redhat.com> wrote:
> On Thu, Feb 02, 2012 at 09:32:03AM -0600, Chris Bagwell wrote:
>> Hi Aristeu,
>>
>> I'm sure people will be happy to see this patch.  I've a question for you 
>> below.
>>
>> On Wed, Feb 1, 2012 at 11:23 AM, Aristeu Rozanski <a...@redhat.com> wrote:
>> > This patch adds support for the pad buttons and dial in the bluetooth 
>> > version
>> > of Intuos4.
>> >
>> > Signed-off-by: Aristeu Rozanski <a...@redhat.com>
>> >
>> > ---
>> >  drivers/hid/hid-wacom.c |   38 ++++++++++++++++++++++++++++++++++++++
>> >  1 file changed, 38 insertions(+)
>> >
>> > --- linus-2.6.orig/drivers/hid/hid-wacom.c      2012-02-01 
>> > 11:54:09.000000000 -0500
>> > +++ linus-2.6/drivers/hid/hid-wacom.c   2012-02-01 12:17:46.166583951 -0500
>> > @@ -363,6 +363,35 @@            input_report_key(input, BTN_STYLUS2, d
>> >        return;
>> >  }
>> >
>> > +static void wacom_i4_parse_pad_report(struct wacom_data *wdata,
>> > +                       struct input_dev *input, unsigned char *data)
>> > +{
>> > +       input_report_key(input, BTN_0, (data[2] & 0x01));
>> > +       input_report_key(input, BTN_1, (data[3] & 0x01));
>> > +       input_report_key(input, BTN_2, (data[3] & 0x02));
>> > +       input_report_key(input, BTN_3, (data[3] & 0x04));
>> > +       input_report_key(input, BTN_4, (data[3] & 0x08));
>> > +       input_report_key(input, BTN_5, (data[3] & 0x10));
>> > +       input_report_key(input, BTN_6, (data[3] & 0x20));
>> > +       input_report_key(input, BTN_7, (data[3] & 0x40));
>> > +       input_report_key(input, BTN_8, (data[3] & 0x80));
>> > +
>> > +       if (data[1] & 0x80)
>> > +               input_report_abs(input, ABS_WHEEL, (data[1] & 0x7f));
>> > +       else
>> > +               /* Out of proximity, clear wheel value. */
>> > +               input_report_abs(input, ABS_WHEEL, 0);
>> > +
>> > +       if (data[1] | (data[2] & 0x01) | data[3]) {
>> > +               input_report_key(input, wdata->tool, 1);
>> > +               input_report_key(input, BTN_TOOL_FINGER, 1);
>> > +       } else {
>> > +               input_report_key(input, wdata->tool, 0);
>> > +               input_report_abs(input, BTN_TOOL_FINGER, 0);
>> > +       }
>>
>> I'm assuming your sending BTN_TOOL_FINGER because thats what Intuos4
>> does in wacom_wac.c kernel driver?
> yep.
>
>> For drivers that want to use Protocol 4 or  5 style events (see
>> http://sourceforge.net/apps/mediawiki/linuxwacom/index.php?title=Kernel_Input_Event_Overview
>> ), this does inform xf86-input-wacom to treat these as "PAD events"
>> so, for example, ABS_WHEEL is treated as a wheel on PAD device and not
>> a wheel on mouse puck or airbrush.
> but that's intended. it's a wheel on the side of the tablet:
>  === +-----------------------------+
>  === |                             |
>  === |                             |
>  === |                             |
>  w  |                             |
>  w=w |                             |
>  w  |                             |
>  === |                             |
>  === |                             |
>  === |                             |
>  === +-----------------------------+
>
>> But Protocol 4and 5 drivers are also required to send a value in
>> ABS_MISC as described in above link.  If not, the serial # is stuck
>> with fixed value of zero and then the same data structure in
>> xf86-input-wacom will be used to store all events for all hotplugged
>> devices.  I'm not exactly sure what that would visually result in but
>> I assume if you leave pen in proximity while you click a tablet button
>> that the pen would be forced out of proximity when you release the
>> button.  Or maybe jump to location (0,0).
>>
>> One option is to update xf86-input-wacom so that driver does not have
>> to send serial #'s always.  Over last year, xf86-input-wacom::wcmUSB.c
>> has added a function called usbInitToolType() that peeks at all
>> buffered events to detect tool type.  Right now, it only does it to
>> see which hotplug device type to send events to.  We could also change
>> to decide which data structure/array location (called channel
>> internally) as well;  We could at least do this for the PAD device
>> which is always force to last channel by convention.
>>
>> I do not know if these Bluetooth Intuos4 support mouse pucks.  If so,
>> then we have to become concerned with only 1 tool with overlapping
>> ABS_WHEEL events are allowed in proximity at the same time.
> thanks for the explanation, I never fully got the reason for the serial.
> I'll rework the patch to get it right.
>

OK.  Good luck and feel free to ask question.

I'm not convinced myself yet if its a kernel side or X input side
design issue yet so updates to either side are an option.  But sending
the serial # is also probably easiest change.

Chris

------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to