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
ということは、そのコマンドを実行しているという意味ですかsystemd
?systemd
それでもインストールディスクを使用していますか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
。
追加資料:
- console_codes - Linuxコンソールのエスケープと制御シーケンス
- terminfoビルディングブロッククローン+SGR,含む
rmpch
- terminfo - 端末機能データベース