Comandos Backspace e CTRL imprimem pontos de interrogação

2

Eu me deparei com um problema peculiar em uma nova instalação do gentoo. Dentro do console, a tecla Backspace imprime um pequeno ponto de interrogação adorável inscrito em um quadrado em vez de sua função pretendida. Além disso, descobri que a Tab se comporta exatamente da mesma maneira, além de quaisquer comandos Ctrl . As teclas funcionaram perfeitamente bem durante a instalação, mas depois de iniciar o sistema corretamente e executar a configuração inicial, elas parecem ter desistido.

localectl status gera o seguinte:

System Locale: LANG=en_US.utf8 
               LC_COLLATE=C 
    VC Keymap: us 
   X11 Layout: us 
    X11 Model: pc105+inet 
  X11 Options: terminate:ctrl_alt_bksp

Basicamente, não consigo usar as teclas Backspace ou Ctrl no console e ainda não instalei o x11. Estou preso. Alguma idéia?

    
por faustian.breaks 03.01.2015 / 22:49

2 respostas

0

Ficou sem espaço como comentário ..

Para retroceder, stty erase '^?' deve obter o que você deseja.

Quando você diz que os comandos CTRL não estão funcionando, você quer dizer CTRL + C ? Se sim, e quanto a stty intr ^C ? Você ainda pode alternar os terminais com CTRL + ALT + F # ? Em qualquer caso, pode ser útil colar a saída de stty -a

O link a seguir deve ser útil quando se trata de configurações stty: link

Além disso, outra pergunta: como você está usando o comando localectl , isso significa que você está executando systemd ? O disco de instalação usou systemd ou openRC ? Tenho certeza que é openRC e pode ser por isso que funcionou no instalador e não no sistema operacional.

    
por 12.02.2015 / 22:28
0

O ponto de interrogação em uma caixa é o caractere de substituição Unicode. O console do Linux imprimirá isso em dois casos:

  • o caractere não está na fonte atualmente carregada (512 glifos) ou
  • o recurso de controles de exibição foi ativado no console.

O último tem estado no kernel há algum tempo, como visto em este link para console.c em 2.2.26 , que tem o comentário relevante:

1869                 /* If the original code was a control character we
1870                  * only allow a glyph to be displayed if the code is
1871                  * not normally used (such as for cursor movement) or
1872                  * if the disp_ctrl mode has been explicitly enabled.
1873                  * Certain characters (as given by the CTRL_ALWAYS
1874                  * bitmap) are always displayed as control characters,
1875                  * as the console would be pretty useless without
1876                  * them; to display an arbitrary font position use the
1877                  * direct-to-font zone in UTF-8 mode.
1878                  */

e é definido por duas seqüências de escape :

1051                         case 11: /* ANSI X3.64-1979 (SCO-ish?)
1052                                   * Select first alternate font, lets
1053                                   * chars < 32 be displayed as ROM chars.
1054                                   */
1055                                 translate = set_translate(IBMPC_MAP,currcons);
1056                                 disp_ctrl = 1;
1057                                 toggle_meta = 0;
1058                                 break;
1059                         case 12: /* ANSI X3.64-1979 (SCO-ish?)
1060                                   * Select second alternate font, toggle
1061                                   * high bit before displaying as ROM char.
1062                                   */
1063                                 translate = set_translate(IBMPC_MAP,currcons);
1064                                 disp_ctrl = 1;
1065                                 toggle_meta = 1;
1066                                 break;

e redefinir por um terceiro :

1040                         case 10: /* ANSI X3.64-1979 (SCO-ish?)
1041                                   * Select primary font, don't display
1042                                   * control chars if defined, don't set
1043                                   * bit 8 on output.
1044                                   */
1045                                 translate = set_translate(charset == 0
1046                                                 ? G0_charset
1047                                                 : G1_charset,currcons);
1048                                 disp_ctrl = 0;
1049                                 toggle_meta = 0;
1050                                 break;

O último (se TERM for linux ) pode ser roteirizado como

tput rmpch

usando este recurso:

   exit_pc_charset_mode      rmpch    S3   Exit PC character
                                           display mode

ou

tput sgr0

mas não os comandos reset ou stty .

Leitura adicional:

por 25.05.2016 / 00:21