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