Graças ao comentário de @ choroba, fui direcionado para o fato de que a saída é armazenada em buffer.
procurando mais eu encontrei este post informando que stdout está em buffer por padrão.
Além disso, olhando para as páginas de manual para wminput não deu solução rápida,
então eu fui procurar uma maneira de forçar um flush do buffer de stdout de jobs para o arquivo - e encontrei o comando stdbuf. stdbuf docs
Qual eu uso como- sudo stdbuf -oL wminput -r -w -c "$controls_config" > "$temp_output" &
onde -o significa stdout
e -L para liberar o buffer em cada nova linha
Obrigado pela dica!