Re: Hot-Spots 1.0.3

1. edge-keymap
I withdraw "edge-keymap". You can do it by making a window (of any
look and shape), and using per-window keymap. (This device itself
seems good for mouse users.)

2. edge-actions and timers
On Tue, 19 Oct 2010 18:16:23 +0200, Christopher Roy Bratusek wrote:
>> > HS (Hot Spots) interaction with ID and EF (Infinite Desktop/Edge Flip):
>> > interaction is possible.
>> > [weeks later]
>> > (edge-actions '( ( top-right . hot-spot )
>> >                  ( left . edge-flip )
>> >                  ( bottom . infinite-desktop ) ) )
> [...]
> I'm using HS + EF and it I like what I have ;)
> The optimal behavior is:
> HS active: not call EF or ID at hot-spot
> HS inactive: call EF or ID at hot-spot
> Currently there are two timers, therefore EF and HS work together.

"edge-actions" is great, and the sole solution. Once you get it, you
can get rid of timers.

Current use of timer is too complicated over little gain. (I know
you had to beat EF's timer.) The only role of the timer is: a
cursor hits a corner, and if the delay of the EF is smaller than the
HS, the EF happens. This repels the cursor out of the flip detector
(to the opposite end of the screen). Then HS code is called, and the
mouse position is checked (only for corner), "it's not in any HS." So
corner HS is cancelled.
I don't think EF timer is of use.

3. A bug
> Imagine this: edge-width 5 px + warp-pointer set to 0 . 0 of window = each time
> warp-pointer is called you'll also activate the edge. So I'm against increasing the width
> of the edges.

Yes, this already indeed does harm to EF/ID users, and reported
to bugzilla. (bug 105223)

4. Another use of "flippers"
C "flippers" has another use. In multi-heads, there's "dead zone"
problem. Suppose you have a tall screen and short screen, side by
side. The entire X screen contains both, so there're imaginary,
invisible area below the short screen. But mouse pointer can go into
there. It's WM's job to give a workaround.

This can be handled with flipper. Currently 4 flippers are hardwired,
but to deal with dead-zone, geometries and number has to be configurable
from lisp. (I don't know if one pixel width is enough.)

Chris, you don't have to do it, but I don't work on this at the

5. Names
The last item means "flipper" is no more an appropriate name.
(Already from the time ID was introduced.) What's good, edge-sensor?
(It's still "edge" even with dead-zone, though the screen is a

And we can take this occasion to rename ID, to "viewport-drag" or so.
Infinitenes is now in dynamic-viewport, not in ID any more.

In edge-action, edge-flip should be split to flip-WS and flip-VP.

5. misc
Simplification of hot-spot-call is possible: if (get-active-corner)
returns non-nil, then you can rebind the result to 'edge'. You can
replace lengthy cond by using alist of (direction . variable). (Easier
to maintain.)

On Mon, 25 Oct 2010 20:07:06 +0200, Christopher Roy Bratusek wrote:
> ;; define/defun most be done *before* require of hot-spots!
> ( define (top-left-corner-program)
>   ( jump-or-exec "Iceweasel" "iceweasel" t ) )

(defvar-setq top-left-corner-program
  (lambda () ...))

Then the require order doesn't matter. (The origital may be ok too if
librep is bug free. I'm not sure; I'm not lisp headed.)

Teika (Teika kazura)

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]