Cursor does not move left/right using touchpad on 2.6.22-20080123.4 and newer master kernels

Denver Gingerich denver at ossguy.com
Thu May 29 23:24:30 EDT 2008


On Sun, May 25, 2008 at 12:13 AM, Denver Gingerich <denver at ossguy.com> wrote:
> On Sat, May 3, 2008 at 6:25 PM, Denver Gingerich <denver at ossguy.com> wrote:
>> On Fri, May 2, 2008 at 10:42 PM, Denver Gingerich <denver at ossguy.com> wrote:
>>>
>>> On Thu, May 1, 2008 at 11:38 PM, Denver Gingerich <denver at ossguy.com> wrote:
>>>  > On 2.6.22-20080123.4 and newer master kernels (specifically
>>>  >  2.6.22-20080123.4, 2.6.25-20080430.1, 2.6.25-20080501.2, and
>>>  >  2.6.25-20080501.3), the cursor cannot move from side to side with the
>>>  >  touchpad, only up and down.  Using a USB mouse works fine.
>>>  >
>>>  >  Here is an example X session:
>>>  >  1. start X, cursor is in the center of the screen; touchpad has not been touched
>>>  >  2. touch touchpad, cursor immediately jumps to the left side of the screen
>>
>> See below for more details on Step 2.
>>
>>>  >  3. move around on touchpad, cursor stays "stuck" to the left side of
>>>  >  the screen, but moves up and down relative to how much vertical
>>>  >  touchpad movement there is
>>>  >  4a. release finger from touchpad, cursor immediately jumps to the
>>>  >  top-left corner of the screen (this may not be exactly the top-left
>>>  >  corner, but it is always on the left-most column of pixels within the
>>>  >  top 50-100 rows of pixels)
>>>  >  4b. move finger across right edge of touchpad, cursor moves very
>>>  >  quickly from left to right across the screen (there appears to be a
>>>  >  small area between the touchpad and the right third of the drawing pad
>>>  >  where left to right motion is detected)
>>>  >
>>>  >  Performing steps 2-4 consistently gives the same results within the
>>>  >  same X session and across reboots.
>> [...]
>>>
>>>  The problem is present in 2.6.22-2008115.1 but not in
>>>  2.6.22-20080113.1.
>>
>> The problem is also present in 2.6.22-20080114.2.  So the problem is
>> between the following commits:
>>
>> f8709785a433a5a3344304f9796fb26a65d69a1e
>> cb6634de39d36cb9cc719c2940e456929ccceea2
> [...]
>> Here are some additional details for Step 2 (touch touchpad): the
>> vertical position that the cursor jumps to is correlated with the
>> location on the touchpad that my finger is on.  For example, if I
>> touch the top part of the touchpad, the cursor will jump to the top
>> part of the screen.  So there is some absolute positioning going on.
>>
>> Additionally, a button press is registered when I touch the touchpad
>> (even when I don't click the button) and a button release is
>> registered when I take my finger off the touchpad.  So moving my
>> finger on the touchpad is essentially dragging whatever happens to be
>> under the cursor.  The button press is registered after the cursor
>> jumps to its new position on the screen following my finger touching
>> the touchpad.
>
> This issue is present in the 2.6.26-rc3 master kernel (not surprising
> as mouse/olpc.c hasn't changed since 2.6.25).
>
> I now have access to a development environment so I should be able to
> compile the intermediate commits (between f870978 and cb6634d) to
> diagnose the problem further.  I will report back when I have more
> results.

By testing individual commits, I determined that the problem is
introduced by the following commit:

http://dev.laptop.org/git?p=olpc-2.6;a=commitdiff;h=cb6634de39d36cb9cc719c2940e456929ccceea2

I have attempted to narrow it down further to the line that caused the
problem, but have been unsuccessful so far.  I attempted two changes,
starting from the cb6634d revision of the file.  First, I added the
following line back:

gs->relbit[LONG(REL_X)] |= BIT(REL_X) | BIT(REL_Y);

Then I removed the two instances of:

input_set_abs_params(gs, ABS_PRESSURE, 0, ...);

Both modifications gave the same result as the unchanged cb6634d commit.

While I could try adding back each line and testing, that seems like a
bit too much work.  It would be nice if I could get some
recommendations from a person who knows the code on what specific
lines I should try changing.  If you have any recommendations, please
let me know.

I may try some more changes based on my limited analysis of the code,
but I would be much more likely to try things with recommendations
(hint, hint :) ).

Denver



More information about the Devel mailing list