top | item 7251987

Why is the mouse cursor slightly tilted and not straight?

326 points| attheodo | 12 years ago |ux.stackexchange.com

103 comments

order

eterm|12 years ago

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.

anonymouz|12 years ago

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.

bluedino|12 years ago

I hated sitting down to a machine with custom mouse cursors, mostly because the actual hit detection point was always in a weird spot.

ajcarpy2005|12 years ago

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.

tehwalrus|12 years ago

I made my "hourglass" into a space shuttle taking off. Woo! Fire! :) I was about 12.

ryanmcbride|12 years ago

My favorite custom cursor was a banana.

The loading animation was the banana peeling. It blew my 10 year old mind.

joezydeco|12 years ago

And Macintosh had CURS resources, which easily let you design your own with ResEdit or use the ones built into the system ROM:

http://imgur.com/x0xRKCA

user24|12 years ago

I remember one called Microangelo.

samatman|12 years ago

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...

tracker1|12 years ago

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.

darkmighty|12 years ago

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)

lotharbot|12 years ago

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.

Stratoscope|12 years ago

But the arrow cursor is not used for selecting text. The cursor switches to an I-beam over selectable text.

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

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 :)

ronaldx|12 years ago

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.

PakG1|12 years ago

Being pedantic, but don't you mean left-to-right?

nollidge|12 years ago

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.

ebbv|12 years ago

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.

eterm|12 years ago

In the windows 3.1 tool I mentioned above, you could actually choose a custom click point to be any point on the cursor.

One good prank was to set someone's click point to outside the cursor.

kalleboo|12 years ago

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)

blueskin_|12 years ago

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.

agumonkey|12 years ago

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 )

Stratoscope|12 years ago

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:

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

Nice digging.

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

how much is 4 or 8 or even 16 instructions compared to the amount of time to actually draw the cursor graphic into the frame buffer?

ii|12 years ago

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.

memracom|12 years ago

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.

gertef|12 years ago

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.

oneeyedpigeon|12 years ago

<pedantry>pointer</pedantry>

oneeyedpigeon|12 years ago

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 :)

Aoyagi|12 years ago

I tried a straight upwards cursor once. It felt terrible. The tilt gives the cursor "extended hand" feel.

igravious|12 years ago

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.

GoofballJones|12 years ago

I remember drawing my own mouse pointer on my Amiga. Made it really small, could barely see it, but didn't take up as much space as the default.

Actually, quite easy to put anything you wanted as a mouse pointer on the Amiga.

ck2|12 years ago

We owe so much to xerox, did they ever make money off all that R&D ?

GoofballJones|12 years ago

They did from Apple. Despite the lore of Steve Jobs "stealing" everything from PARC, there was a deal in place before Xerox ever showed anyone.

ZoF|12 years ago

I always assumed it was tilted slightly in order to have one of the sides of the default cursors triangle be parallel to the side of the screen.

coley|12 years ago

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.

edit: grammar is hard

marssaxman|12 years ago

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.

gchokov|12 years ago

There are so many little stuff left for ages due to technical limitations back them. It's fascinating.

jere|12 years ago

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.

cl8ton|12 years ago

I was told a long time ago by someone who should know.

The tilt had a symbolic hidden meaning... It is pointing to the North-West to MS headquarters in Redmond.

Someone|12 years ago

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)

jff|12 years ago

By someone who should know better, you mean? Because that's a really terrible explanation.

sidcool|12 years ago

A very interesting fact! I never even thought about it. Now I cannot stop thinking about all such small things. Great post.

dudus|12 years ago

Have we run out of questions for SE?

jokoon|12 years ago

still no way to change the cursors under mac os x ?

g_glitch|12 years ago

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.

acex|12 years ago

or why is tilted from bottom-right to top-left. ;)

kimonos|12 years ago

Great question!

rckrd|12 years ago

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.

JadeNB|12 years ago

> 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).

lallysingh|12 years ago

For HN, I expected a much deeper explanation than "it looked better on low res displays.". This isn't worth our time.

valarauca1|12 years ago

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.

duiker101|12 years ago

You are free to take off and go on a research of more in-depth documentation and make a nice blog post about it!

oneeyedpigeon|12 years ago

Maybe that's why the OP submitted the link, to draw attention to that flaw, and encourage discussion (both here and on SO)

knappador|12 years ago

This isn't worth our time.

Agreed here.