I would set up a nested event system.
Try something like
int distanceToJump = (some number)
On key down
> on key pressed
>loop from (1 to distanceToJump)
> character set x to (self.X + 1)
Then you can check if you have hit a wall because you increment by 1 in a very short amount of time. It will still look like you teleported even though it isn't instantaneous.
I hope this answers your question!