wapmorgan/ncursesobjects

此库以面向对象的方式实现了ncurses功能。

0.9.7 2017-01-15 21:59 UTC

This package is auto-updated.

Last update: 2024-09-12 03:43:44 UTC


README

这是一个提供面向对象接口ncurses功能的php库。

Composer package Latest Stable Version Total Downloads License Latest Unstable Version

  1. 基础知识
  2. 安装
  3. 简单应用示例
  4. API
  5. 安装ncurses绑定

基础知识

Structure

  1. 有4个主要类

    1. Ncurses - 与Ncurses交互的主要对象。
    2. Window - 代表ncurses窗口的对象。
    3. Panel - 代表窗口面板的对象。
    4. Terminal - 与终端交互的对象。

    以及4个额外的类

    1. Colors - Ncurses中所有可用的颜色。
    2. Keys - 所有键。
    3. MouseEvents - 所有鼠标事件。
    4. WindowStyle - 用于创建窗口样式的辅助工具。
  2. 工作原理

    1. ncurses初始化
    2. 创建窗口并填充文本
    3. 调用refresh()函数
    4. 返回到步骤 2
  3. 阅读评论并查看示例

  4. Ncurses在PHP教程: http://devzone.zend.com/173/using-ncurses-in-php/ (俄语版本)。

  5. Ncurses教程: http://invisible-island.net/ncurses/ncurses-intro.html,文档:http://pubs.opengroup.org/onlinepubs/007908799/xcurses/curses.h.html

安装

通过Composer安装

composer require wapmorgan/ncursesobjects dev-master

简单应用示例

  1. 创建主对象并设置它

    $ncurses = new Ncurses;
    $ncurses
    	->setEchoState(false)
    	->setNewLineTranslationState(true)
    	->setCursorState(Ncurses::CURSOR_INVISIBLE)
    	->refresh();
  2. 创建主窗口

    $mainWindow = new Window;
    $mainWindow
    	->border()
    	->title('Hello! Today is '.date('d.m.Y'))
    	->refresh();
  3. 在主窗口的中心创建一个10x10的小窗口

    $window = Window::createCenteredOf($mainWindow, 10, 10);
    $window
    	->border()
    	->moveCursor(3, 4)
    	->drawStringHere('OK!')
    	->refresh();
  4. 等待输入以查看窗口

    while (true) {
    	$ncurses->inputChar();
    sleep(1);
    }
  5. 关闭ncurses会话并清除屏幕(如果您的脚本应在正常模式下显示任何数据,则需要手动执行此操作)

    unset($ncurses);

API

主类

Ncurses

  • __construct() - 初始化Ncurses会话
  • getTerminal() - 返回Terminal的实例
  • setEchoState(bool $state) - 设置回显状态
  • setNewLineTranslationState($state) - 设置nl状态
  • setCursorState($state) - 设置光标状态。适用值包括
    • Ncurses::CURSOR_INVISIBLE
    • Ncurses::CURSOR_NORMAL
    • Ncurses::CURSOR_VISIBLE
  • moveOutput($y, $x) - 移动光标
  • refresh() - 刷新主窗口
  • beep() - Beep(使终端发声)**
  • getCh() - 从键盘读取字符
  • unGetCh($ch) - 反转函数
  • updatePanels() - 刷新虚拟屏幕以反映堆栈中面板之间的关系
  • insertChar($char) - 在当前位置插入字符
  • insertDeleteLines($count) - 插入dl字符
  • __destruct() - 结束Ncurses会话

Terminal

  • hasKey($keycode) - 检查键
  • hasColors() - 检查颜色支持
  • hasIC() - 检查插入和删除功能
  • hasIL() - 检查行插入和删除功能
  • allAttributes() - 返回所有终端属性
  • termName() - 返回终端的简称
  • longName() - 返回终端的完整名称

Window

  • __construct($columns = 0, $rows = 0, $x = 0, $y = 0) - 创建新窗口
  • static createCenteredOf(Window $parentWindow, $columns, $rows) - 在另一个窗口中创建新窗口,位于其中心
  • getWindow() - 返回原始ncurses资源
  • getSize(&$columns, &$rows) - 返回包含大小和填充参数的数组,参数为窗口大小
  • border($left = 0, $right = 0, $top = 0, $bottom = 0, $tl_corner = 0, $tr_corner = 0, $bl_corner = 0, $br_corner = 0) - 使用不同的字符绘制边框
  • borderStyle($style) - 使用其中一种样式绘制边框
  • refresh() - 刷新窗口
  • title($title) - 绘制窗口标题
  • status($status) - 绘制窗口状态
  • erase() - 擦除窗口
  • moveCursor($x, $y) - 移动光标
  • drawStringHere($string, $attributes = 0) - 带有属性的字符串绘制
  • makePanel() - 创建新的窗口面板
  • getPanel() - 返回窗口面板

面板

  • show() - 显示面板
  • hide() - 隐藏面板
  • putOnTop() - 将面板置于顶部
  • putOnBottom() - 将面板置于底部

附加类

颜色

  • Colors::COLOR_BLACK
  • Colors::COLOR_WHITE
  • Colors::COLOR_RED
  • Colors::COLOR_GREEN
  • Colors::COLOR_YELLOW
  • Colors::COLOR_BLUE
  • Colors::COLOR_CYAN
  • Colors::COLOR_MAGENTA

  • Keys::KEY_F1
  • Keys::KEY_F2
  • Keys::KEY_F3
  • Keys::KEY_F4
  • Keys::KEY_F5
  • Keys::KEY_F6
  • Keys::KEY_F7
  • Keys::KEY_F8
  • Keys::KEY_F9
  • Keys::KEY_F10
  • Keys::KEY_F11
  • Keys::KEY_F12
  • Keys::KEY_F13
  • Keys::KEY_F14
  • Keys::KEY_F15
  • Keys::KEY_F16
  • Keys::KEY_F17
  • Keys::KEY_F18
  • Keys::KEY_F19
  • Keys::KEY_F20
  • Keys::KEY_F21
  • Keys::KEY_F22
  • Keys::KEY_F23
  • Keys::KEY_F24
  • Keys::KEY_F25
  • Keys::KEY_F26
  • Keys::KEY_F27
  • Keys::KEY_F28
  • Keys::KEY_F29
  • Keys::KEY_F30
  • Keys::KEY_F31
  • Keys::KEY_F32
  • Keys::KEY_F33
  • Keys::KEY_F34
  • Keys::KEY_F35
  • Keys::KEY_F36
  • Keys::KEY_F37
  • Keys::KEY_F38
  • Keys::KEY_F39
  • Keys::KEY_F40
  • Keys::KEY_F41
  • Keys::KEY_F42
  • Keys::KEY_F43
  • Keys::KEY_F44
  • Keys::KEY_F45
  • Keys::KEY_F46
  • Keys::KEY_F47
  • Keys::KEY_F48
  • Keys::KEY_F49
  • Keys::KEY_F50
  • Keys::KEY_F51
  • Keys::KEY_F52
  • Keys::KEY_F53
  • Keys::KEY_F54
  • Keys::KEY_F55
  • Keys::KEY_F56
  • Keys::KEY_F57
  • Keys::KEY_F58
  • Keys::KEY_F59
  • Keys::KEY_F60
  • Keys::KEY_F61
  • Keys::KEY_F62
  • Keys::KEY_F63
  • Keys::KEY_F64
  • Keys::KEY_LEFT
  • Keys::KEY_RIGHT
  • Keys::KEY_HOME
  • Keys::KEY_BACKSPACE
  • Keys::KEY_DL
  • Keys::KEY_IL
  • Keys::KEY_DC
  • Keys::KEY_IC
  • Keys::KEY_EIC
  • Keys::KEY_CLEAR
  • Keys::KEY_EOS
  • Keys::KEY_EOL
  • Keys::KEY_SF
  • Keys::KEY_SR
  • Keys::KEY_NPAGE
  • Keys::KEY_PPAGE
  • Keys::KEY_STAB
  • Keys::KEY_CTAB
  • Keys::KEY_CATAB
  • Keys::KEY_SRESET
  • Keys::KEY_RESET
  • Keys::KEY_PRINT
  • Keys::KEY_LL
  • Keys::KEY_A1
  • Keys::KEY_A3
  • Keys::KEY_B2
  • Keys::KEY_C1
  • Keys::KEY_C3
  • Keys::KEY_BTAB
  • Keys::KEY_BEG
  • Keys::KEY_CANCEL
  • Keys::KEY_CLOSE
  • Keys::KEY_COMMAND
  • Keys::KEY_COPY
  • Keys::KEY_CREATE
  • Keys::KEY_END
  • Keys::KEY_EXIT
  • Keys::KEY_FIND
  • Keys::KEY_HELP
  • Keys::KEY_MARK
  • Keys::KEY_MESSAGE
  • Keys::KEY_MOVE
  • Keys::KEY_NEXT
  • Keys::KEY_OPEN
  • Keys::KEY_OPTIONS
  • Keys::KEY_PREVIOUS
  • Keys::KEY_REDO
  • Keys::KEY_REFERENCE
  • Keys::KEY_REFRESH
  • Keys::KEY_REPLACE
  • Keys::KEY_RESTART
  • Keys::KEY_RESUME
  • Keys::KEY_SAVE
  • Keys::KEY_SBEG
  • Keys::KEY_SCANCEL
  • Keys::KEY_SCOMMAND
  • Keys::KEY_SCOPY
  • Keys::KEY_SCREATE
  • Keys::KEY_SDC
  • Keys::KEY_SDL
  • Keys::KEY_SELECT
  • Keys::KEY_SEND
  • Keys::KEY_SEOL
  • Keys::KEY_SEXIT
  • Keys::KEY_SFIND
  • Keys::KEY_SHELP
  • Keys::KEY_SHOME
  • Keys::KEY_SIC
  • Keys::KEY_SLEFT
  • Keys::KEY_SMESSAGE
  • Keys::KEY_SMOVE
  • Keys::KEY_SNEXT
  • Keys::KEY_SOPTIONS
  • Keys::KEY_SPREVIOUS
  • Keys::KEY_SPRINT
  • Keys::KEY_SREDO
  • Keys::KEY_SREPLACE
  • Keys::KEY_SRIGHT
  • 按键::KEY_SRSUME
  • 按键::KEY_SSAVE
  • 按键::KEY_SSUSPEND
  • 按键::KEY_UNDO
  • 按键::KEY_MOUSE
  • 按键::KEY_MAX
  • 按键::KEY_LF
  • 按键::KEY_CR
  • 按键::KEY_ESC
  • 按键::KEY_TAB

鼠标事件

  • 鼠标事件::BUTTON1_RELEASED
  • 鼠标事件::BUTTON2_RELEASED
  • 鼠标事件::BUTTON3_RELEASED
  • 鼠标事件::BUTTON4_RELEASED
  • 鼠标事件::BUTTON1_PRESSED
  • 鼠标事件::BUTTON2_PRESSED
  • 鼠标事件::BUTTON3_PRESSED
  • 鼠标事件::BUTTON4_PRESSED
  • 鼠标事件::BUTTON1_CLICKED
  • 鼠标事件::BUTTON2_CLICKED
  • 鼠标事件::BUTTON3_CLICKED
  • 鼠标事件::BUTTON4_CLICKED
  • 鼠标事件::BUTTON1_DOUBLE_CLICKED
  • 鼠标事件::BUTTON2_DOUBLE_CLICKED
  • 鼠标事件::BUTTON3_DOUBLE_CLICKED
  • 鼠标事件::BUTTON4_DOUBLE_CLICKED
  • 鼠标事件::BUTTON1_TRIPLE_CLICKED
  • 鼠标事件::BUTTON2_TRIPLE_CLICKED
  • 鼠标事件::BUTTON3_TRIPLE_CLICKED
  • 鼠标事件::BUTTON4_TRIPLE_CLICKED
  • 鼠标事件::BUTTON_CTRL
  • 鼠标事件::BUTTON_SHIFT
  • 鼠标事件::BUTTON_ALT
  • 鼠标事件::ALL_MOUSE_EVENTS
  • 鼠标事件::REPORT_MOUSE_POSITION

安装ncurses绑定

  1. 安装 pecl。在 Ubuntu 中,它位于名为 php5-dev 的软件包中(在 ArchLinux 中为 php-pear

  2. 安装 ncurses 绑定。

    sudo pecl install ncurses
    
  3. 包含 PHP 扩展。在您的 php.ini 文件中添加以下内容:

    extension=ncurses.so