# Keyframes Menu

{% embed url="<https://youtu.be/ZLSLTczl6AU>" %}

{% hint style="success" %}
Right-click anywhere in the timeline view to show options for selected keyframes.
{% endhint %}

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2Fa7sSWyDRJOD4eLwhzncv%2Fimage.png?alt=media&#x26;token=02bbcd57-a9c9-4dca-8fd3-c73eb74a8abb" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
The keyframe operations work the same in both the [Track View](https://axongenesis.gitbook.io/timeflow/user-guide/timeflow-view/track-view) and [Graph View](https://axongenesis.gitbook.io/timeflow/user-guide/timeflow-view/graph-view).
{% endhint %}

## Clear Selected Channels

This deletes the keyframes in all of the selected channels. If no channels are selected, then only the keyframes on the channel clicked or currently displayed graphs are removed.

## Cut / Copy / Paste

Use standard copy and paste functions with keyframes and other items in Timeflow. Keyframes can be pasted onto the same channel at a different time, or from one channel to another. This provides a way to duplicate or move animation between channels and objects.

{% hint style="success" %}
**Copy**

Use the keyboard shortcut **Control + C** to copy selected keyframes and/or track sections. This also includes keyframe tangents.
{% endhint %}

{% hint style="success" %}
**Paste**

Use the keyboard shortcut **Control + V** to paste copied keyframes and/or track sections. This pastes the keyframes at the current time.&#x20;
{% endhint %}

{% hint style="success" %}
**Paste (keep time)**

Use the keyboard shortcut **Control + Shift + V** to paste keyframes while preserving their original time. This keeps the world time of keyframes, accounting for any time offsets.
{% endhint %}

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2Fej6DRtdDL1sKoy4bL2Xz%2Fimage.png?alt=media&#x26;token=3810da95-e085-4a5c-b8ff-2553fba06886" alt=""><figcaption><p>To paste keyframes into another channel, select the target channel in the list view. The example above shows Paste (keep time) from one channel to another</p></figcaption></figure>

{% hint style="warning" %}

#### Multi-channel Copy / Paste

It is possible to copy large sets of keyframes and tracks across multiple channels and paste them to other channels. This works as long as the number of selected channels matches those that were copied from. \
\
If there is any mismatch between the number of channels copied and the selected channels pasted to, an error message is displayed. This still pastes data to the channels that do match, so be sure to undo if it is not the desired result.\
\
![](https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FZvGdtbbD6bBIHw1wo0M1%2Fimage.png?alt=media\&token=701d050b-9017-444e-86fc-ad1192a2d684)

If this error is encountered, double-check the selected channels and retry. Alternatively, keyframes may be copied-pasted for each channel separately. &#x20;
{% endhint %}

### Paste Tangents

When using Bezier curves, the tangents of keyframes may be copy-pasted onto other keyframes. This applies to all selected keyframes, looping through the keyframes copied. If only 1 keyframe was copied, then all selected keyframes get the same set of tangents.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F5IyiJr4mtS9xoZYbG64X%2Fimage.png?alt=media&#x26;token=7fb1c6f1-5152-480c-9881-354db9752cf2" alt=""><figcaption><p>Copying the tangents of 1 Bezier keyframe</p></figcaption></figure>

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FSj8A0heFMvcOaO6okdTS%2Fimage.png?alt=media&#x26;token=a21566f9-4be4-4e5a-9492-9d4246226dbe" alt=""><figcaption><p>Pasting the same tangents to all selected keyframes.</p></figcaption></figure>

See [Bezier](https://axongenesis.gitbook.io/timeflow/timeflow-view/graph-view#bezier) interpolation for more details.

## Delete

Deletes the selected keyframes and/or tracks.

{% hint style="success" %}
Use the keyboard shortcut **Delete** or **Backspace** to delete selected items. Note that the Track View must have keyboard focus, or other items such as channels or objects may be deleted instead. &#x20;
{% endhint %}

### Snap Time (Quantize)

This applies [grid snapping](https://axongenesis.gitbook.io/timeflow/user-guide/timeflow-view/toolbar/grid-and-snap) to all selected items. This can be useful for [musical timing](https://axongenesis.gitbook.io/timeflow/user-guide/timeflow-view/toolbar/musical-timing) or creating stop motion. When quantization is applied, the selected items are snapped to the nearest grid line.&#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FFQ1UzSc53OtL6CI21GKv%2Fimage.png?alt=media&#x26;token=ebea9400-2398-4964-8319-8ac240994a3c" alt=""><figcaption><p>Before quantization. Adjust the grid and snap settings as needed.</p></figcaption></figure>

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FcHdnhRWHRyrThLDfmQ6D%2Fimage.png?alt=media&#x26;token=c2a23dbb-6c3c-45df-a3ba-37fc50426348" alt=""><figcaption><p>After quantization keyframes and track start times are snapped to the grid.</p></figcaption></figure>

{% hint style="success" %}
Use the keyboard shortcut **Control + U** to quantize the time of selected keyframes and tracks.
{% endhint %}

### Snap Values

This snaps all keyframe values to the grid. Each selected keyframe value is rounded to the nearest grid increment. It has no affect on [events](https://axongenesis.gitbook.io/timeflow/reference/behaviors/automation/event). When applied to tracks, this snaps the duration of each track section to the grid units in time.&#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2Fy9lhcnUemu9lq9AC1ljH%2Fimage.png?alt=media&#x26;token=087d6a10-b81a-4df4-b038-a15aa74d7ee4" alt=""><figcaption><p>Before value quantization.  Zoom out or in to adjust the value grid to snap to.</p></figcaption></figure>

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F5iv81yNHxu2JHPpL9xid%2Fimage.png?alt=media&#x26;token=eee6888c-b0f5-4226-a001-dca0ead1c709" alt=""><figcaption><p>After value quantization.</p></figcaption></figure>

{% hint style="success" %}
Use the keyboard shortcut **Shift + Control + U** to quantize the values of all selected keyframes. Also use this with tracks to snap their duration to the time grid.
{% endhint %}

### Mirror Time

This reverses the order in time of the selected keyframes, tracks, and events. This calculates time relative to the start and end time of the selection. &#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FobTc7JyKJkCWV61aRcCU%2Fimage.png?alt=media&#x26;token=fc3f0935-030f-4143-b4fd-5b44b447b3f4" alt=""><figcaption><p>Selected keyframes before Invert Time.</p></figcaption></figure>

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2F6FADW3UwiUP3FFdZ77Pl%2Fimage.png?alt=media&#x26;token=20fdfe76-9d16-425a-8581-8e1fb3b4c5ea" alt=""><figcaption><p>After Inver Time is applied.</p></figcaption></figure>

### Mirror Values

This inverts the selected keyframe values, relative to the value range of the selection. This only applies to keyframe values and has no effect on tracks or events

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FW7xBlJrGqC1fubqb4qei%2Fimage.png?alt=media&#x26;token=2e0aff69-177f-4d65-95fc-b9dec43d6602" alt=""><figcaption><p>Mirrored values (based on the previous screenshot above)</p></figcaption></figure>

## Loop Selected

Enables looping on the selected channels and sets the range to the currently selected keyframes. Two or more selected keyframes are required to use the command.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FNK6kLiBrREKfWHwZDd2R%2Fimage.png?alt=media&#x26;token=e0bd78a5-021b-495f-b308-e60abbeeaef8" alt=""><figcaption><p>Looping selected keyframes. The original graph is drawn in dark grey for reference.</p></figcaption></figure>

## Loop All

Enables looping for the selected channels and sets the loop range to the first and last keyframes in each channel.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FK0LXoneL8iwVBjqMm8vF%2Fimage.png?alt=media&#x26;token=0611e7e7-04f1-4c1d-b6e5-d5138efa681d" alt=""><figcaption><p>Looping all kefyrames in a channel</p></figcaption></figure>

## Clear Loop

Disables looping on the selected channels.

For further documentation on channel looping features, please see the [Graph View](https://axongenesis.gitbook.io/timeflow/timeflow-view/graph-view#looping-animation) documentation.

## Interpolation

This submenu applies interpolation modes to the selected keyframes, depending on the channel type and interpolation mode used on the channel.&#x20;

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FgogbD5FXistTWmjJTCIl%2Fimage.png?alt=media&#x26;token=8c9d4668-9264-4199-8a58-e913dff98597" alt=""><figcaption></figcaption></figure>

If the keyframes selected are not on a channel with Bezier interpolation, then only the Linear and Hold keyframe modes are listed in this menu.  Please see [Interpolation Modes](https://axongenesis.gitbook.io/timeflow/timeflow-view/graph-view#interpolation-modes) for more details.

### Show / Hide Tangents

The tangents for each keyframe may be shown or hidden to prevent modification. This does not disable the tangents, but simply stops showing them in the graph view. This can be helpful when you want to avoid editing tangents on all or specific keyframes.

## Enable / Disable

This enables or disables selected keyframes. Disabled keyframes are greyed out and ignored as if they don't exist, but may be re-enabled any point. This is helpful when trying out variations in animations or to temporarily disable areas without having to delete keyframes.

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2Fe7tnLHg3O6pju66JAQlH%2Fimage.png?alt=media&#x26;token=4f527e4b-2a05-4cff-ac38-23b67ee99aa2" alt=""><figcaption><p>Disabled keyframes are shown in grey. They are ignored by animations, but may be re-enabled at any point.</p></figcaption></figure>

<figure><img src="https://2067910529-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FC3dOuetlQfYgK5FPUKgn%2Fuploads%2FJAtz7JVb1ymI7MnIvrtw%2Fimage.png?alt=media&#x26;token=36778ebd-1d75-485a-9033-ec3cbca75a60" alt=""><figcaption><p>Disabled track section and keyframes are in grey.</p></figcaption></figure>

{% hint style="info" %}
Disabled keyframes may still be selected and edited, however some editing features such as Bezier handles are off for disabled keyframes. Full editing capability is easily restored by re-enabling the keyframes.
{% endhint %}

{% hint style="success" %}
Use the keyboard shortcut **0** (zero) to toggle the enabled state for selected keyframes and track sections.
{% endhint %}
