Para responder à pergunta no título.
A maneira de simular uma tecla pressionada em um terminal é através do TIOCSTI
Por exemplo:
insert() {
perl -le 'require "sys/ioctl.ph";
ioctl(STDIN, &TIOCSTI, $_) or
die "$!\n" for split "", join " ", @ARGV' "$@"
}
No entanto, no caso de tmux
, se você fizer isso:
insert $''
dentro de um painel tmux
, que irá inserir o caractere ^B
no buffer de entrada do terminal daquele painel, não qualquer um dos terminais anexados à sessão atual tmux
está lendo sua entrada de.
A solução seria:
insert $'' < "$(tmux lsc -F '#{client_tty}' -t '' | head -n 1)"
Onde:
tmux lsc -F '#{client_tty}' -t ''
informa o (s) terminal (s) conectado (s) à sessão de corrida.
Mas em sistemas Linux modernos, isso não funcionará (você receberá um erro Operação não permitida ) porque, por motivos de segurança, o TIOCSTI ioctl só pode ser emitido para seu controlando o terminal (e o terminal de controle de um shell interpretando um script em um painel tmux
seria o terminal do painel).
Você teria que perguntar a tmux
para fazer isso, e não tenho certeza de que isso é possível.