📄 1第一章:ncurses库简介.htm
字号:
Tahoma'> ^ </span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>和</span><spanlang=EN-US style='font-family:Tahoma'> [ </span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>就是所谓的转义字符。(注意:再这里</span><span lang=EN-US style='font-family:Tahoma'> ^[</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是一个字符。不是依次键入“</span><span lang=EN-USstyle='font-family:Tahoma'>^</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>”和“</span><spanlang=EN-US style='font-family:Tahoma'>[</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>”字符。要打印出这个字符,你必须先按下</span><span lang=EN-US style='font-family:Tahoma'>Ctrl+V</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,然后按下</span><span lang=EN-US style='font-family:Tahoma'>ESC</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>键。</span><spanlang=EN-US style='font-family:Tahoma'>]</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>执行以上的命令后。你应该可以看见“</span><span lang=EN-US style='font-family:Tahoma'>In Color</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>”的背景变为红色了。从此以后显示的文本字符信息都是这样的背景和文字颜色设置。</span><spanlang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><spanlang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>如果想终止这种模式回到原来的模式可以使用下面的命令:</span><span lang=EN-USstyle='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal style='margin-top:0cm;margin-right:1.25pt;margin-bottom:0cm;margin-left:10.5pt;margin-bottom:.0001pt;mso-para-margin-top:0cm;mso-para-margin-right:.12gd;mso-para-margin-bottom:0cm;mso-para-margin-left:1.0gd;mso-para-margin-bottom:.0001pt'><b><span lang=EN-US style='font-family:Tahoma'>echo "^[[0;37;<st1:chmetcnv UnitName="m" SourceValue="40"HasSpace="False" Negative="False" NumberType="1" TCSC="0" w:st="on">40m</st1:chmetcnv>"<o:p></o:p></span></b></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><spanlang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>现在知道这些字符的意思了吗?(译者注:更改分号之间的参数,看看会有什么结果。)和自己想像的不一样?那可能是因为在不同的操作系统终端下有不同的终端环境配置。为了避免这种情况的发生,统一输出的结果。</span><spanlang=EN-US style='font-family:Tahoma'>UNIX</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的设计者发明了一种机制叫做</span><span lang=EN-US style='font-family:Tahoma'>termcap</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>。那是一个随同转义序列的文件。这个文件罗列出所有当前终端的可用的功能及相应的转义序列,使当前的终端上执行转义序列后显示的结果符合这个文件中规定。在这种机制发明后的几年中,</span><spanlang=EN-US style='font-family:Tahoma'>termcap</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>逐渐被一种叫做</span><span lang=EN-US style='font-family:Tahoma'>terminfo</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的机制取代了。这种机制不像</span><span lang=EN-USstyle='font-family:Tahoma'>termcap</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>那样,在使用时不需要了解太多转义序列的详细内容。</span><span lang=EN-US style='font-family:Tahoma'>terminfo</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>机制是通过使应用程序访问</span><spanlang=EN-US style='font-family:Tahoma'>terminfo</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>数据库从而将这些控制字符发送到终端或者终端仿真程序。</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><spanlang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><b><spanlang=EN-US style='font-size:12.0pt;font-family:Tahoma'>2</span></b><b><spanstyle='font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、什么是</span></b><b><span lang=EN-USstyle='font-size:12.0pt;font-family:Tahoma'>NCURSES</span></b><b><spanstyle='font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>?(</span></b><b><span lang=EN-USstyle='font-size:12.0pt;font-family:Tahoma'>What is NCURSES?</span></b><b><spanstyle='font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)</span></b><b><span lang=EN-USstyle='font-size:12.0pt;font-family:Tahoma'><o:p></o:p></span></b></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd;text-indent:21.0pt'><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>你可能被以上的那些术语搅和的摸不到头脑了。假设在使用</span><spanlang=EN-US style='font-family:Tahoma'>terminfo</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的情况下,让所有的应用程序访问</span><span lang=EN-US style='font-family:Tahoma'>terminfo</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>数据库并且得到相应的结果(比如发送控制字符,等等……)。不久这些调用在程序中将会变得难以控制和管理。这些问题的出现致使了</span><spanlang=EN-US style='font-family:Tahoma'>CURSES</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的诞生。</span><span lang=EN-US style='font-family:Tahoma'>CURSES</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的命名是来自一个叫做</span><span style='font-family:Tahoma'></span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>“</span><span lang=EN-US style='font-family:Tahoma'>cursor optimization</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>”(光标最优化)的双关语。通过</span><spanlang=EN-US style='font-family:Tahoma'>CURSES</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>库对终端原始控制代码(转义序列)的封装,为用户提供了一个灵活高效的</span><span lang=EN-USstyle='font-family:Tahoma'>API</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>(应用程序接口)。它提供了一套控制光标、建立窗口、改变颜色以及处理鼠标操作的函数。编写终端的字符平台应用程序时就不需要担心使用那些恼人的底层终端字符机制了。</span><spanlang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><spanlang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd;text-indent:21.0pt'><span lang=EN-US style='font-family:Tahoma'>NCURSES</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是一个从</span><span lang=EN-US style='font-family:Tahoma'>System V Release 4.0 (SVr4) </span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>中</span><span lang=EN-US style='font-family:Tahoma'>CURSES</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的克隆。这是一个可自由配置的库,完全兼容旧版本的</span><span lang=EN-USstyle='font-family:Tahoma'>CURSES</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>。简而言之,他是一个使应用程序可以在终端直接控制屏幕显示的库。当在文档的后续部分提到</span><spanlang=EN-US style='font-family:Tahoma'>CURSES</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的时候,是可以和</span><span lang=EN-US style='font-family:Tahoma'>NCURSES</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>互相替换的。</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd;text-indent:21.0pt'><span lang=EN-US style='font-family:Tahoma'>NCURSES</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>包由</span><span lang=EN-US style='font-family:Tahoma'>PavelCurtis</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>发起,</span><spanlang=EN-US style='font-family:Tahoma'>Zeyd Ben-Halim </span><tt><spanlang=EN-US style='font-size:10.0pt;font-family:Tahoma'><<ahref="mailto:zmbenhal@netcom.com">zmbenhal@netcom.com</a>></span></tt><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>和</span><span lang=EN-US style='font-family:Tahoma'>EricS. Raymond </span><tt><span lang=EN-US style='font-size:10.0pt;font-family:Tahoma'><<a href="mailto:esr@snark.thyrsus.com">esr@snark.thyrsus.com</a>></span></tt><tt><spanstyle='mso-ansi-font-size:10.5pt;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是</span></tt><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>最初的维护人员,他们在</span><st1:chsdate Year="1899" Month="12" Day="30"IsLunarDate="False" IsROCDate="False" w:st="on"><span lang=EN-US style='font-family:Tahoma'>1.8.1</span></st1:chsdate><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>及以后版本中增加了很多的新功能。</span><span lang=EN-US style='font-family:Tahoma'>JürgenPfeifer< <a href="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</a>></span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>撰写了菜单库和面板库。使菜单和面板的机制和</span><spanlang=EN-US style='font-family:Tahoma'>Ada95</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>中捆绑的库一样好。</span><span lang=EN-US style='font-family:Tahoma'>ThomasDickey<<a href="mailto:dickey@herndon4.his.com">dickey@herndon4.his.com</a>></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>和</span><span lang=EN-US style='font-family:Tahoma'>JürgenPfeifer</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>进行着</span><spanlang=EN-US style='font-family:Tahoma'>NCURSES</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的维护工作。</span><span lang=EN-US style='font-family:Tahoma'>Florian <st1:PersonNameProductID="La Roche" w:st="on">La Roche</st1:PersonName> <<ahref="mailto:florian@gnu.org">florian@gnu.org</a>></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>持有</span><span lang=EN-US style='font-family:Tahoma'>NCURSES</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的版权,他在自由软件基金会(</span><span lang=EN-USstyle='font-family:Tahoma'>GNU</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)中担任</span><spanlang=EN-US style='font-family:Tahoma'>NCURSES</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的维护工作。如果要联系现在的</span><span lang=EN-US style='font-family:Tahoma'>NCURSES</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的维护者请发电子邮件至</span><span lang=EN-USstyle='font-family:Tahoma'><a href="mailto:bug-ncurses@gnu.org" target="_top">bug-ncurses@gnu.org</a></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>。</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><spanlang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><b><spanlang=EN-US style='font-size:12.0pt'>3</span></b><b><span style='font-size:12.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>、我们可以用</span></b><b><span lang=EN-US style='font-size:12.0pt'>NCURSES</span></b><b><spanstyle='font-size:12.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>做什么?(</span></b><b><span lang=EN-USstyle='font-size:12.0pt;font-family:Tahoma'>What we can do with NCURSES</span></b><b><spanstyle='font-size:12.0pt;font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>?</span></b><b><span style='font-size:12.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"'>)</span></b><b><span lang=EN-US style='font-size:12.0pt'><o:p></o:p></span></b></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><spanlang=EN-US style='font-family:Tahoma'><span style='mso-tab-count:1'> </span>NCURSES</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>不仅仅只是封装了底层的终端功能,而且提供了一个稳固的工作框架(</span><spanlang=EN-US style='font-family:Tahoma'>Framework</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)用以产生漂亮的用户界面。它包含了一些可以创建窗口的函数。它的姊妹库</span><span lang=EN-USstyle='font-family:Tahoma'> Menu</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、</span><spanlang=EN-US style='font-family:Tahoma'>Panel</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>和</span><span lang=EN-US style='font-family:Tahoma'>Form</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是</span><span lang=EN-US style='font-family:Tahoma'>CURSES</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>基础库的扩展。这些库一般都随同</span><span lang=EN-USstyle='font-family:Tahoma'>CURSES</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>包里一起发行。我们可以建立一个应用程序同时包含多窗口(</span><spanlang=EN-US style='font-family:Tahoma'>multiple windows</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)、菜单(</span><span lang=EN-US style='font-family:Tahoma'>menus</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)、面板(</span><spanlang=EN-US style='font-family:Tahoma'>panels</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)和表单(</span><span lang=EN-US style='font-family:Tahoma'>forms</span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)。窗口可以被独立管理,可以让它卷动(</span><span lang=EN-USstyle='font-family:Tahoma'>scrollability</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)甚至被隐藏。</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><spanlang=EN-US style='font-family:Tahoma'><o:p> </o:p></span></p><p class=MsoNormal style='margin-right:1.25pt;mso-para-margin-right:.12gd'><spanlang=EN-US style='font-family:Tahoma'><span style='mso-tab-count:1'> </span></span><spanstyle='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>菜单(</span><span lang=EN-US style='font-family:Tahoma'>Menus</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)可以让用户建立选项从而方便的执行命令。窗体(</span><spanlang=EN-US style='font-family:Tahoma'>Forms</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)允许用户建立一些简单的数据输入和显示窗口。面板(</span><span lang=EN-US style='font-family:Tahoma'>Panels</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)是</span><spanlang=EN-US style='font-family:Tahoma'>NCURSES</span><span style='font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>管理窗口功能的扩展,可以重叠和堆积窗口。</span><span lang=EN-US style='font-family:Tahoma'><o:p></o:p></span></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -