Current behavior of keyframes is defined by the lock keyframe status. There are four states in the lock keyframe button:
Lock all: past a future keyframes from the current time cursor are enabled.
Lock future: only future keyframes from the current time cursor are enabled.
Lock past: only past keyframes from the time cursor are enabled.
Lock none: Any keyframe (past, or future) are enabled.
What if plus the lock status button the keyframes were enabled/disabled individually? In that way the lock keyframe status would act like today but enabling and disabling all the corresponding keyframes depending on the current position of the time cursor. Also I suggest to split the lock keyframe status button into four button mutually excluded (like the radio buttons). That would allow quickly the desired status without need to loop by all the status of the lock keyframe button.
With that feature the user can select individually which keyframes are going to be affected by the lock keyframe status.
So the four buttons would act like that:
Assumed that the user press the button with the time cursor placed between keyframe 3 and 4. An asterisk means disabled.
Lock all: past a future keyframes from the current time cursor are enabled.
k1, k2, k3, k4, k5
Lock future: only future keyframes from the current time cursor are enabled.
k1, k2, k3, k4*, k5*
Lock past: only past keyframes from the time cursor are enabled.
k1*, k2*, k3*, k4, k5
Lock none: None keyframe (past, or future) are enabled.
k1*, k2*, k3*, k4*, k5*
The user can disable or enable any keyframe after press one of those buttons and obtain this lock status:
k1*, k2, k3*, k4*, k5
So when the user adds a waypoint on the frame between k3 and k4 then only k2 and k5 would keep the pose.
What do you think?
-G