やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

cursesライブラリAPIまとめ

 PythoncursesライブラリAPIを分類して一覧にした。

目次

メイン

メソッド 概要
curses.initscr ライブラリを初期化し、画面全体を表すウィンドウオブジェクトを返す。
curses.endwin ライブラリの終了処理をする。
curses.isendwin curses.endwinがすでに呼び出されているならTrueを返す。
curses.wrapper ライブラリを初期化し、任意の呼出可能オブジェクトfuncを呼ぶ。これは初期化や例外処理を簡略化するものである。呼出可能オブジェクトfuncはメインウィンドウstdscrを最初の引数として渡される。その後に他の引数が渡される。cbreakモード、noecho, keypad(True), 端末が色をサポートしている場合は色を初期化する。終了・例外時はcookモード(curses.noraw)に戻し、echoをオンにして、keypad(False)にする。

メタ

メソッド 概要
curses.longname 現在の端末を説明するterminfoロングネームフィールドを含むバイトオブジェクトを返す。最大長 128 文字。curses.initscrを先に呼び出すこと。
curses.meta 引数がTrueなら8ビット文字を入力することを可能にする。Falseなら7 ビットの文字のみを許可する。
curses.termattrs 端末がサポートするすべてのビデオ属性を論理和した値を返す。
curses.termname 環境変数TERMの値を返す。バイト オブジェクトとして、14 文字に切り捨てられる。
curses.tigetflag terminfo機能名のうち引数capnameに対応するブール機能の値を整数として返す。capnameがブール機能でないなら-1を返す。キャンセルされているなら0を返す。
curses.tigetnum terminfo機能名のうち引数capnameに対応する数値機能の値を整数で返す。capnameが数値機能でないなら-2、キャンセルされているなら-1を返す。
curses.tigetstr terminfo機能名のうちcapnameに対応する文字列機能の値をバイトオブジェクトとして返す。capnameが 文字列機能でない/キャンセルされている/存在しないならNoneを返す。
curses.tparm 指定されたパラメータを使用して引数のバイト オブジェクトstrインスタンス化する。strterminfoデータベースから取得したパラメータ化された文字列である必要がある。たとえばtparm(tigetstr("cup"), 5, 3)b'\033[6;4H'を返す。
curses.use_env curses.initscr, [curses.newterm][]の前に呼び出さすこと。引数がFalseならLINES,COLUMNSはterminfo データベースに指定されたlines,columnsの値を使う。
Trueなら環境変数LINES, COLUMNS およびCOLUMNS (デフォルトで使用する) の値が設定されていたり、curses がウィンドウ内で動作して (LINESCOLUMNSが設定されていないとウィンドウのサイズを使う)を使う。
メソッド 概要
curses.beep 注意を促す短い音を鳴らす。
curses.flash スクリーンを点滅する。画面を色反転して短時間で戻す。curses.beepとおなじく注意を促す。
curses.napms 引数msミリ秒間スリープする。
curses.typeahead 先読みチェックに使うためのファイル記述子fdを指定します。引数fd-1の場合、先読みチェックは行われない。

curses ライブラリはスクリーンを更新する間、先読み文字列を定期的に検索することで "行はみ出し最適化 (line-breakout optimization)" を行う。入力が得られ、かつ入力は端末からのものである場合、現在行おうとしている更新は window.refreshcurses.doupdateを再度呼び出すまで先送りする。この関数は異なるファイル記述子で先読みチェックを行うように指定することができる。

例外

メソッド 概要
curses.error curses ライブラリ関数がエラーを返した際に送出される例外。

定数

 定数を参照。

端末

メソッド 概要
curses.setupterm 端末を初期化する。termは端末名を表す文字列、またはNone。省略された場合はTERM環境変数が使用される。fdは初期化シーケンスが送信されるファイル記述子。省略か-1のときはファイル記述子sys.stdoutが使用される。
curses.baudrate 端末の出力速度をビット/秒で返す。
curses.curs_set カーソルの視認性を設定する。0=非表示invisible, 1=通常normal/visible, 2=強調very visible。端末がその視認性をサポートしていないなら例外が発生する。多くの端末では通常モードは下線カーソル、強調モードはブロック カーソル。
curses.delay_output 出力に引数msミリ秒の一時停止を入れる。
curses.erasechar 消去文字を返す。Unixではcursesプログラムの制御 tty のプロパティであり、curses ライブラリ自体によって設定されない。
メソッド 概要
curses.getsyx 仮想画面カーソルの現在座標をタプルとして返す 。window.leaveok(True)なら(-1, -1)を返す。
curses.setsyx 仮想画面カーソルを引数y,xに設定する。両方とも-1ならwindow.leaveok(True)に設定される。
メソッド 概要
window.leaveok 引数がTrueならカーソルは「カーソル位置」ではなく、更新時に置かれます。これにより、可能な限りカーソルの動きが減少します。可能であれば、カーソルは非表示になります。
curses.is_term_resized resize_term() によってウィンドウ構造が変更されている場合に True を、そうでない場合は False を返します。
curses.resizeterm 現在の標準ウィンドウのサイズを指定された寸法nlines,ncolsに変更し、curses ライブラリが使用する、その他のウィンドウサイズを記憶しているデータ (特にSIGWINCHハンドラ) を調整します。
curses.resize_term ほとんどの作業を実行するcurses.resizetermによって使用されるバックエンド関数。ウィンドウのサイズを変更するとき、拡張された領域を空白で埋める。呼び出し側アプリケーションは、これらの領域に適切なデータを入力する必要がある。すべてのウィンドウのサイズを変更しようとする。ただし、パッドの呼び出し規則により、アプリケーションとの追加の対話なしにこれらのサイズを変更することはできない。

モード

保持/復元

保存 復元 概要
curses.def_prog_mode curses.reset_prog_mode 現在の端末属性を"プログラム" モードとして保存/復元する。
curses.def_shell_mode curses.reset_shell_mode 現在の端末属性を"シェル" モードとして保存/復元する。
curses.savetty curses.resetty 現在の端末モードを保存/復元する。
モード 概要
プログラム 稼動中のプログラムが curses を使う際のモードである 。
シェル プログラムが curses を使わない際のモードである 。

変更

ON OFF 概要
curses.nl curses.nonl newlineモード。リターンキー入力を復帰改行に変換するか否か。
curses.cbreak curses.nocbreak cbreakモード。tty行バッファリングをOFFにするか否か。
curses.raw curses.noraw rawモード。行バッファリング、割り込み (interrupt)、終了 (quit)、一時停止 (suspend)、フロー制御キーはオフになる。文字は一文字づつ渡される。
curses.echo curses.noecho echoモード。echo モードに入ります。echo モードでは、各文字入力はスクリーン上に入力された通りにエコーバックされます。
メソッド 概要
curses.halfdelay ハーフ遅延モードで使用される。これは、ユーザーが入力した文字がプログラムですぐに使用できるという点でcbreakモードに似ている。ただし、1/ 10秒ブロックした後、何も入力されていない場合は例外が発生する。引数は1255。このモードを終了するためにcurses.nocbreakを使う。
メソッド 概要
curses.filter 1行1字ずつ入力するようになる。curses.initscrの前に呼び出すこと。LINES=1になる。機能にはclearcupcudcud1cuu1cuuvpaが無効になる。home文字列はcrの値に設定される。その結果、カーソルが現在の行に制限され、画面の更新も制限される。画面の残りの部分に触れることなく、一度に1文字ずつ行編集できるようにするために使用する。

メソッド 概要
curses.newwin 新しいウインドウを返す。
curses.newpad 新しいパッド返す。パッドはウインドウとほぼ同じ。端末の物理サイズ以上をもった仮想領域をもつことができる。そのためwindow.refreshするとき表示範囲を示す引数として6つ渡す必要がある。
window.subwin 新しいサブウインドウを返す。
window.derwin window.subwinと同じだが、開始位置はウィンドウの原点からの相対位置である。
window.subpad 新しいサブパッドを返す。

 Pythoncursesにはwindow/padという便利なクラスがある。これは表示領域を自動的に計算してくれる。

クラス 横幅超過 高さ超過
window 折り返す 非表示
pad 指定する 指定する

 windowは端末の物理的な幅/高さが上限である。padは仮想領域をもっており、端末の物理サイズより大きな領域をもてる。そのかわり描画するときはwindow.refreshでその範囲を指定せねばならない。

window.refresh()
pad.refresh(開始行,開始列,終端行,終端列,高さ,幅)

 端末サイズを越えた行数を表示したいことがよくある。そのときは以下のようにして開始行を変数にする。なぜか高さは-1しないとエラーになる。_curses.error: prefresh() returned ERR

pad_start_line = 0
pad.refresh(pad_start_line,0,0,0,curses.LINES-1,curses.COLS)
コード 概要
curses.LINES 端末の物理的な行数
curses.COLS 端末の物理的な列数

更新

メソッド 概要
window.refresh 物理ディスプレイを更新する。pad(curses.newpad,window.subpad)のときは表示領域を示す6つの引数が必要である。開始行,開始列,終了行,終了列,高さ,幅。
window.noutrefresh 更新予約する。これを呼んだあとにwindow.addchなどで画面を編集し、curses.doupdateした時点で物理ディスプレイを更新する。
curses.doupdate 予約された更新をする。これを呼ぶまえにwindow.noutrefreshで更新予約し、window.addchなどで画面を編集したあとにこれを呼ぶと、その時点で物理ディスプレイを更新する。

 ふつうは以下のようなワークフローで画面を更新する。

  1. window.addchなどで書き込む
  2. window.refreshで物理デバイスを更新して書込を反映する

 ただし、window.addchのように1文字単位で書き込むたびに物理デバイスを更新すると処理効率が悪い。そこで複数のwindow.addchなどによる書き込みが終わったあと、まとめて更新したい。そのときのワークフローが以下である。

  1. window.noutrefreshで物理デバイス更新を一時停止する
  2. window.addchなどで書き込む(複数)
  3. curses.doupdateで物理デバイスを更新して書込を反映する

 負荷をさげるため更新頻度をおとしたい。このとき以下の関数が使える。

メソッド 概要
window.is_linetouched 引数lineで指定した行が、最後にwindow.refreshを呼んだ時から変更されているならTrueを返すlineが現在のウィンドウ上の有効な行でないならcurses.error例外を送出する。
window.is_wintouched ウィンドウが最後にwindow.refreshを呼んだ時から変更されているならTrueを返す。
window.untouchwin ウィンドウ内のすべての行を、最後にwindow.refreshを呼んだ際から変更されていないものとしてマークする。
if window.is_wintouched():
    window.refresh()

 逆に、再描画を要求するなら以下。

メソッド 概要
window.redrawln 引数beg行からnum行数だけ再描画を要求する。
window.redrawwin ウィンドウ全体を更新 (touch) し、次のwindow.refresh呼び出しで再描画されるようにする。
メソッド 概要
window.touchline 引数start行から始めてcount行数だけ変更されたふりをする。changedが指定されている場合、影響を受ける行が変更済み (changed=True) または変更なし (changed=False) としてマークされているかどうかを指定します。
window.touchwin 描画を最適化するために、すべてのウィンドウが変更されたかのように振舞わせる。
メソッド 概要
window.syncdown このウィンドウの上位のウィンドウのいずれかで更新(touch)された各場所をこのウィンドウ内でも更新します。このルーチンはwindow.refreshから呼び出されるので、手動で呼び出す必要はほとんどない。
window.syncok 引数がTrueなら、その後ウィンドウに変更があるたびにwindow.syncupが自動的に呼び出される。
window.syncup ウィンドウ内で更新 (touch) した場所を、上位のすべてのウィンドウ内でも更新する。

 window.syncupjavascriptでいうところのイベントバブリングだと思われる。

描画

クリア

メソッド 概要
window.erase ウインドウをクリアする。("バックグラウンド"文字で埋め尽くす)
window.clear 次にwindow.refreshが呼び出された際にすべてのウィンドウを再描画する。
window.clearok 引数値がTrueなら次にwindow.refreshが呼び出された際にすべてのウィンドウをクリアする。
window.clrtobot カーソル位置からウィンドウの端までをクリアする。
window.clrtoeol カーソル位置から行末までをクリアする。
window.delch 指定した位置にある文字を削除する。
window.deleteln カーソルの下にある行を削除する。後続の行はすべて1行上に移動する。
メソッド 概要
curses.noqiflush INTRQUITSUSP文字に関連付けられた入力キューと出力キューの通常のフラッシュは行われない。ハンドラが終了した後、割り込みが発生しなかったかのように出力を継続したい場合は、シグナルハンドラでこの関数を呼び出すことができる。
curses.qiflush 引数がFalseならcurses.noqiflushと同じ。Trueか省略なら制御文字が読み出された最にキューはフラッシュされる。

出力

メソッド 概要
window.addch 文字を出力する。
window.addnstr 最大n字までの文字列を出力する。
window.addstr 文字列を出力する。

 上記APIで書き込んだ内容はバッファに溜め込まれる。window.refreshすることで物理端末に書き込む。

メソッド 概要
window.echochar 引数である文字chと属性attrを付与し、即座にwindow.refreshを呼ぶ。
メソッド 概要
curses.putp tputs(引数str, 1, putchar)と等価。現在の端末における、指定されたterminfo機能の値を出力する。window.addstrなどとの違いは、常に標準出力へ送られる点である。

属性

メソッド 概要
window.standout A_STANDOUT属性をオンにする。
window.standend A_STANDOUT属性をオフにする。端末によっては、この操作ですべての属性をオフにする副作用が発生する。

メソッド 概要
curses.start_color 色を使うために呼び出さねばならない。curses.initscrの直後に呼ぶこと。色最大数COLORS,ペア最大数COLOR_PAIRS,COLOR_BLACKなど基本8色のグローバル変数を初期化する。
curses.can_change_color 端末に表示される色をプログラマが変更できるか否かを返す。
curses.color_content 赤、緑、青(RGB)成分を返す。引数color_number0COLORS - 1の間でなければならない。指定された色のR、G、B値を含む3タプルを返す。これは01000の間でなければならない。
curses.color_pair 指定された色ペアIDにあたる属性値を返す。最初の256色のペアのみがサポートされる。この属性値はA_STANDOUTA_REVERSEなど 他のA_*属性と組み合わせることができる。 curses.pair_numberはこの関数に対応する。
curses.has_colors 端末が色表示を行えるか否かを返す。
curses.init_color 色の定義を変更する。引数color_numberにあたるIDに、引数r,g,bの色をセットする。color_number0COLORS - 1r,g,b01000。この関数はcurses.can_change_colorTrueのときだけ有効である。
curses.init_pair 色ペアの定義を変更する。引数pair_numberは変更する色ペア番号、引数fgは前景色の番号、引数bgは背景色の番号。pair_numberの値は1COLOR_PAIRS - 10は背景=黒、文字=白に固定されており変更できない。-1curses.use_default_colorsを呼び出した後なら使える。
curses.use_default_colors この機能をサポートする端末の色のデフォルト値の使用を許可する。アプリケーションの透過性をサポートする。色番号-1にはデフォルトの色が割り当てられる。この関数を呼び出した後、たとえば、カラーペアxを、背景=デフォルト、前景=赤に初期化する。init_pair(x, curses.COLOR_RED, -1)
curses.pair_content 引数pair_numberにあたる色ペアのタプルを返す。(fg, bg)0COLOR_PAIRS - 1
curses.pair_number 引数attrに対する色ペアの番号を返す。curses.color_pairはこの関数の逆に相当する。

背景

メソッド 概要
window.attrset "バックグラウンド"の属性セットをattrに設定する。初期値は0(属性なし)。
window.attroff 現在のウィンドウに書き込まれたすべての内容に対し "バックグラウンド" に設定された属性attrを除去します。
window.attron 現在のウィンドウに書き込まれたすべての内容に対し "バックグラウンド" に属性attrを追加します。
メソッド 概要
window.bkgdset "バックグラウンド"の文字と属性を指定したものに設定する。
window.bkgd "バックグラウンド"の文字と属性を指定したものに変更する。
window.getbkgd ウィンドウの現在の背景文字と属性のペアを返す。
メソッド 概要
window.chgat 指定した位置と範囲に、指定した属性をセットする。

 名前の統一性がない。setが前にあったり後ろにあったりする。関数名なら動詞は名詞より先にするなど統一してほしい。あと、_が単語の間にあったりなかったりするのもウザい。bkgd,curs,termなど名詞の省略もわかりにくい。

罫線

メソッド 概要
window.border ウインドウの端に罫線を書く。
curses.window.box ウインドウの端に罫線を書く。
window.hline 開始位置y,x、文字ch、長さnで作られる水平線を書く。
window.vline 開始位置y,x、文字ch、長さnで作られる垂直線を書く。
引数 説明 window.border curses.window.box
ls ACS_VLINE vertch(引数)
rs ACS_VLINE vertch(引数)
ts ACS_HLINE horch(引数)
bs ACS_HLINE horch(引数)
tl 左上の角 ACS_ULCORNER ACS_ULCORNER
tr 右上の角 ACS_URCORNER ACS_URCORNER
bl 左下の角 ACS_LLCORNER ACS_LLCORNER
br 右下の角 ACS_LRCORNER ACS_LRCORNER

編集

メソッド 概要
curses.killchar ユーザーの現在の行キル文字を 1 バイトのバイト オブジェクトとして返す。
window.inch ウィンドウ内で引数y,xの位置にある文字を返す。下位 8 ビットが本来の文字で、それより上のビットは属性。
window.insch 引数y,xの位置に文字chを属性attrで描画し、行のxからの内容を1文字分右にずらす。
window.insdelln 引数nlines行を指定されたウィンドウの現在の行の上に挿入する。その下にあるnlines行は失われる。負数を指定するとカーソルのある行以降のnlinesを削除し、削除された行の後ろに続く内容が上に来る。その下にあるnlinesは消去される。現在のカーソル位置はそのまま。
window.insertln カーソルの下に空行を 1 行入れる。それ以降の行は 1 行づつ下に移動する。
window.insnstr 引数y , x , str , n [ , attr ]。文字列をカーソルの下にある文字の前に (一行に収まるだけ) 最大n文字挿入する。nがゼロまたは負の値の場合、文字列全体が挿入される。カーソルの右にあるすべての文字は右に移動し、行の左端にある文字は失われる。カーソル位置はy,xが指定されていた場合はそこに移動するが、その後は変化しない。
window.insstr 引数y , x , str [ , attr ]。文字列を (行に収まるだけ) カーソルより前に挿入する。カーソルの右側にある文字はすべて右にシフトし、行の右端の文字は失われる。カーソル位置はy,xが指定されていた場合はそこに移動するが、その後は変化しない。
window.instr 引数y , x [ , n ]。現在のカーソル位置、または指定されている場合はy, xからはじまるウィンドウから抽出された文字のバイト オブジェクトを返す。文字から属性が削除される。nが指定されているなら最大n文字の長さの文字列を返す(末尾のNULを除く)。

リサイズ

メソッド 概要
window.resize curses ウィンドウの記憶域を、引数のnlines,ncolsで指定したサイズに調整する。サイズが現在の値より大きいなら、ウィンドウのデータは現在の背景設定 (window.bkgdset) で埋められマージされる。
curses.update_lines_cols LINESCOLSを更新する。マニュアルでスクリーンのサイズを変更したことを検知するために有用。バージョン 3.5 で追加。

移動

メソッド 概要
window.mvderwin ウィンドウを親ウィンドウの中で移動する。引数y,xの位置へ。ウィンドウのスクリーン相対となるパラメタ群は変化しません。このルーチンは親ウィンドウの一部をスクリーン上の同じ物理位置に表示する際に用いられます。
window.mvwin ウィンドウの左上角が引数(new_y, new_x)なるように移動する。

スクロール

メソッド 概要
window.scroll スクリーンまたはスクロール領域を上に引数で指定したlines行だけスクロールする。
window.scrollok ウィンドウのカーソルがウィンドウの端またはスクロール領域の外に移動したときの動作を制御する。これは、一番下の行での改行アクションの結果、または最後の行の最後の文字を入力した結果。引数がFalseならカーソルを一番下の行の上に残される。Trueならウィンドウは1行上にスクロールされる。端末で物理的なスクロール効果を得るにはwindow.idlokも呼び出す必要がある。
window.setscrreg スクロール領域を引数topからbottomに設定する。

重ね合わせ

メソッド 概要
window.overlay 引数destwin [ , sminrow , smincol , dminrow , dmincol , dmaxrow , dmaxcol ]。ウィンドウをdestwinの上に重ね書き (overlay) する。ウィンドウは同じサイズである必要はなく、重なっている領域だけが複写される。この複写は非破壊的。これは現在の背景文字がdestwinの内容を上書きしないことを意味する。

複写領域をきめ細かく制御するために、引数の第二形式を使える。sminrow,smincolは元のウィンドウの左上の座標で、他の変数はdestwin内の矩形を表す。
window.overwrite 引数destwin [ , sminrow , smincol , dminrow , dmincol , dmaxrow , dmaxcol ]destwinの上にウィンドウの内容を上書き (overwrite) する。ウィンドウは同じサイズである必要はなく、重なっている領域だけが複写される。この複写は破壊的。これは現在の背景文字がdestwinの内容を上書きすることを意味する。

複写領域をきめ細かく制御するために、引数の第二形式を使える。sminrow,smincolは元のウィンドウの左上の座標で、他の変数はdestwin内の矩形を表す。

データ

メソッド 概要
window.enclose 引数y,xで与えられた座標をスクリーン原点から相対的なものとし、ウィンドウの中に含まれるならTrueを返す。スクリーン上のウィンドウの一部がマウスイベントの発生場所を含むかどうかを調べる上で便利。
window.getbegyx ウィンドウ左上角の座標をあらわすタプル(y, x)を返す。
window.getmaxyx ウィンドウの高さおよび幅を表すタプル(y, x)を返す。
window.getparyx 親ウィンドウに対するこのウィンドウの開始座標をタプル(y, x)として返す。親がないなら(-1, -1)を返す。
window.getyx ウィンドウ左上角からの相対で表した現在カーソル位置をタプル(y, x)で返します。

シリアライズ/デシリアライズ

メソッド 概要
window.putwin ウィンドウのデータをファイルオブジェクトに書込。
curses.getwin [curses.putwin][]で出力されたデータを読み込んでそのウィンドウを生成・初期化し、そのオブジェクトを返す。
window.encoding encodeメソッドの引数エンコーディング。たとえばwindow.subwin()などでサブウィンドウを生成した時、エンコーディング属性は親ウィンドウから継承する。デフォルトでは、そのロケールエンコーディングが使用される(locale.getpreferredencoding参照)。バージョン 3.3 で追加。

カーソル

メソッド 概要
window.cursyncup ウィンドウのすべての親ウィンドウについて、現在のカーソル位置を反映するよう更新する。
window.move カーソルを引数(new_y, new_x)に移動する。

入力

キー

getch系

メソッド 概要
curses.flushinp すべての入力バッファをフラッシュする。ユーザによって入力されているが、まだ処理されていないすべての文字を破棄する。
window.keypad 引数がTrueなら一部のキー (キーパッド、ファンクション キー) によって生成されたエスケープ シーケンスは curses によって解釈される。Falseなら入力ストリームにそのまま残される。
curses.has_key キー値chをとり、現在の端末タイプがその値のキーを認識できる場合にTrueを返す。
window.getch キーボード入力から文字を受け付ける。返される整数はASCII範囲である必要はないことに注意。ファンクション キー、キーパッド キーなどは255より大きい数字で表される。遅延なしモードでは-1を返し、入力がないとキーが押されるまで待機する。
window.get_wch ワイド文字を取得する。ほとんどのキーの場合は文字を返す。ファンクション キー、キーパッド キー、その他の特殊キーの場合は整数を返す。遅延なしモードでは、入力がない場合に例外を発生させる。バージョン 3.3 で追加。
curses.ungetch 引数chを押して、次の[curses.getch][]がそれを返すようにする。1つのみ有効。
curses.unget_wch 引数chを押して、次のwindow.get_wchがそれを返すようにする。1つのみ有効。

keycode系

メソッド 概要
window.getkey window.getchとおなじく文字を取得する。ただし整数の代わりに文字列を返す。ファンクション キー、キーパッド キー、およびその他の特殊キーは、キー名を含むマルチバイト文字列を返す。遅延なしモードでは、入力がない場合に例外を発生させる。
curses.keyname 引数kの番号にあたるキー名を返す。印刷可能な ASCII 文字のときはその文字を返す。コントロール キーの組み合わせの名前は、キャレット ( b'^') とそれに続く対応する印刷可能な ASCII 文字で構成される 2 バイトのバイト オブジェクトである。Alt キーとキーの組み合わせ (128255)b'M-'の名前は、プレフィックスとそれに続く対応する ASCII 文字の名前で構成されるバイト オブジェクトです。
curses.unctrl 引数である文字chの印刷可能な表現であるバイトオブジェクトを返す。制御文字は、キャレットの後に文字が続く形で表される。b'^C'など。印字文字はそのまま。

delay系

メソッド 概要
window.nodelay 引数がTrueならwindow.getchは非ブロッキングになる。
window.notimeout 引数がTrueならエスケープ シーケンスはタイムアウトしない。Falseなら数ミリ秒後にエスケープ シーケンスは解釈されず、入力ストリームにそのまま残る。
window.timeout ウィンドウのブロックまたは非ブロック読み取り動作を設定する。引数delayが負の場合、ブロック読み取りが使用される (入力を無期限に待機)。delayがゼロなら、その後、非ブロック読み取りが使用され、待機している入力がないならwindow.getch-1を返す。delayが正数なら、window.getchdelayミリ秒の間ブロックし、その時間の終わりにまだ入力がないなら-1を返す。
curses.set_escdelay キーボードで入力された個々のエスケープ文字と、カーソルおよびファンクション キーによって送信されたエスケープ シーケンスを区別するために、エスケープ文字を読み取った後に待機するミリ秒数を設定する。バージョン 3.9 で追加。
curses.get_escdelay curses.set_escdelayによって設定された値を取得する。バージョン 3.9 で追加。

TAB

メソッド 概要
curses.set_tabsize タブ文字をウィンドウに追加するときに、curses ライブラリがタブ文字をスペースに変換するときに使用する列数を設定する。バージョン 3.9 で追加。
curses.get_tabsize curses.set_tabsizeによって設定された値を取得しますset_tabsize()。バージョン 3.9 で追加。

編集

メソッド 概要
curses.has_ic 端末が文字の挿入/削除機能を持つか否かを返す。
curses.has_il 端末が行の挿入/削除機能を持つか否かを返す。
window.getstr プリミティブな行編集機能を使用して、ユーザーからバイト オブジェクトを読み取る。
メソッド 概要
window.idcok 引数がFalseなら文字挿入/削除機能を使わなくなる。Trueなら有効になる。デフォルトで有効。
window.idlok 引数がTrueなら行編集機能の使用を試みる。それ以外なら無効になる。
window.immedok 引数がTrueならウィンドウで変更があると更新するようになる。window.refreshが自動で呼び出される。デフォルトでは無効。

マウス

メソッド 概要
curses.getmouse マウスの状態を返す。(id, x, y, z, bstate)の5タプル値で。idはデバイスID、x,y,zは座標、bstateはボタン押下などイベント状態のビット値。つぎの定数が1つ以上ORされた値である。n14までのボタン番号である。BUTTONn_PRESSED,BUTTONn_RELEASED,BUTTONn_CLICKED,BUTTONn_DOUBLE_CLICKED,BUTTONn_TRIPLE_CLICKED,BUTTON_SHIFT,BUTTON_CTRL,BUTTON_ALT
curses.mouseinterval ボタンが押されてから離されるまでの時間をマウスクリック一回として認識する最大の時間間隔をミリ秒で設定する。デフォルトは200ミリ秒。
curses.mousemask 報告されるマウスイベントを設定し、タプル(availmask, oldmask)を返す。availabilitymaskは指定されたマウス イベントのどれを報告できるかを示す。失敗したら0を返す。oldmaskは以前に指定された値。この関数が呼び出されないとマウスイベントは報告されない。
curses.ungetmouse 引数id,x,y,z,bstateで与えられた状態データのKEY_MOUSEイベントを入力キューにプッシュする。