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

解決済みの質問

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

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

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

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

よろしくお願いします.

投稿日時 - 2009-12-28 20:57:32

QNo.5553572

困ってます

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

普通に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を使うのは間違えてます。)

投稿日時 - 2009-12-28 23:14:12

お礼

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

投稿日時 - 2009-12-30 04:05:20

ANo.1

0人が「このQ&Aが役に立った」と投票しています

あわせてチェックしたい
  • UNIX系のプログラミング言語について ...
  • signalについて ...
  • プログラミング言語 ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら