ファイヤープロジェクト
エスケープシーケンス
2003-07-20T15:13+09:00   matsu
多くの端末では,ESCキーや矢印キーなどを押すとエスケープシーケンスが送信される.これを処理してみる.
ESCキーや矢印キーなどはキーパッドのキーらしい....どのキーがキーパッドのキーなのかはよくわからない.とにかく端末のキーボード上のキーなんだろう.そして,キーパッドのキーを押すと多くの場合エスケープシーケンスが送信される.エスケープシーケンスは端末によってことなるので,コードではマクロを使用する.エスケープシーケンスは/usr/include/curses.hでいろいろdefineされている.また,cursesではキーパッドはデフォルト無効になっているので,
int keypad(WINDOW *win, bool bf);
の第二引数にTRUEを指定して有効にする.
キーパッドのキーを判定してどのキーかを表示するサンプルを作成してみた.
ファンクションキーは何故かF12しか認識できなかった.あとまだ認識できてない文字がある気がする./usr/include/curses.hを見ていると,なんかシフトキーとの組み合わせに関するものもあるようだが,全てが網羅されているわけではないようだ.コントロールキーとの組み合わせはどうするのか等もよく分からない.余談だが同ヘッダによるとcbreak,nocbreakの別名関数としてそれぞれ,
crmode()
nocrmode()
があるらしいが,manには登録されていないようだ.
matsu(C)
Since 2002
Mail to matsu