解決済みの質問
unixでのプログラミングについてです.
コンソールで,キーボードから[ctrl+英文字]が入力されたことが
分かるプログラムを作りたいのですが,
どのようにすればいいのでしょうか.
例えばctrl+Cやctrl+Zならば,signal.hを利用すれば入力された事がわかりますが,
シグナルを送るキーでない,ctrl+Lなどはどのようにすれば
押されたことが分かりますか.
よろしくお願いします.
投稿日時 - 2009-12-28 20:57:32
普通に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
0人が「このQ&Aが役に立った」と投票しています