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库。
- 基础知识
- 安装
- 简单应用示例
- API
- 安装ncurses绑定
基础知识
-
有4个主要类
- Ncurses - 与Ncurses交互的主要对象。
- Window - 代表ncurses窗口的对象。
- Panel - 代表窗口面板的对象。
- Terminal - 与终端交互的对象。
以及4个额外的类
- Colors - Ncurses中所有可用的颜色。
- Keys - 所有键。
- MouseEvents - 所有鼠标事件。
- WindowStyle - 用于创建窗口样式的辅助工具。
-
工作原理
- ncurses初始化
- 创建窗口并填充文本
- 调用refresh()函数
- 返回到步骤 2
-
阅读评论并查看示例
-
Ncurses在PHP教程: http://devzone.zend.com/173/using-ncurses-in-php/ (俄语版本)。
-
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
简单应用示例
-
创建主对象并设置它
$ncurses = new Ncurses; $ncurses ->setEchoState(false) ->setNewLineTranslationState(true) ->setCursorState(Ncurses::CURSOR_INVISIBLE) ->refresh();
-
创建主窗口
$mainWindow = new Window; $mainWindow ->border() ->title('Hello! Today is '.date('d.m.Y')) ->refresh();
-
在主窗口的中心创建一个10x10的小窗口
$window = Window::createCenteredOf($mainWindow, 10, 10); $window ->border() ->moveCursor(3, 4) ->drawStringHere('OK!') ->refresh();
-
等待输入以查看窗口
while (true) { $ncurses->inputChar(); sleep(1); }
-
关闭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绑定
-
安装 pecl。在 Ubuntu 中,它位于名为
php5-dev
的软件包中(在 ArchLinux 中为php-pear
) -
安装 ncurses 绑定。
sudo pecl install ncurses
-
包含 PHP 扩展。在您的 php.ini 文件中添加以下内容:
extension=ncurses.so