Curious cursor complication with Emacs and Windows Magnifier

I recently noticed a bug when you start GNU Emacs win32 after starting Windows Magnifier: Emacs’ cursor becomes a single-pixel “caret” instead of the box cursor. This makes the cursor very hard to find.

I usually leave Emacs’ cursor at the default (box) because this is so much easier to see, especially if you also enable blink-cursor-mode (though that’s a matter of taste, I suppose). The default settings also set the cursor to a hollow box when the window (or the entire frame) is inactive.

Really, a text editor is unusable with a “caret” or bar-shaped cursor.

The following behaviors are observed with this bug:

  • This affects at least GNU Emacs versions 23.1 for Windows, and 24.0 compiled with mingw for win32
  • The actual shape of the cursor has no correspondence with the value of the cursor-type variable: it is always as-if the value were (bar . 1) (a vertical bar, one pixel wide)
  • The cursor blinks, whether you have enabled blink-cursor-mode or not
  • The value of the Windows Registry key HKCU\Control Panel\Desktop\CaretWidth also has no bearing on the cursor shape (though this key is great for setting the cursor thickness in other Windows programs…)
  • (This one took me ages to find) It only happens if Windows Magnifier is running before you start Emacs. If you start Emacs first, and then start Magnifier, the cursor is unchanged and respects the value of cursor-type

So, the work-around for this is to start Emacs before you run Magnifier (especially: make sure the Windows Accessibility feature that starts Magnifier when you log in, is turned OFF).

As far as I can tell, there is no bug report for this.  I may file one when I get around to figuring out GNU’s bug-tracker.