dポイントプレゼントキャンペーン実施中!

unixでのプログラミングについてです.

コンソールで,キーボードから[ctrl+英文字]が入力されたことが
分かるプログラムを作りたいのですが,
どのようにすればいいのでしょうか.

例えばctrl+Cやctrl+Zならば,signal.hを利用すれば入力された事がわかりますが,
シグナルを送るキーでない,ctrl+Lなどはどのようにすれば
押されたことが分かりますか.

よろしくお願いします.

A 回答 (1件)

普通に1文字入力すれば、Ctrl+Aなら'\x01'、Ctrl+Bなら'\x02'、…が入ってきます。

Ctrl+Lは'\x0c'
Ctrl+Cなんかも、端末をrawモードにしてsignalを発生させないようにしておけば、普通のキー入力で'\x03'として取得できます。

(というか、signal システムコールは、プロセス間通信で端末などからのsignalを捕捉するものです。
そのため、INTRをCtrl+C以外に割り当ててるような環境だと、
signal(SIGINT)では、正しくCtrl+Cを検出できません。
純粋なキー操作としての「[Ctrl]を押しながら[C]」の検出にsignalを使うのは間違えてます。)
    • good
    • 0
この回答へのお礼

有り難うございます.
解決しました.

お礼日時:2009/12/30 04:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!