8

C私は次のような入力を読み取るこのプログラムを持っています:

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

Ctrlプログラムを閉じる+Charを除いて、すべての可能なシーケンスを読み取ることができます-それはOKであり、Ctrl+ 、その単純なものはキャッチされません。しかし、私は+をプログラムの保存関数にしたかったのです。どうすればそれができますか?さらに、 +文字を読み取ることは可能ですか?通常の文字として読み取られるため、たとえば、+は。と同じコードで読み取られます。CCtrlSCtrlSAltCharAltAA

4

1 に答える 1

6

あなたの問題は、入力がおそらくターミナルエミュレータによって食べられるということです。

たとえば、Alt+<Whatever>多くの場合、メニューショートカット用に予約されています(たとえば、メニューをAlt+F開くFile)。保持すると、一致する文字が強調表示されることがよくありますAltFで下線が引かれますFile)。

Ctrl+S のために予約されStops all output on screen (XOFF)ています(ここでも、ターミナルエミュレータがそれを行います)。

Alt+<...>コマンドラインアプリケーションでショートカットとして使用する場合。私が懸念している限り、保持Altは受信したキャラクターに影響を与えませんが、コンソールでアクセスするのが難しいフラグを設定するだけです。GUIアプリケーション(Windowsの場合)でも、それはかなりトリッキーであり、GetAsyncState()altが押されたかどうかをチェックするような機能を使用する必要があります。

于 2012-11-15T10:48:30.450 に答える