Skip to content

Feature request: presentation mode — per-mode cursor size scaling (enlarged cursor / highlight) #73

Description

@masasj

Use case

When presenting, screen-sharing, recording tutorials, or pair-programming, the audience often loses track of the mouse cursor. Presentation tools solve this with an enlarged cursor or a highlight around it, but they are app-specific or global toggles buried in OS settings.

mousemaster's mode system is a perfect fit for this: a "presentation mode" would just be a regular user-defined mode that enlarges the cursor while active, entered/exited with any combo the user likes.

Proposal

A per-mode cursor scale (or size) property:

# Example: toggle presentation mode with leftctrl+p from normal mode
normal-mode.to.presentation-mode=_{leftctrl} +p
presentation-mode.cursor.scale=2.5
presentation-mode.to.normal-mode=_{leftctrl} +p

While a mode with cursor.scale is active, mousemaster would swap the system cursors for scaled-up copies (via SetSystemCursor), restoring the originals on mode exit — the same mechanism the hide-cursor feature already uses, so the infrastructure (including the OCR_* enumeration and the GDI-handle-leak workaround) already exists in WindowsMouseController.

Optionally, a cursor color/tint property could complement it (e.g. a high-contrast or colored cursor), which also helps visibility on projectors with washed-out colors:

presentation-mode.cursor.color=#FF0000

Design consideration: deliberately NOT a halo/circle overlay

I'd argue this feature should stay at the level of changing the cursor's own size/color, not drawing rings, halos, or highlight circles around it:

  • During a presentation, an overlay ring covers the very content you are pointing at (text under the cursor, small UI elements, code). An enlarged cursor arrow only occupies the arrow's own silhouette.
  • Overlay-based highlights also inherit the one-frame trailing problem during movement, which is especially noticeable at presentation scale.
  • Keeping it cursor-only makes the feature a pure SetSystemCursor image swap: simpler, zero-latency, and no extra overlay window to manage.

Synergy with the indicator-as-cursor proposal

If the "render indicator as cursor" idea (submitted separately) is implemented, presentation mode falls out almost for free: both features are "generate a cursor image and apply it via SetSystemCursor". A presentation mode would then simply be a mode whose cursor image is big (and/or recolored).

Alternatives considered

  • Windows accessibility pointer size: global, requires opening Settings, no quick toggle, affects all workflows.
  • Presentation apps' built-in highlighting: app-specific, not available when demoing arbitrary software.
  • mousemaster's current indicator as a large highlight circle: workable today, but it covers the content being pointed at, and it trails the cursor by a frame during movement (see the indicator-latency report), which is very visible at presentation scale.

Happy to test builds. Thanks!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions