# Keyer

> A basic keyer.

A basic keyer. Pick an operation (luminance, red / green / blue, saturation, min / max of a channel, greenscreen, bluescreen) and shape the key with the range trapezoid A B C D; the key goes to the output channel (alpha by default). The channels knob names it.

| Node | Keyer |
|---|---|
| Menu | Keyer › Keyer |
| **Names in each format** | |
| .oink comp (JSON) | `"type": "OC_N_keyer"` |
| .nk script | `Keyer` ([how .nk import works](/docs/nuke-users/nk-import)) |
| Python | `nuke.createNode("Keyer")` |
| Assistant (MCP) | `create_node(type="Keyer")` |
| Tab search | `keyer` |

![Keyer properties](/shots/nodes/keyer@2x.webp)

## Usage
- Values below A are 0, rise from A to B, stay 1 up to C and fall to 0 at D. C = D keeps
  everything above C at 1.
- greenscreen / bluescreen give 1 on the foreground and 0 on a clean screen; for real screens use
  ScreenKey or IBK.

## Inputs and outputs

| Port | Name | Type |
|---|---|---|
| input 0 | Image | image |
| input 1 | mask | image |
| output 0 | Image | image |

## Knobs

Panel tab **Keyer**, in panel order.

| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
| `operation` | operation | menu | `luminance` | luminance (luminance key), red (red keyer), green (green keyer), blue (blue keyer), saturation (saturation key), min_red (min red), min_green (min green), min_blue (min blue), max_red (max red), max_green (max green), max_blue (max blue)... | `operation` | how the key value is measured from the rgba colour. |
| `range` | range (A B C D) | vector ×4 | `0, 1, 1, 1` | -1 to 2 | `range` | A B C D of the trapezoid. |
| `channels` | output | text | `alpha` |  | `output` | Layer the op applies to: rgb, rgba, alpha, all, none, <layer> or <layer>.<ch> |
| `mask_channel` | mask | menu | `none` | none, rgba.alpha, rgba.red, rgba.green, rgba.blue |  | Mask channel, e.g. rgba.alpha (none = no mask) |
| `inject` | inject | bool | `false` |  |  | Copy the mask into mask.a for nodes downstream |
| `invert_mask` | invert | bool | `false` |  | `invert_mask` |  |
| `fringe` | fringe | bool | `false` |  |  | Only apply the effect at the edges of the mask |
| `mix` | mix | float | `1` | 0 to 1 | `mix` |  |

### Other knobs (Python, .nk and the assistant; not on the panel)

| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
| `gl_color` | Viewer Controls Color | float ×3 | `0, 0, 0` | 0 to 1 |  |  |
| `postage_stamp_frame` | Static Frame | int | `1` | -2147483648 to 2147483647 |  |  |
| `lifetimeStart` | Lifetime Start | int | `0` | -2147483648 to 2147483647 |  |  |
| `lifetimeEnd` | Lifetime End | int | `100` | -2147483648 to 2147483647 |  |  |
| `useLifetime` | Use Lifetime | boolean | `false` |  |  |  |
| `cached` | Cached | boolean | `false` |  |  |  |
| `bookmark` | Bookmark | boolean | `false` |  |  |  |
| `dope_sheet` | Dope Sheet | boolean | `false` |  |  |  |
| `clone_group` | Clone Group | string |  |  |  |  |
| `link_source` | Link Source | string |  |  |  |  |
| `link_overrides` | Link Overrides | string |  |  |  |  |
| `split_views` | Split Views | string |  |  |  |  |
| `unpremult` | (Un)premult by | enum | `none` | none, rgba.alpha |  |  |
| `invert_unpremult` | invert | boolean | `false` |  |  | (Un)premultiply by 1 - alpha |

## Knob names in .nk scripts

| .nk knob | Knob here |
|---|---|
| `output` | `channels` |

Other .nk knobs use the same name here. See [.nk import](/docs/nuke-users/nk-import).


---
Sources: opencomp_core/nodes/keyer/keyer.py, opencomp_electron/src/components/properties/knobSchema.ts, opencomp_core/nodes/help/keyer.md, opencomp_core/nk/mapping.py
