LilyPond Internals Reference: 2.2.59 Key_engraver

### 2.2.59 Key_engraver

Engrave a key signature.

Music types accepted:

key-change-event

Properties (read)

> `createKeyOnClefChange` (boolean)

>   Print a key signature whenever the clef is changed.

> `explicitKeySignatureVisibility` (vector)

>   ‘`break-visibility`’ function for explicit key changes. ‘`\override`’ of the `break-visibility` property will set the visibility for normal (i.e., at the start of the line) key signatures.

> `extraNatural` (boolean)

>   Whether to typeset an extra natural sign before accidentals that reduce the effect of a previous alteration.

> `keyAlterationOrder` (list)

>   An alist that defines in what order alterations should be printed. The format is `(step . alter)`, where step is a number from 0 to 6 and alter from -2 (sharp) to 2 (flat).

> `keyAlterations` (list)

>   The current key signature. This is an alist containing `(step . alter)` or `((octave . step) . alter)`, where step is a number in the range 0 to 6 and alter a fraction, denoting alteration. For alterations, use symbols, e.g. `keyAlterations = #`((6 . ,FLAT))`.

> `lastKeyAlterations` (list)

>   Last key signature before a key signature change.

> `middleCClefPosition` (number)

>   The position of the middle C, as determined only by the clef. This can be calculated by looking at `clefPosition` and `clefGlyph`.

> `printKeyCancellation` (boolean)

>   Print restoration alterations before a key signature change.

Properties (write)

> `keyAlterations` (list)

>   The current key signature. This is an alist containing `(step . alter)` or `((octave . step) . alter)`, where step is a number in the range 0 to 6 and alter a fraction, denoting alteration. For alterations, use symbols, e.g. `keyAlterations = #`((6 . ,FLAT))`.

> `lastKeyAlterations` (list)

>   Last key signature before a key signature change.

> `tonic` (pitch)

>   The tonic of the current scale.

This engraver creates the following layout object(s):

KeyCancellation and KeySignature.

`Key_engraver` is part of the following context(s): GregorianTranscriptionStaff, KievanStaff, MensuralStaff, PetrucciStaff, Staff and VaticanaStaff.

#### Internals Reference v2.22.2 (stable-branch).