Ctrl + M envia o mesmo caractere (RET) que a tecla Enter no terminal. Os programas não têm como diferenciá-los, portanto, essas chaves não podem ser configuradas separadamente.
Ctrl + Q já é usado para XON por padrão, por isso não pode ser usado pelo Bash, mas você ainda deve ser capaz de usá-lo no tmux, porque o tmux usa o modo de entrada bruto.
Um programa GUI pode ler do teclado, a tecla m foi pressionada com o modificador Ctrl e usar Ctrl + m como um atalho, mas um shell ou qualquer programa terminal recebe as combinações Ctrl + Key como caracteres ascii de 0 a 26
Ctrl+@ = 0
Ctrl+A = 1
Ctrl+B = 2
e assim por diante. Você pode tentar isso para ver os valores
cat ctrlkeys <<EOF
^A^B^C^D^E^F
EOF
od -c ctrlkeys
0000000 001 002 003 004 005 006 \n
Para inserir os valores, pressione Ctrl + v antes de Ctrl + [a-f] para obtê-los não interpretados como um valor bruto.
Quando você olha para a tabela ascii (7) você pode ver os códigos de controle em uma tabela com os caracteres correspondentes @ .. Z à esquerda. Por exemplo
015 13 0D CR '\r' (carriage ret) 115 77 4D M
ou
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
A próxima camada que interpreta os códigos de controle antes do bash é stty (alterar e imprimir as configurações do terminal)
stty -a
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
veja stty (1) para os significados de lnext
ou start
e stop
.
Veja também readline (3) como bash e outros programas GNU cli usam essa biblioteca para controlar as linhas de entrada e, claro, o bash (1) / READLINE, a seção readline da página de manual do bash.
Nota: XYZ (NUM) significa página de manual XYZ da seção NUM, então o resultado de man NUM XYZ
.