バックスペースおよびCTRLコマンドは疑問符を印刷します。

バックスペースおよびCTRLコマンドは疑問符を印刷します。

Gentooを新たに設置しながら、特別な問題に遭遇しました。コンソール内の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ということは、そのコマンドを実行しているという意味ですかsystemdsystemdそれでもインストールディスクを使用していますかopenRC?私はそう確信していますopenRC。これがおそらくOSではなくインストーラで動作する理由です。

答え2

ボックス内の疑問符はUnicode代替文字です。 Linuxコンソールは2つの状況で印刷されます。

  • 文字が現在読み込まれているフォント(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                  */

これは、次のいずれかで設定されます。2つのエスケープシーケンス:

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

追加資料:

関連情報