[feat] escape now cancels input