On Tue, 2007-04-17 at 11:09 +0200, Bert Freudenberg wrote: > On Apr 17, 2007, at 0:07 , Jim Gettys wrote: > > > On Mon, 2007-04-16 at 16:42 +0200, Marco Pesenti Gritti wrote: > >> Hello, > >> > >> we have the grab key on the keyboard which, when pressed, should > >> activate the scrolling mode. It should work like this: > >> > >> 1 The user press the grab key on the keyboard. > >> 2 The scrollbars of the current view are highlighted. > >> 3 Movements on the trackpad (both resistive and not resistive) > >> scrolls > >> the view. The mouse pointer is "locked" and does not change position. > >> > >> We are having problems with the X side of this but I think Jim > >> said to > >> Eben it was possible. Can someone with more with more X knowledge > >> than > >> me suggest a good way of implementing it? > > > > I don't believe I ever claimed this is possible. > > > > I think we're going to have to extend X to get these semantics. > > > > The closest one can come is to confine the cursor to a window; but > > that > > is different than nailing it to one place and causing the window > > coordinate system to move. > > - Jim > > > >> What I tried is to detach the pointer device from the core pointer. > >> (XChangePointerDevice). But then how do I get notified about trackpad > >> movements? > > > How about using scroll events? > > In X, scrolling mice just generate button presses that are mapped to > the Y or X axis in the config file. Many apps can deal with that > directly. So when pressing the grab key, we'd switch the touchpad > driver into "scroll mode" where movement generates those button > clicks. And because no actual movement events will be delivered, the > pointer would stay in place. As an added benefit, on a regular > machine this behavior can easily emulated with the scroll wheel, > without introducing a secondary code path.
I thought about that too. The limitations I see with this approach are: 1 Scroll events can only be horizontal or vertical, you can't move diagonally for example. 2 The precision is limited since you can only move of a certain step. The fact that they are already supported by applications it's clearly a big plus though. Maybe for Gen1 we could implement something using scrolling events and for later releases aim to add better semantics to X. Eben what do you think? Marco _______________________________________________ Devel mailing list [email protected] http://mailman.laptop.org/mailman/listinfo/devel
