I would recommend to do the movement in Tick, and just store a target move rate when input triggers.
You also want to scale your move rate by the delta time before applying it, to reduce the effect of frame rate.
Try something like this (adjust your -50 as required, it should be the desired cm/sec):
You could also use a curve, various ways to go about that but I would use a very similar solution to the above, remove the scaling in the input trigger (so target is -1 → 1, and define your curve over the same range and with values also in that range), change FInterpTo to FInterpToConstant and reduce the Interp rate (significantly, to a small fraction of 1) and after the FInterpToConstant evaluate your curve and multiply that by your desired move rate and the time delta.