[RFC] compositor: Simple key repeat implementation

Bill Spitzak spitzak at gmail.com
Thu Mar 8 13:05:31 PST 2012

Joakim Sindholt wrote:

> Any particular reason that this is in the server and not the toolkits?
> I'm of the persuasion that wayland should just function as a relay here.

I think this is acceptable in the server. It is very important however
that clients can always recover the "real" events, so if they don't like
the behavior they can implement their own. That was the reason everybody
immediately jumped on the fake release events, because they removed an
easy way to differentiate the repeats from real key presses.

Users probably are not going to set different repeat speeds for
different applications, and may appreciate having the same repeat speed
for remote as well as local applications.

I would go as far as having *mouse buttons* repeat. A very old window
system I worked on for PCs (before MS Windows) did this and it was very
convenient, for instance scroll bar up/down buttons repeated without any
timeout code in the client, and the speed was globabally configurable.

Perhaps related, in fltk I found it very useful to annotate mouse move
and release with whether they are a "click" or not. A press+release is a
"click" if they are short enough in time and the mouse is not moved
enough. A press is always a "click", but eventually it will figure out
that it is not a "click" and the move and release events will say this.
Having the server figure this out will make it consistent between
applications, easily configured with preferences, and the clients are
still free to ignore it if they want.

Annotating mouse-down with "double click" has been done for a long time
and is also useful. This should happen if the mouse down is in short
enough time after the previous release that was marked as a "click" and
is to the same client and surface.

More information about the wayland-devel mailing list