• ベストアンサー

c言語.ctrl文字の読み取り

unixでのプログラミングについてです. コンソールで,キーボードから[ctrl+英文字]が入力されたことが 分かるプログラムを作りたいのですが, どのようにすればいいのでしょうか. 例えばctrl+Cやctrl+Zならば,signal.hを利用すれば入力された事がわかりますが, シグナルを送るキーでない,ctrl+Lなどはどのようにすれば 押されたことが分かりますか. よろしくお願いします.

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.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を使うのは間違えてます。)

goopth
質問者

お礼

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

関連するQ&A