Anelok: weird ways to scroll
werner at almesberger.net
Sat Jan 3 02:40:45 UTC 2015
So, why do we start in the middle of the list ? One good reason is
that this minimizes - in the general case - the travel distance for
Another reason is that it makes the cursor that never leaves the
center of the screen look a little less odd. I experimented quite a
bit with letting the cursor move to top and bottom, too, but I
couldn't find a way to do it that didn't feel weird.
The problem is that, if the cursor moves over larger distances, we
basically have zones at the top and the bottom of the list where
sliding should move the cursor, while the cursor should remain more
or less stationary (i.e., what it currently does) and more or less
centered on the screen while in the middle of the list.
So far, this is quite doable, but now there's another constraint: any
sliding movement should produce immediate visible feedback. Since the
cursor should stay at the current entry (1), we can't use that to
indicate where we are. So we have to shift the whole list.
(1) Possible variations of the theme:
- have a "slide period" during which the cursor moves freely then
have it float back to the middle of the selected entry when
there's no further input for a while. Sounds kinda messy.
- let the cursor move freely and have another marker that jumps
from item to item (e.g., invert the entry). That would probably
clutter the display quickly.
If inverting, there's also the issue that horizontal lines with
a lot of white pixels drain the buffer capacitors and thus make
the display go a little dim in that area.
What this looks like can be seen when changing the scroll mode with
the following keys:
1 smooth and centered, the default
2 list scrolls in the same direction in all zones (2)
3 list changes scroll direction depending on zone
Note that I didn't fully debug modes 2 and 3, so there are some jumps
when changing zones.
(2) Problem: when we're at the top and have the list scroll down,
then part of the first entry scrolls off the screen. The same
problem exists at the bottom. Mode 3 solves this but makes the
The following image illustrates the sequences:
Each band shows a scroll from the top of the list to the bottom, in
mode 1, then 2, and finally 3. At each position a slice of the left
side of the screen is shown.
More information about the discussion