# `Emerge.Config.Cursor`
[🔗](https://github.com/emerge-elixir/emerge/blob/v0.5.1/lib/emerge/config/cursor.ex#L1)

DRM pointer appearance. Set this record as `Emerge.Config.Input.cursor`.
Desktop window cursors remain controlled by their window backend.

```elixir
%Emerge.Config{
  input: %Emerge.Config.Input{
    cursor: %Emerge.Config.Cursor{hardware: false}
  }
}
```

## Fields

- `hardware` — prefer a DRM hardware cursor; defaults to `true`. It is a
  preference, not a requirement. CPU raster always draws its cursor in software.
- `default` — optional `Emerge.Config.CursorIcon` for the ordinary arrow.
- `text` — optional `Emerge.Config.CursorIcon` for the text-selection cursor.
- `pointer` — optional `Emerge.Config.CursorIcon` for clickable content.

All icon fields default to `nil`, keeping the built-in icon. Overrides apply to
DRM; they do not replace desktop system cursors. All fields require a new
viewport to change.

# `normalized_t`

```elixir
@type normalized_t() :: %Emerge.Config.Cursor{
  default: Emerge.Config.CursorIcon.normalized_t() | nil,
  hardware: boolean(),
  pointer: Emerge.Config.CursorIcon.normalized_t() | nil,
  text: Emerge.Config.CursorIcon.normalized_t() | nil
}
```

Canonical form after nested keyword records have been expanded.

# `options`

```elixir
@type options() :: [
  hardware: boolean(),
  default:
    Emerge.Config.CursorIcon.t() | Emerge.Config.CursorIcon.options() | nil,
  text: Emerge.Config.CursorIcon.t() | Emerge.Config.CursorIcon.options() | nil,
  pointer:
    Emerge.Config.CursorIcon.t() | Emerge.Config.CursorIcon.options() | nil
]
```

Typed keyword shorthand accepted in this record's parent field.

# `t`

```elixir
@type t() :: %Emerge.Config.Cursor{
  default:
    Emerge.Config.CursorIcon.t() | Emerge.Config.CursorIcon.options() | nil,
  hardware: boolean(),
  pointer:
    Emerge.Config.CursorIcon.t() | Emerge.Config.CursorIcon.options() | nil,
  text: Emerge.Config.CursorIcon.t() | Emerge.Config.CursorIcon.options() | nil
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
