백스페이스 및 CTRL 명령은 물음표를 인쇄합니다.

백스페이스 및 CTRL 명령은 물음표를 인쇄합니다.

젠투를 새로 설치하면서 특별한 문제에 부딪혔습니다. 콘솔 내부의 Backspace키에는 의도된 기능 대신 사각형 내부에 귀여운 작은 물음표가 인쇄되어 있습니다. 또한 Tab명령을 제외하고는 정확히 동일한 방식으로 작동한다는 것을 알았습니다 Ctrl. 설치 중에는 키가 잘 작동했지만 시스템을 제대로 부팅하고 초기 설정을 수행한 후에는 포기하는 것 같았습니다.

localectl상태 출력은 다음과 같습니다.

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

기본적으로 콘솔에서는 Backspace또는 키를 사용할 수 없으며 Ctrlx11은 아직 설치되지 않았습니다. 나는 붙어있다. 어떤 아이디어가 있나요?

답변1

댓글 쓸 공간이 부족해요..

백스페이스 키를 누르면 stty erase '^?'원하는 결과를 얻을 수 있습니다.

CTRL 명령이 작동하지 않는다고 말하면 CTRL+ 를 의미합니까 C? 그렇다면, 그래서 무엇입니까 stty intr ^C? ++를 사용하여 CTRL터미널을 전환 할 ALT수도 있나요 F#? 어쨌든 다음 출력을 붙여넣는 것이 도움이 될 수 있습니다.stty -a

stty 설정과 관련하여 다음 링크가 도움이 될 것입니다. http://docstore.mik.ua/orelly/unix3/upt/ch05_08.htm

또한 질문이 하나 더 있습니다. 해당 명령을 사용하고 있다는 localectl것은 해당 명령을 실행하고 있다는 의미입니까 systemd? systemd아직도 설치 디스크를 사용하고 계십니까 openRC? 나는 그렇게 확신합니다 openRC. 이것이 아마도 OS가 아닌 설치 프로그램에서 작동하는 이유일 것입니다.

답변2

상자 안의 물음표는 유니코드 대체 문자입니다. Linux 콘솔은 두 가지 상황에서 인쇄됩니다.

  • 문자가 현재 로드된 글꼴(512개 문자)에 없거나
  • 콘솔의 디스플레이 컨트롤이 활성화됩니다.

후자는 표시된 것처럼 오랫동안 커널에 있었습니다.이것은 2.2.26의 console.c에 연결됩니다., 관련 설명이 있습니다.

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                  */

이는 다음 중 하나에 의해 설정됩니다.두 개의 이스케이프 시퀀스:

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;

그리고초기화삼분의 일:

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;

마지막(만약 TERM그렇다면linux)는 다음과 같이 쓸 수 있다

tput rmpch

이 기능을 사용하세요:

   exit_pc_charset_mode      rmpch    S3   Exit PC character
                                           display mode

또는

tput sgr0

하지만아니요reset또는 명령 stty.

추가 자료:

관련 정보