3. Keyframes

Keyframes are the main tool to control your animation with. It’s therefore really important that they provide us with as much information about our animation as possible.

(1) Currently the Keyframes have a thin border and no fill when there is only one Keyframe—(2) half-filled when the Keyframe is at the start or end—(3) and fully-filled if the Keyframe is in between other Keyframes. This gives three different looks for the same Keyframe. Let's make all Keyframes just have a border and fill them when they are selected. (4) Selected Keyframes stay the same color and also be a bit lighter than unselected Keyframes.

Left: Original   Right: Unified Look

(5) Often the Keyframes look scattered across the timeline. (6) To show where animation starts and ends we could add a thick line that connects Keyframes that change value. This way it becomes clear where movement happens such as in a transition, for example.

Left: Original   Right: Keyframe Connections

Adobe Edge Animate does this in a similar way

(7) The iconic shape of the Keyframe sits centered on the start point of every Frame. But when you zoom into the Timeline, it becomes hard to see how much space one Frame actually takes up. (8) A solution might be to add a darker area behind the Keyframe. See how it lines up with the Out Point of the second layer? This only applies for the closest three zoom levels of the Timeline.

Left: Original   Right: Frame Duration

Above: Original   Below: Connections & Frame Duration

Sometimes you have so many Keyframes—it becomes difficult to know what does what—especially after opening the project later on. Like Layers, we could color Keyframes to highlight a group of them. A walk cycle, for instance, could be its own color group. 

Left: Original   Right: Colored Keyframes

One of the most used features is the "Keyframe Velocity" window. It shows the amount of easing that comes in—and goes out of a Keyframe. This is valuable information to know but right now it's hidden in the "Keyframe Velocity" window. 

It'd make a huge difference to get better access to this information—especially directly in the Timeline ( right next to the keyframe when selected ) or the "Info Panel". Adobe Edge Animate does this with the values of Keyframes.

Here's how I think we could extend the Velocity data to the Keyframes.

Suggested Shortcuts:

Left Option Key = Tweak incoming Velocity
Right Option Key = Tweak outgoing Velocity

Scripts to adjust velocity:

Ease and Wizz from Ian Haigh
Keysmith from Michael Delaney

When you select Keyframes from multiple layers and you want to paste them somewhere else in time, After Effects duplicates the Layers that you have selected. It'd be great if we could copy and paste Keyframes from different Layers. This might seem like a small request but the amount of times people run into this daily makes it more important. To copy Keyframes one by one is very time consuming.

Current solution AE scripts:
Paste Multiple Keyframes

Suggested Shortcuts

Option+Drag = Duplicate Keyframes, Layers and Effects.
Option+Shift+Drag = Duplicate Keyframes in reverse time and Copy Layers with Property Links.
( Previously Option+Drag ) now, Command+Drag = Expand or contract a group of keyframes 

The "Easy Ease In" Keyframe icon only shows up when the Ease value is exactly 33.33% — 0.01%. When the Ease changes to 66.66% — 0.01% or any other value, the icon changes to a regular Ease Keyframe. This is inaccurate feedback because the easing is still only applied to the Incoming Velocity. 

It doesn't really matter if both sides of the Keyframe have easing. Maybe three different icons for easing is confusing and we can reduce it to one icon. When we remove "Easy Ease In" and "Easy Ease Out" we also have two new shortcuts available that we could use for Hold Keyframes ( Shift-F9 ) and to back to a Linear Keyframe. ( Command-Shift-F9 ) 

Update from Zak Tietjen. 
Linear Keyframe shortcut Command+Click
Hold Keyframe shortcut Command+Option+Click

The Spatial Interpolation makes a nice bezier position path, but can sometimes create (A) weird, unexpected loops. Many of which are often invisible—hiding behind the (B) Tangents. This happens when the Position Keyframes have the same value over time. The solution can be a function that resolves these loops between keys that have the same value.

These loops are even more confusing for people new to After Effects.

Bezier Loop on position path

In the "Keyframe Assistant" you can find "Exponential Scale". This creates Keyframes on every frame and should be replaced by an "Exponential Scale Expression" that does the same to keep your animation dynamic. When people do need Keyframes, they can convert the Expression to Keyframes in the "Keyframe Assistant".

Script by: Aaron Fisher

if (num_keys >1 && key(num_keys).time > time && key(1).time <= time){
     k = nearest_key(time).index;
     if (key(k).time <= time) {
         a = k;
     } else {
         a = k-1;
     b= a+1;
     a_val = key(a)[0];
     b_val = key(b)[0];
     a_time = key(a).time;
     b_time = key(b).time;
     if(a_val == 0) {
         a_val = .1;
     if (b_val == 0) {
         b_val = .1;
     x = Math.log(b_val) / Math.log(a_val);
     exp = linear(time, a_time, b_time, 1, x);
     val = Math.pow(a_val, exp);