Ctrl + M envia o mesmo caractere (RET) da 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 o XON por padrão, portanto, não pode ser usado pelo Bash, mas você ainda deve poder usá-lo no tmux, porque o tmux usa o modo de entrada bruta.
Um programa da GUI pode ler do teclado que a tecla m foi pressionada com o modificador Ctrl e usar Ctrl + m como atalho, mas um shell ou qualquer programa do terminal recebe as combinações de teclas Ctrl + Key da mesma forma que 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 + [af] para que eles não sejam interpretados como um valor bruto.
Quando você olha para a tabela ascii (7), 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 (altere e imprima 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 lnextou starte stop.
Veja também o readline (3), pois o 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 a página de manual XYZ da seção NUM, portanto, o resultado de man NUM XYZ.
ALT + mé ainda mais conveniente.