You can use the Ripple command to control whether keys are pushed along the timeline or not when you move, scale, or cut, copy, and paste regions.
When Ripple is on and you perform any of these operations, the keys are pushed to the right (forward in time) or left (backward in time) in the timeline. Any offset between the region and the other keys is preserved. For example, if a region of 10 frames is scaled to 15 frames to the right, the keys on the right are pushed in that direction by 5 frames.
As well, keys automatically snap to frame boundaries: you cannot have a key between frames.