[PATCH weston 4/5] evdev: Improve touchpad support and add motion filters
Bill Spitzak
spitzak at gmail.com
Tue May 15 10:43:44 PDT 2012
It really sounds like the compositor should do this. IMHO it should
produce *lots* of input events, so these gestures can be recognized.
It would produce scroll events or whatever at the correct speed (or
with a 24_8 increment on each) so that the acceleration is exactly the
same if the client obeys these. Note I don't know much about gestures
so don't take this as an actual suggestion, just an indication of what
I am thinking would work.
The main rule however is that it is trivial for a client to filter
these events out and get only the raw events. This will allow them to
do their own gestures or any other input processing. The compositor
must not "eat" events.
Even for very old input devices Wayland should produce useful events:
repeat events for keyboard keys, repeat for mouse buttons (so holding
down a button widget repeats at the same rate for all apps), a "hover"
event (or maybe several) so all clients agree when to popup a tooltip.
An indication on mouse movement and button release as to whether it is
a "click" or a "drag" so that all clients agree on mouse-shake
removal. A clear indication of double-click on the second mouse-down
so all clients agree on double-click speed.
And there is text input methods: keys would be marked as being eaten
by a text input method, so the client could ignore them, and then text
produced by the text input method would be sent as UTF-8 strings,
along with an indicator if this replaces the previous text (to allow
composition in-place without the horrible overlays that X tried to
use). (a problem is that clients need to control whether the input
method is active and to be able to cancel it for any key, though I
hope these can be async messages).
This would make writing simple clients a lot easier, and would make
all clients agree to responses.
The problem is that it would require additions to the Wayland protocol
as new ideas in input processing are invented. However I think as long
as raw events are available clients can do these themselves until the
ideas are worked out and it is added to Wayland.
On May 15, 2012, at 8:48 AM, Benjamin Otte wrote:
> On Tue, May 15, 2012 at 5:20 PM, Chase Douglas
> <chase.douglas at canonical.com> wrote:
>> The real issue is when you want to have object manipulation within an
>> application. Let's take smooth scrolling using a trackpad as an
>> example.
>> One approach would be to use the same acceleration for scrolling as
>> for
>> cursor motion. Scrolling should be performed by the client
>> application/toolkit, so the client needs to have access to the
>> acceleration algorithm.
>>
>> Further, there's a good argument to be made for splitting it out
>> since
>> there will not be one single "Wayland" compositor. Why not provide a
>> library so that all compositors can benefit without reinventing the
>> wheel?
>>
> It gets even more interesting when your application is supposed to use
> the same pointer acceleration code as the compositor, but your
> application wants to work with different compositors that all use
> slightly different acceleration methods...
>
> In general, I've been very unhappy about the cases where I had to
> emulate acceleration myself, because (a) it depends on the server and
> (b) it requires lots of extra work where everything else just works.
> The examples I tried were swipes (for scrolling or to move the slider
> of a GtkPaned or GtkScrollbar) and the pinch/pan gestures used to
> navigate web pages on tablets or phones, but I'm sure people can come
> up with myriads of examples here.
>
> With the newer interaction patterns on pointer devices, I'm also very
> interested in not only position, but also velocity and acceleration to
> enable the kinetic behavior that people expect on those devices. And
> I'm pretty sure if all the running applications and the compositor
> feel the same way, no matter if you throw a window, a DND object, a
> scrolled area or a slider to the left and no matter if you throw it
> with a mouse, via a touchpad or directly with your finger.
>
> Benjamin
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list