Se você estiver usando xterm
, poderá enviá-lo para enviar um CSI
(0x9B) em vez da sequência \e[
definindo o recurso booleano eightBitControl. Por exemplo, inicie o xterm assim:
xterm -xrm '*eightBitControl:true'
Você pode definir esse recurso permanentemente editando o arquivo de recursos específico do aplicativo XTerm (o Ubuntu parece colocar isso em /etc/X11/app-defaults
, mas acho que /usr/share/X11/app-defaults
é mais padrão).
Mas esteja avisado: isso basicamente irá quebrar o seu terminal até você consertar todos os seus atalhos de teclado.
Quanto à questão mais geral, acho que é mais difícil do que parece à primeira vista. O console do Linux é muito bem projetado para gerar códigos de caracteres de oito bits (para que ele funcione com o UTF-8). A partir de um console real (ou seja, não usando X), você pode obter scancodes "brutos", mas você teria que fazer toda a lógica de mapeamento de teclado (que é o que o X faz, na verdade). Você pode usar os recursos de mapeamento de teclado X para gerar alguns códigos específicos para combinações de alt + ctrl + letra, mas não sei onde você os incluiria na sequência de codificação de oito bits. Eu sinto sua dor, no entanto:)