I remember windows 3.1 had a utility for drawing custom cursors. I had great fun making cursors (I was around 10 at the time I guess) and had completed forgotten about it until now!
I think that utility was a 16x16 grid, and indeed the easiest to see arrows utilsed the vertical, although actually a cursor which uses the horizontal and diagonal isn't bad either.
The Commodore Amiga had something similar along with an early 'double 90 degree' cursor [1] and a 1/2 pixel ratio cursor in later versions if the OS [2]. Both are pretty delightful :)
Microsoft Plus! for Windows 95 had lots of fun themes. The cursor of the science theme was a glass tube with some chemical bubbling inside. Unfortunately, I can't even seem to locate pictures of those themes.
In this same vein, I remember spending hours making custom repeating tile pattern backgrounds in Windows 95. Before the modern Web, using a PC was quite a different experience than how they're used the majority of the time now.
Indeed! For years I had a custom cursor, it was a mouse point with additional rays on the -x and +y axes. Hard to describe, if you picture the 'crosshatch' style cursor with an ordinary mouse pointer instead of two of the lines, you've got it.
I still feel it combines the precision of a crosshatch with the visibility of an ordinary mouse arrow. Perhaps I should recreate it for the Mac...
iirc it's really a 32x32 grid, but the "point" for the cursor is the center position, so the lower-right quadrand is used for a regular cursor, where say the text cursor is centered.
Nobody seems to mention a pretty good reason also: standard western text (and content in general) is oriented right-to-left; therefore covering only one side seems to me intuitively less obstructing (we can read perfectly up to the click spot, instead of being confused by what's underneath it)
In addition, it mimics what a right-handed person already does with their hand when pointing at something on a page or on a screen right in front of them, especially left-to-right text (using the right hand so it doesn't block the text). Pointing at something off to the side (outside the width of your shoulders) makes your hand tilt outwards; pointing at something directly in front makes your hand tilt inwards.
Some of the Linux GUIs used to have a feature that, if you set the mouse to left-handed, the cursor would tilt the other way. It was very ergonomic and seemed natural (and I would like it back :)
Yep: a better reason (than those given on SO) is that it's designed for minimal UX annoyance - it is least likely to cover up what you need to see while still serving its purpose; the asymmetry allows you to more quickly understand which point is important.
It's instructive to observe the circumstances when the cursor changes: there is some indication of context change, but also the design of the cursor in each context is important.
Nobody mentions it because there's no evidence for that fact being an influence on the design. There's historical evidence for the other reasons. Yours is a just-so story.
I always assumed because the point of the diagonal arrow cursor is located at 0,0 in the image, making the origin location of the mouse cursor image and the click point of the arrow the same. Whereas with any vertical arrow cursor, the click point would no longer line up with 0,0.
That could have been an issue with the PARC machine that OP claims started the trend, but with any OS after that (including the original Mac), you can specify the cursor hotspot when designing the cursor (look at your I-beam cursor for instance)
This is true for most default cursors, but custom cursor file formats let you change the coordinates of the active pixel (see: 'left-handed' mirrored arrow cursors, or crosshair-type ones.). The link 'finger' cursor on most OSes is a default example where the active pixel isn't the top-left one.
It's funny how as a kid in the 80s, this was something you'd notice, think and feel about. I have no idea what were the computer system I was using[1] but I vividly remember staring at the cursor with interest.
[1] at my father's office, govt agency, something like an early x window system... can't recall
ps: actually, both physical interface mesmerized me, keyboards were curious creatures for me, here's a similar model of what was used http://goo.gl/gyD7R6 ( I love the non flat keys and the 0, 00, 000 series )
It's interesting to see how misinformation propagates.
The second-highest-rated answer on Stack Exchange (46 votes and climbing) claims that another reason for the left arrow cursor in early GUIs was to put the hotspot at (0,0) to save time in the mouse position calculations:
That comment is a direct copy of this Yahoo! Answers comment from 2009, which says that the Xerox Alto worked this way, but cites no source for the claim:
Let's ballpark the CPU overhead. According to this article, the Alto executed about 400,000 instructions per second, with an instruction set modeled after the Data General Nova 1220:
There are four accumulators, with an ADD instruction that adds one accumulator to another (and a similar SUB). There are LDA and STA instructions that load and store memory, addressed with a displacement and an optional accumulator (e.g. to access into a structure using a pointer).
It seems reasonable to assume that at some point in the mouse refresh code, we will have the mouse's X value in one accumulator, and a pointer to the cursor structure (containing the cursor bitmap, hotspot, etc.) in another.
So to adjust our X value using the hotspot X from our cursor structure, we simply need an LDA to load the hotspot X into another accumulator, and an ADD or SUB to do the calculation. Repeat that for Y, and we've added a total of four instructions.
At 400,000 instructions per second, these calculations would add a 1/100,000 second overhead to the mouse calculation.
A worst case might be that we don't have a free accumulator when we need it. So that would be another STA and LDA to spill one temporarily.
If we have to do that for both X and Y, it would put us at eight instructions total, or 1/50,000 second.
Still probably worth doing it to get the flexibility of custom cursor hotspots. :-)
This hit the BS detector for me too, mainly because it goes against some of the rules of thumb I have found useful for optimization. For example, the need for smooth and stutter-free ui notwithstanding, if something only happens in response to user input you are less likely to see important gains from this sort of CPU microoptimization. Even on a very old machine, it should be obvious that the computer adds integers much faster than you can move your finger (otherwise there would be no point of having the computer, am I right?) On the other hand, if you had to compute more on every frame or for a substantial amount of onscreen objects, that's where the real gains are going to live, because the numbers add up much more easily.
When an average right-handed person points at something his hand has a very similar shape. Imaging a large screen with some kind of a presentation and you are explaining something to the public and pointing at some object on the screen. The shape of your hand in this moment is the most natural thing for a pointer, immediately understandable by anyone.
JĂșlio Turolla Ribeiro's answer is far better. I guess that young people have lost the ability to think outside the computer. Some of us still remember school classes, and business presentations in which presenters pointed at the board with their finger, or with a two meter long stick called a "pointer". The pointing was almost always in the same angle as the photo that Julio included, either from the left or the right. Of course, from the right is more natural for the right-handed majority.
The fact that some engineer tinkered with the computer representation of the pointer for code efficiency reasons, does not change the fact of hundreds of years of history in which teachers pointed at an angle from the right. I'm sure that if you hunt up old movies (black and white ones) where there is a school/university lesson being portrayed, you will see a pointer in use in this pose.
1. On my computer, the pointer arrow is asymmetric, and the left side of the arrow-head is vertical.
2. Forget pre-computers... If you draw an imaginary line from my mouse/hand to the cursor, it is approximately parallel/overlapping with the line of the arrow pointing.
Actually, I'm wrong. Turns out pointer and caret are subclasses of cursor, and "mouse cursor" is perfectly acceptable to refer to the former. You learn something by being a petty smartass :)
To a right-handed person it does ...I imagine to a left-handed person it must feel like the cursor/pointer is pointing the "wrong" way. I am wrong on this lefto weirdies? Bonus upvotes for casual slur surely.
I don't know if this went into the decision making process, but with the cursor at an angle the OS can use the x,y coordinates of the cursor to find it's target, instead of having to offset the coordinates to compensate for a straight cursor.
I'm not sure if that's how cursors work.. just a thought.
Macintosh cursors were configurable right back to the beginning; the hot spot could be anywhere in the cursor's 16x16 rectangle. The text insertion point cursor had the hot spot centered and on the baseline, the crosshairs had it in the center, and so on. I have heard that it was the same in Windows, from the beginning. So the location of the arrow cursor's hotspot in the top left is a result of that being the arrow's tip and not a cause of the arrow tip being located there.
It's not really a "historical" reason though. A cursor is still a very small icon. It's pixel art. Choosing angles that look crisp is a foundation of making pixel art and I don't think screen densities are high enough to ignore that.
Yeah, that must have been the reason Xerox chose that pointing direction and that Apple copied it: Redmond is exactly North-West from Palo Alto and Cupertino (clearly, Apple didn't do maps yet in 1984)
I've changed my cursors under OS X for a long time now. Check out /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HiServices.framework/Versions/A/Resources/cursors for the special ones. (People make replacement packs that are drop-in replacements for the cursor image files.)
For the main cursor, use a combination of Cursorcerer and HotMouse.
> I've always been confused as to the success of the computer mouse. It doesn't seem like the ideal solution. Then again, neither do trackpads.
Without meaning to be argumentative, what would be ideal? In the absence of an actual better solution, one can explain the success of an obviously sub-optimal but existing solution by "worse is better" (https://en.wikipedia.org/wiki/Worse_is_better).
Not all engineering decisions are based on large complex analysis, they don't always have storied back room drama, not all design decisions are made with hundreds of people sitting around analyzing user feed back polls.
Really often times it just comes to do one guy/gal trying something new flying by the seat of his/her pants. And a few people like it so they keep it, and it propagates.
eterm|12 years ago
I think that utility was a 16x16 grid, and indeed the easiest to see arrows utilsed the vertical, although actually a cursor which uses the horizontal and diagonal isn't bad either.
oneeyedpigeon|12 years ago
[1] http://toastytech.com/guis/amiga1cplpointer.png [2] http://geekometry.com/wp-content/uploads/2013/11/amigaos204-...
anonymouz|12 years ago
bluedino|12 years ago
ajcarpy2005|12 years ago
tehwalrus|12 years ago
ryanmcbride|12 years ago
The loading animation was the banana peeling. It blew my 10 year old mind.
joezydeco|12 years ago
http://imgur.com/x0xRKCA
user24|12 years ago
samatman|12 years ago
I still feel it combines the precision of a crosshatch with the visibility of an ordinary mouse arrow. Perhaps I should recreate it for the Mac...
tracker1|12 years ago
darkmighty|12 years ago
lotharbot|12 years ago
Stratoscope|12 years ago
This was the case as far back as the original Mac; I'm not sure which cursors were used on systems before that.
ds9|12 years ago
ronaldx|12 years ago
It's instructive to observe the circumstances when the cursor changes: there is some indication of context change, but also the design of the cursor in each context is important.
PakG1|12 years ago
nollidge|12 years ago
ebbv|12 years ago
eterm|12 years ago
One good prank was to set someone's click point to outside the cursor.
kalleboo|12 years ago
blueskin_|12 years ago
agumonkey|12 years ago
[1] at my father's office, govt agency, something like an early x window system... can't recall
ps: actually, both physical interface mesmerized me, keyboards were curious creatures for me, here's a similar model of what was used http://goo.gl/gyD7R6 ( I love the non flat keys and the 0, 00, 000 series )
Stratoscope|12 years ago
The second-highest-rated answer on Stack Exchange (46 votes and climbing) claims that another reason for the left arrow cursor in early GUIs was to put the hotspot at (0,0) to save time in the mouse position calculations:
http://ux.stackexchange.com/a/52349/43259
The answer cites this Reddit comment as its source:
http://www.reddit.com/r/explainlikeimfive/comments/1qhzym/wh...
That comment is a direct copy of this Yahoo! Answers comment from 2009, which says that the Xerox Alto worked this way, but cites no source for the claim:
http://answers.yahoo.com/question/index?qid=20090520113724AA...
In fact, the Alto did have multiple cursor shapes, and the hotspot wasn't always at (0,0). For example there was this cross in a circle:
http://www.guidebookgallery.org/articles/thexeroxaltocompute...
and a right-pointing arrow:
http://toastytech.com/guis/saltobravo.png
Let's ballpark the CPU overhead. According to this article, the Alto executed about 400,000 instructions per second, with an instruction set modeled after the Data General Nova 1220:
http://www.guidebookgallery.org/articles/thexeroxaltocompute...
Here's a brief description of the Nova instruction set:
http://users.rcn.com/crfriend/museum/doco/DG/Nova/base-instr...
There are four accumulators, with an ADD instruction that adds one accumulator to another (and a similar SUB). There are LDA and STA instructions that load and store memory, addressed with a displacement and an optional accumulator (e.g. to access into a structure using a pointer).
It seems reasonable to assume that at some point in the mouse refresh code, we will have the mouse's X value in one accumulator, and a pointer to the cursor structure (containing the cursor bitmap, hotspot, etc.) in another.
So to adjust our X value using the hotspot X from our cursor structure, we simply need an LDA to load the hotspot X into another accumulator, and an ADD or SUB to do the calculation. Repeat that for Y, and we've added a total of four instructions.
At 400,000 instructions per second, these calculations would add a 1/100,000 second overhead to the mouse calculation.
A worst case might be that we don't have a free accumulator when we need it. So that would be another STA and LDA to spill one temporarily.
If we have to do that for both X and Y, it would put us at eight instructions total, or 1/50,000 second.
Still probably worth doing it to get the flexibility of custom cursor hotspots. :-)
asveikau|12 years ago
This hit the BS detector for me too, mainly because it goes against some of the rules of thumb I have found useful for optimization. For example, the need for smooth and stutter-free ui notwithstanding, if something only happens in response to user input you are less likely to see important gains from this sort of CPU microoptimization. Even on a very old machine, it should be obvious that the computer adds integers much faster than you can move your finger (otherwise there would be no point of having the computer, am I right?) On the other hand, if you had to compute more on every frame or for a substantial amount of onscreen objects, that's where the real gains are going to live, because the numbers add up much more easily.
TheZenPsycho|12 years ago
ii|12 years ago
memracom|12 years ago
The fact that some engineer tinkered with the computer representation of the pointer for code efficiency reasons, does not change the fact of hundreds of years of history in which teachers pointed at an angle from the right. I'm sure that if you hunt up old movies (black and white ones) where there is a school/university lesson being portrayed, you will see a pointer in use in this pose.
gertef|12 years ago
2. Forget pre-computers... If you draw an imaginary line from my mouse/hand to the cursor, it is approximately parallel/overlapping with the line of the arrow pointing.
oneeyedpigeon|12 years ago
oneeyedpigeon|12 years ago
unknown|12 years ago
[deleted]
Aoyagi|12 years ago
igravious|12 years ago
GoofballJones|12 years ago
Actually, quite easy to put anything you wanted as a mouse pointer on the Amiga.
ck2|12 years ago
GoofballJones|12 years ago
ZoF|12 years ago
coley|12 years ago
I'm not sure if that's how cursors work.. just a thought.
edit: grammar is hard
marssaxman|12 years ago
gchokov|12 years ago
jere|12 years ago
cl8ton|12 years ago
The tilt had a symbolic hidden meaning... It is pointing to the North-West to MS headquarters in Redmond.
Someone|12 years ago
jff|12 years ago
sidcool|12 years ago
dudus|12 years ago
jokoon|12 years ago
g_glitch|12 years ago
For the main cursor, use a combination of Cursorcerer and HotMouse.
acex|12 years ago
indubitably|12 years ago
CARNOVIRUS|12 years ago
[deleted]
kimonos|12 years ago
LizVerano|12 years ago
[deleted]
rckrd|12 years ago
JadeNB|12 years ago
Without meaning to be argumentative, what would be ideal? In the absence of an actual better solution, one can explain the success of an obviously sub-optimal but existing solution by "worse is better" (https://en.wikipedia.org/wiki/Worse_is_better).
lallysingh|12 years ago
valarauca1|12 years ago
Really often times it just comes to do one guy/gal trying something new flying by the seat of his/her pants. And a few people like it so they keep it, and it propagates.
duiker101|12 years ago
oneeyedpigeon|12 years ago
knappador|12 years ago
Agreed here.