2012-11-15 3 views
8

私はこのような入力を読み取りCでこのプログラムを持っている:CでCtrl + Sを読むことができないのはなぜですか?

cod1 = getch(); 
    if (kbhit()) 
    cod2 = getch(); 

私はプログラムを閉じCtrlキー + C、を除くすべてのCtrlキー + シャア可能性のある配列を、読むことができます - それはOKです。Ctrl + S、それは簡単ではありません。しかし、Ctrl + Sを私のプログラムの保存機能にしたいと思っていました。どうすればいい?さらに、読むことが可能ですAlt + 文字文字ですか? Alt + のような通常の文字で表示されるため、Aと同じコードが使用されています。

+2

Control-S = XOFF(出力の中断)になるように、おそらくあなたのttyが設定されています。 –

+0

conio.hライブラリを使用しないようにしてください。公式ではなく、Visual StudioのようなIDESでは動作しません。 –

答えて

6

あなたの問題は、おそらく入力が端末エミュレータで食べられることです。

たとえば、Alt+<Whatever>は、多くの場合、メニューショートカット用に予約されています(Alt+FFileメニューを開きます)。あなたがAltFゲットの下にFile)を持っていれば、マッチするキャラクターはしばしば騎乗します。

Ctrl+Sis reservedStops all output on screen (XOFF)(これも端末エミュレータであります)。

コマンドラインアプリケーションのショートカットとしてAlt+<...>を使用しています。限り私が保持していると考えているAltは、受け取ったキャラクタに影響しません、それは単にコンソールでアクセスするのが難しいフラグを設定します。 GUIアプリケーション(Windowsの場合)でも非常に扱いにくく、altが押されたかどうかを確認するにはGetAsyncState()のような関数を使わなければなりません。

+3

'stty -ixon'で端末のXON/XOFFをオフにすることができます。 – hlovdal

関連する問題