Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Cursor

Lives in: game.json → cursor · optional cursors.json

Optional custom (software) pointer, or the normal OS cursor.

Most stories

Leave cursor out (or "enabled": false) → OS cursor. Soft cursor:

"cursor": {
  "enabled": true,
  "default": "default",
  "config": "cursors.json",
  "touch_pointer": false,
  "idle_hide": {
    "enabled": true,
    "delay": 2.5,
    "fade": 0.2,
    "keep_visible": ["choices", "screens"]
  }
}
// cursors.json
{
  "default": "default",
  "profiles": {
    "default": {
      "kind": "image",
      "image": "sprites/pointer.png",
      "hotspot": [2, 2],
      "scale": 1.0
    }
  }
}

Soft cursor follows mouse pointing. On touch it stays hidden unless touch_pointer is true.

From the story

{ "type": "cursor", "profile": "inspect" }
{ "type": "cursor", "push": "inspect" }
{ "type": "cursor", "pop": true }
{ "type": "cursor", "reset": true }

Hover hotspots can use hook actions cursor:push:… / cursor:pop. Idle-hide still works with the OS cursor (instant hide/show; fade is soft-cursor only).

Usually you need

WantDo
Normal pointerOmit soft cursor
Custom lookenabled: true + cursors.json
Hide while readingidle_hide
Inspect cursor on a hotspotcursor:push / pop hooks

Full map

cursors.json file map · cursors detail

Next

Notifications