Infelizmente, não existe uma solução única para isso para o cliente emacs em execução em uma janela de terminal. O problema surge porque o caractere <TAB> é definido como CTRL-I , então CTRL-<TAB> significaria CTRL-CTRL-I e, portanto, não é possível.
Quando o emacs está sendo executado no modo de janela, ele recebe sua entrada diretamente das teclas pressionadas. Quando é executado dentro de um terminal (ou se torna as coisas mais claras porque não funciona - em uma conexão ssh), a entrada vem do terminal I / O. É o programa terminal que lê os eventos de chave de hardware e gera o fluxo de entrada (não muito preciso, mas destaca o problema). O Emacs lê o fluxo de entrada e converte em eventos de pressionamento de tecla. Como o emacs não pode acessar os eventos de chave de hardware, ele é limitado pelas restrições do ambiente do terminal.
Para alguns programas de terminal, pode ser possível gerar uma sequência de entrada personalizada (por exemplo, quando você pressiona F1 ) quando pressiona CTRL-<Tab> , que pode ser interpretado pelo Emacs como CTRL-<Tab> . Um exemplo de snippet para fazer isso para CTRL-<Home> é:
(when (not window-system)
; Fixup missing console keys
(define-key key-translation-map (kbd "M-[ 4 ^") (kbd "C-<end>"))
(define-key key-translation-map (kbd "M-[ 1 ^") (kbd "C-<home>")))
Neste exemplo, M-[ 1 ^ é a sequência de entrada gerada quando eu pressiono CTRL-<Home> no meu terminal.
Não é uma solução muito portátil (eu uso principalmente putty para acessar minha caixa de linux a partir do Windows, e não permite isso), então sua milhagem pode variar.
No final, decidi usar outra ligação de chave no meu .emacs e deixar a memória muscular de CTRL-<TAB> morrer.