top

TOP  RSS  Login

Perl - Term::Screen

Term::Screen - search.cpan.org の和訳。


名前

Term::Screen - スクリーン上の位置配置を行う Term::Cap ベースのシンプルな perl モジュール

書式

   require Term::Screen;

   $scr = new Term::Screen;
   unless ($scr) { die " Something's wrong \n"; }
   $scr->clrscr();
   $scr->at(5,3);
   $scr->puts("this is some stuff");
   $scr->at(10,10)->bold()->puts("hi!")->normal();
      # you can concatenate many calls (not getch)
   $c = $scr->getch();      # doesn't need Enter key 
   ...
   if ($scr->key_pressed()) { print "ha you hit a key!"; }

概要

Term::Screen は、Term::Cap と同様にスクリーンの位置配置を行う非常にシンプルなモジュールである。stty を用いる Unix 向けに設計されたものであるが、new コンストラクタ中での eval によってそれらへの依存とは切り離されている。従って MS-DOS、ioctl などのスクリーンにおいても直接的なブロックを受けていない入力を得るように実装した継承モジュールを作成することができる。これは Curses を置き換えるものではない -- it has no memory。

This was written so that it could be easily changed to fit nasty systems, and to be available first thing.

入力関数である getch, key_pressed, echo, noecho は標準的な Unix システムで動作するように実装されている。それらは生の非エコーモードを設定し自動フラッシュを可能にするために 'stty' を使用している。それら全ては、このクラスが新たな定義によって簡単に継承されるために 'eval' される。

Term::Screen は "required" されるように設計された。そのため上記のようなオブジェクト構文が使用される。ファンクションキーの置き換えには癖があり、遅延時間が設定されない(著者は気にせず使っている)。エスケープ文字を受け取る多くの端末では、その後に他の文字(一般的に別のエスケープ文字である)を打つ必要がある。

インターフェイス

Term::Screen は、文字端末位置の設定と文字読み取りを行う非常に少ない種類のコマンド群を持つ。

new()
スクリーンの初期化を行う。スクリーンはクリアされないが、カーソルはホーム位置へと移動される。
term(term)
オブジェクトによって使用されている Term::Cap オブジェクトを設定あるいは取得を行う。
rows(rows)
端末の列数を返す、あるいは設定する。
cols(cols)
端末の行数を返す、あるいは設定する。
at(row,col)
(0,0) を左上として、(row,col) へとカーソルを移動する。- if the spot is illegal does whatever 'cm' in termcap does, since that is what it uses.
resize(r,c)
新しい列数・行数をスクリーンに指定する。r と c を指定しないことで stty あるいは termcap から新たにチェックされた値を得ることができる。Term::Screen は内部的にはサイズ変更を知り得ないが、この関数を用いてスクリーンサイズのチェックと更新を行うことにより可能になる。
normal()
全てのハイライト(太字、逆転)を無効にする。
bold()
termcap における md - 通常太字を有効にする。
reverse()
termcap における mr - 逆転を有効にする。these last two default to whatever is available.
clrscr()
スクリーンをクリアしホーム位置へとカーソルを移動する。
clreol()
最終行をクリアする - カーソルは移動しない。
clreos()
スクリーンの最後をクリアする - 右及び下、カーソルは移動しない。
il()
カーソル位置と同じ行の前に空白行を挿入する。それ以下の行は下へ移動する。
dl()
カーソル位置と同じ行を消去する。それ以下の行は上へ移動する。
ic_exists()
文字挿入オプションが利用可能かどうか。
ic()
現在の位置に文字を挿入し、残りを右へ移動する。
dc_exists()
文字削除オプションが存在し利用可能かどうか。
dc()
現在の位置の文字を削除し、残りを左へ移動する。

以下は I/O 関数である。これらは標準的で便利な単一文字入力の方法を提供する。getch はキーが押されたときに単一の文字あるいはファンクションキーの名前を返す。唯一の例外として、ファンクションキーシークエンスで始まる文字が打たれた場合がある。この場合、getch は次の文字が fn キーであるかを待ち続ける。通常これはエスケープキーであり、そのためエスケープキーを二度打つ必要がある。単に文字を得るためには、perl 標準の 'gets' 関数を使用すること。望むのであれば、echo を行う必要がある。

puts(str)
str を出力しスクリーンオブジェクトを返す。$scr->ar(10,0)->puts("Hi!")->at(0,0) のようにして使われる。望むのであれば単に print を使用しても良い。
getch()
raw モードで文字を返す。ファンクションキーは互換性のある名前、例えば up キーは "ku" として返される。返される名前が何であるかは get_fn_keys 関数を参照すること。これは次の文字、可能であれば fn キー文字列を待ち、そのため getch から抜け出すためには 'esc' 'esc' とタイプする必要がある。なぜならば 'esc' は通常ファンクションキーが続くものであるからである。より "低水準" の getch を用いるために、perl の getc を用いることもできる。さらなる情報には Screen::get_fn_keys() を参照すること。
def_key('name','input string')
ユーザ自身のファンクションキーシークエンスを定義する。'name' は getch により返されるべき値である。'input string' は文字通り fn キーが送るものである。これは他の入力定義よりも優先される。デフォルトの値は xterm、rxvt における get_fn_keys 関数で定められている。
key_pressed([sec])
入力され処理を待っている文字がある場合に真を返す。待つ時間を秒数で渡すこともできる。
echo()
getch に入力をスクリーンへエコーするように指定する。(デフォルト)
noecho()
getch に入力をスクリーンへエコーしないように指定する。
flush_input()
入力バッファをクリアし、文字を削除する。
stuff_input(str)
キーストロークされたものと同様に文字を入力バッファへ入れる。これは getch が利用するバッファにのみ有効で、下部の getc には影響しない。

著者

Term::Screen.pm by Mark Kaehny (kaehny@execpc.com) Currently maintained by Jonathan Stowe <jns@gellyfish.com>

ライセンスとコピーライト

Please see the README file in the distribution kit for the license details for this module.

参照

Term::Cap, termcap, curses, stty, select

Last modified:2009/08/20 22:20:17

LQ

0.358039