FAQs
Frequently asked questions about text cursors.
→ Learn about history, customization, accessibility, and the future of text cursors.
Origins & History
Before cursors, typewriters used the physical carriage position to show where the next character would appear. Teletypes used the print head location.
The cursor was first demonstrated at Douglas Engelbart's famous 'Mother of All Demos' on December 9, 1968, in San Francisco.
A cursor is a general position indicator (often the mouse pointer), while a caret specifically refers to the text insertion point—the blinking line where characters appear when you type.
The word "cursor" comes from Latin meaning "runner." It originally referred to the sliding hairline indicator on mechanical slide rules.
The I-beam cursor is the text-selection pointer shape that appears when hovering over editable text. It's called that because it resembles a capital 'I' or the cross-section of a construction I-beam.
Charles A. Kiesling at Sperry Rand invented the blinking cursor. He filed the patent on August 24, 1967.
The I-beam cursor was introduced on the Xerox Alto in 1973. It's often attributed to Charles Simonyi and the team at Xerox PARC.
The cursor blinks to make it visible among static text. The alternating display catches your attention without obscuring the content beneath it.
How It Works
Yes. On Windows, go to Control Panel > Ease of Access > Keyboard. On macOS, use System Preferences > Accessibility or terminal commands.
Cursor lag can be caused by high CPU/GPU load, slow text rendering, input lag, or conflicts with accessibility software.
The text buffer maintains an index position, and the rendering engine draws the cursor at that character offset in the displayed text.
Cursor shape indicates mode awareness. Vim uses block for normal mode, bar for insert mode, and underline for replace mode. Other editors follow similar conventions.
Different shapes indicate different editing modes. Bar typically means insert mode, block means overwrite or command mode, and underline means replace mode.
Yes. Set the blink rate to 'None' or '0' in your system's accessibility settings. This helps users with attention disorders or those who find blinking distracting.
Hardware cursors are rendered by the GPU and appear smoother. Software cursors are drawn by the CPU, offering more customization but potentially more lag.
In insert mode, new characters push existing text to the right. In overwrite mode, new characters replace existing text at the cursor position.
The Windows default is 530ms on, 530ms off (about 1 blink per second). The adjustable range is typically 200-1200ms.
The 530ms rate is an industry convention. The specific origin is unclear, but it balances visibility with minimal distraction.
Desktop Platforms
Go to Settings > Accessibility > Cursor Size. For blink settings, use gsettings to modify cursor-blink and cursor-blink-time.
Use the Terminal command: defaults write -g NSTextInsertionPointBlinkPeriod -int [milliseconds]
For the mouse pointer: shake rapidly to temporarily enlarge it, or increase size in System Preferences > Accessibility > Display. For the text cursor (caret), macOS offers limited customization options.
Go to System Preferences > Accessibility > Display and use the cursor size slider to make it larger.
On Windows, delete the CaretWidth registry key. On Mac, run: defaults delete -g NSTextInsertionPointBlinkPeriod
CaretWidth is found at HKEY_CURRENT_USER\Control Panel\Desktop. It's a DWORD value from 1-20 that sets the cursor width in pixels.
Go to Control Panel > Ease of Access Center > Make the computer easier to see. Modern Windows versions also have Settings > Ease of Access.
Go to Settings > Accessibility > Text cursor, then turn on the text cursor indicator and choose your preferred color.
Go to Settings > Ease of Access > Text cursor. You can also modify the CaretWidth DWORD value in the Registry.
Windows Vista (2006) modernized the UI. The spinning circle feels more dynamic and modern than the static hourglass.
Accessibility
Windows: Settings > Ease of Access > Text cursor indicator. Mac: System Preferences > Accessibility > Display > Cursor size.
Keyboard users need a visible focus indicator just like mouse users need a pointer. It's essential for navigation without a mouse.
Windows Eye Control (Win10 1709+) with a Tobii eye tracker lets you control the cursor with your gaze and click by dwelling.
A CSS pseudo-class that applies focus styles only for keyboard navigation, not mouse clicks. It prevents focus outlines from appearing when clicking buttons.
0.4 to 2.5 Hz (flashes per second). The standard 530ms rate (~0.9 Hz) is within the safe range.
Screen readers track focus and caret position, announce text at the cursor location, and use a virtual cursor for navigation.
Potentially. WCAG recommends keeping flash rates between 0.4-2.5 Hz and allowing users to disable blinking.
WCAG 2.4.7 Focus Visible (Level AA) and WCAG 2.4.13 Focus Appearance (Level AAA, new in WCAG 2.2).
Collaborative Editing
Each editor gets a unique color. Cursor positions sync via WebSocket connections, and names appear above each cursor.
No built-in option in Google Docs. Your cursor is visible to other editors (though not to viewers who have read-only access).
The client sends typing state to the server, which broadcasts it to other clients. A timeout clears the indicator when typing stops.
Using Operational Transformation (OT) or CRDTs. A presence service broadcasts position deltas to all connected clients.
Color-coding identifies different collaborators. Colors are auto-assigned from a palette to distinguish who is editing where.
Future Technology
Yes. Neuralink implanted its first human subject in January 2024. BCI research has existed since the 1970s (Jacques Vidal).
Tobii Eye Tracker 4C/5, Tobii Dynavox PCEye, EyeTech devices. Prices range from ~$150 to $2000+.
He used a scanning keyboard that highlighted words on screen. Initially controlled by a hand-held clicker (1986-2008), he later switched to a cheek muscle sensor when his hands weakened.
1,024 electrodes on 64 ultrathin wires read neural signals. Algorithms decode intended movement. Data transmits via Bluetooth to the device.
Virtual keyboards with gaze + pinch, physical keyboard passthrough, voice input, or specialized devices like TapXR.
Possibly not. Voice input, gaze tracking, and brain interfaces may reduce our reliance on visual cursors for text input.
Mobile
Long-press in a text field and drag the cursor handle. On Gboard, swipe across the spacebar. Samsung devices have a dedicated cursor control key.
It varies by manufacturer. Samsung devices include a magnifier, while stock Android relies primarily on selection handles and the spacebar swipe gesture.
Apple replaced it with direct cursor dragging, thinking it was simpler. User complaints led to the magnifying glass being restored in iOS 15.
iPadOS features a morphing circle cursor that transforms contextually—becoming an I-beam for text, highlighting buttons, and snapping to UI elements.
Long-press the spacebar to turn the keyboard into a trackpad, then slide your finger to move the cursor. On iOS 15+, you can also use the magnifying glass.
The 'fat finger problem' makes precise positioning difficult. There's no hover state, and touch targets are smaller than mouse pointer precision.
Double-tap a word to select it, then drag the handles to adjust the selection. Use the magnifying glass (when available) for precision.
Long-press the spacebar and the keyboard becomes a trackpad. Slide your finger to move the cursor precisely through your text.
Terminal & CLI
Sequences like \e[H (move home), \e[nA (move up n lines), \e[nC (move right n columns). Based on the VT100 terminal standard.
Use terminal preferences or send escape sequence \e[1 q (blinking block) vs \e[2 q (steady block). Odd numbers blink, even numbers are steady.
Send an ANSI escape sequence: \e[N q where N = 1-6 for different shapes (1=blinking block, 2=steady block, 3=blinking underline, etc.).
tmux intercepts escape sequences. You may need to add Ss and Se terminal overrides in your tmux.conf for cursor shape changes to work.
Vim waits for potential escape sequences after you press Escape. Set ttimeoutlen=0 in your .vimrc to reduce this delay.
Vim uses block cursor for normal mode, vertical bar for insert mode, and underline for replace mode.
Set t_SI, t_SR, and t_EI variables in your .vimrc with the appropriate escape sequences for insert, replace, and normal modes.
DEC Set Cursor Style—an escape sequence (\e[N q) that sets the cursor shape to block, underline, or bar, blinking or steady.
Web Development
caret-color only works on editable elements (input, textarea, contenteditable). Regular text elements don't have a text cursor to style.
Chrome 57+, Firefox 53+, Safari 11.1+, Edge 79+. Internet Explorer has no support.
Use window.getSelection().getRangeAt(0).startOffset. For nested elements, you'll need to traverse the DOM to calculate the absolute position.
A CSS property that sets the color of the text insertion cursor (caret) in editable elements like input fields and textareas.
Use @keyframes with opacity or border animation on a pseudo-element to simulate a blinking cursor.
Use CSS: input { caret-color: #ff0000; } or caret-color: auto; for automatic contrast with the background.
Use the Selection API: setSelectionRange() for input/textarea, or the Range API for contenteditable elements.
A JavaScript API to get and set text selection: window.getSelection() returns the current selection, and you can manipulate it with Range objects.
A CSS pseudo-element that styles highlighted/selected text: ::selection { background: yellow; color: black; }
Use the caret-color CSS property: input { caret-color: red; } This changes the color of the blinking cursor in text inputs.
Text Editors & IDEs
Select multiple lines, then press Ctrl+Shift+L in VS Code or Sublime Text to create a cursor at the end of each selected line.
No. Google Docs doesn't support multiple personal cursors. The colored cursors you see are collaborative cursors showing other users' positions.
Ctrl+Click to add cursors, Ctrl+Shift+L to split selection into lines, Ctrl+D to select next occurrence.
Alt+Click to add cursors, Ctrl+Alt+Down/Up for column selection, Ctrl+D to select next occurrence of the current word.
Editing multiple locations simultaneously with multiple carets. Each keystroke affects all cursor positions at once.
Sublime Text 2 (2011) popularized multi-cursor editing as a mainstream feature, though similar concepts existed earlier.