Constraining cursor to RandR crtcs

Nicolas Mailhot nicolas.mailhot at laposte.net
Mon Apr 2 04:19:10 PDT 2007


Le Lun 2 avril 2007 12:15, Daniel Stone a écrit :
> On Mon, Apr 02, 2007 at 10:41:00AM +0200, Nicolas Mailhot wrote:
>> What would be nice for a purely user POW is some visual hint the cursor
>> is
>> in Terra Incognita (for example an arrow on the side closer to the
>> cursor
>> with cursor distance). Clamping and jumping is very disorienting, I
>> don't
>> think users mind the cursor being out of the displays as long as they
>> have
>> some hint where it is (without needing to wiggle it to find it back,
>> which
>> won't work anyway for complex setups)
>
> I'd be lying if I said I saw the point.  If moving the mouse off-screen
> is a use case we want to support, why do we currently clamp it to the
> screen limits on single screens; why do we clamp it to the extents of
> multi-screen setups?  I just don't see why it's necessary to be able to
> move the mouse into a specific dead area within the extents but outside
> all visible screens.

Say you have several screens with different dimensions (usual case for
main display + projector). You'll have a matching edge but it won't match
the whole length

+------------++-----+
|            ||     |
|            |+-----+
|            |
|            |
+------------+

If you do warping, you have the following effect:

1. Move a little too close to the common edge,

+------------++-----+
|            ||     |
|            |+-----+
|            |
|           x|
+------------+

2. Warp

+------------++-----+
|            ||x    |
|            |+-----+
|            |
|            |
+------------+

3. Try to return to previous position by doing the reverse cursor movement

+------------++-----+
|           x||     |
|            |+-----+
|            |
|            |
+------------+

4. you lost, cursor jumped to another region of the original screen

Jumping/warping cursors are very bad usability-wise. Sometimes you're in a
moving space like a train, or with a bad pointer, or you just want to find
your cursor by wiggling it a bit, and small uncontrolled movements happen.
They should not result in big cursor jumps.

Clamping is almost as bad, instead of doing a direct line from one screen
to the other you have to hug borders till you find the common edges. And
the user may decide he can't reach the other screen before going all the
way to the common part (remember he hasn't got the screen layout under the
eyes, he may not know what part is common and what part isn't). For
example, how will the user go to A there given there is a dead area
between the two small displays ? (even if the dead area has a width of
just a few pixels, because someone made a rounding mistake)

+--------------+
|              |
|              |
|              |
|              |
+--------------+
+-----+  +-----+
|x    |  |  A  |
+-----+  +-----+

IMHO if you don't allow excursions within dead zones you'll always find a
screen setup where your solution suck. If you do allow excursions there
(possibly with acceleration so leaving dead zone is quick) things are much
easier. You just have to provide visual hints to the user where the cursor
is and how far in what direction must he move it to find a live zone

+------------++-----+
|            ||   1 |
|            ||   v |
|            |+-----+
|            |
|          4>|    x
+------------+

Regards,

-- 
Nicolas Mailhot




More information about the xorg mailing list