This is the final code I came up with, added by some help from ChatGPT.
startKeyframe = 4;
endKeyframe = 6;
rangeDurationOut = key(endKeyframe).time – key(startKeyframe).time;
if (time < key(startKeyframe).time) {
// Play through keyframes from keyframe(1) until startKeyframe
t = linear(time, inPoint, key(startKeyframe).time, key(1).time, key(startKeyframe).time);
} else if (time < key(startKeyframe).time + rangeDurationOut) {
// Pause at startKeyframe until rangeDurationOut is reached
t = key(startKeyframe).time;
} else {
// Continue playing from startKeyframe until endKeyframe
t = linear(time, outPoint – rangeDurationOut, outPoint, key(startKeyframe).time, key(endKeyframe).time);
}
valueAtTime(t);