のgetlineを使用してユーザ入力(CIN、mystrvar)を読み出して解釈された、いくつかのコントロールキーは機能しません。コントロールキー(左矢印)は、標準入力に送信される(^ [[D)に代えて
例:
User input: abc^[[Dd
Text: abd
User input: asc
Read bytes: 7
#0: 97
#1: 98
#2: 99
#3: 27
#4: 91
#5: 68
#6: 100
私は、B、C、そして左矢印とDを入力しました。 "Text:"は最初の3文字を明示的に書き出し(cout)、ポインタを左に設定してcを上書きします。 "asc"は、長さ(mystrvar.size())とascii値を出力する簡単な関数です。
"stty -ctlecho"(システム(...))を呼び出すと、左矢印キーを使用できますが、入力に制限されません(「ユーザー入力:」を上書きできます)。制御コードはまだ私のプログラムに送られています。
これは、Windows上では発生しません - 私は普通(歴史のためにも、アップ/ダウン)の矢印キーを使用することができます。
ここで何が間違っていますか?
編集:私は主にlxterminal、ターミナル、xtermの、konsoleの、gnome-terminalの(端末など)やbash、kshの、tcshの(シェルなどの間に違いがあるようには思えないのFedora 15を使用しています)。これらのキーの動作方法
だから私は何とか端末を設定する必要がありますか?どうすればいい? – basic6
@ basic6 'rlwrap'は' readline'機能を有効にする簡単なツールです。あなたのプラットフォームで利用可能かもしれません。 –
@ basic6:私はあなたが使っている端末が分からないので、私は少しも考えていません。それはとにかく追加の質問でなければなりません。そして恐らくSO上ではなく、恐らく端末の詳細なマニュアルを読んだ後でなければなりません。 – PlasmaHH