API/term/zh: Difference between revisions
Jump to navigation
Jump to search
imported>OCDoc Import Imported from legacy OpenComputers documentation at ocdoc.cil.li |
Clean up Markdown artifacts from DokuWiki migration |
||
| Line 3: | Line 3: | ||
此API提供了向屏幕输出内容和读取用户输入的简化版方法。因此你无需手动操作GPU API实现这些功能。 | 此API提供了向屏幕输出内容和读取用户输入的简化版方法。因此你无需手动操作GPU API实现这些功能。 | ||
* | * <code>term.isAvailable(): boolean</code> | ||
<pre>返回term | <pre>返回term API是否可用,即是否存在首选GPU和屏幕。换言之,term.read和term.write函数能否起到实际作用。 | ||
</pre> | </pre> | ||
* | * <code>term.getViewport(): number, number, number, number, number, number</code> (OpenOS 1.6新加入) | ||
<pre>获取可视区域的宽度、高度、x偏移量、y偏移量、x相对坐标、y相对坐标。 | <pre>获取可视区域的宽度、高度、x偏移量、y偏移量、x相对坐标、y相对坐标。 | ||
</pre> | </pre> | ||
* | * <code>term.gpu(): table</code> (OpenOS 1.6新加入) | ||
<pre>获取term API所使用GPU的代理对象。 | <pre>获取term API所使用GPU的代理对象。 | ||
</pre> | </pre> | ||
* | * <code>term.pull([...]): ...</code> (OpenOS 1.6新加入) | ||
<pre> | <pre>与event.pull的作用完全一致,接收同样的参数,返回同样的结果。此方法用于在等待事件结果时令光标闪烁。 | ||
</pre> | </pre> | ||
* | * <code>term.getCursor(): number, number</code> | ||
<pre>获取光标的当前位置。 | <pre>获取光标的当前位置。 | ||
</pre> | </pre> | ||
* | * <code>term.setCursor(col: number, row: number)</code> | ||
<pre>将光标位置设定为给定坐标。 | <pre>将光标位置设定为给定坐标。 | ||
</pre> | </pre> | ||
* | * <code>term.getCursorBlink(): boolean</code> | ||
<pre>获取光标闪烁功能是否启用,即光标是否每隔半秒在其位置实际显示的"像素"和纯白色方块间来回变换。 | <pre>获取光标闪烁功能是否启用,即光标是否每隔半秒在其位置实际显示的"像素"和纯白色方块间来回变换。 | ||
</pre> | </pre> | ||
* | * <code>term.setCursorBlink(enabled: boolean)</code> | ||
<pre>设定光标闪烁功能是否启用。 | <pre>设定光标闪烁功能是否启用。 | ||
</pre> | </pre> | ||
* | * <code>term.clear()</code> | ||
<pre>清空整个屏幕,并将光标位置重置为(1, 1)。 | <pre>清空整个屏幕,并将光标位置重置为(1, 1)。 | ||
</pre> | </pre> | ||
* | * <code>term.clearLine()</code> | ||
<pre>清空光标所在的行,并将光标的横坐标重置为1。 | <pre>清空光标所在的行,并将光标的横坐标重置为1。 | ||
</pre> | </pre> | ||
* | * <code>term.read([history: table[, dobreak:boolean[, hint:table or function[, pwchar:string]]]]): string</code> | ||
<pre>从终端读取一些文本,即让用户能够输入一些文本。例如,shell和Lua解释器用此函数来读取用户输入。 | <pre>从终端读取一些文本,即让用户能够输入一些文本。例如,shell和Lua解释器用此函数来读取用户输入。 | ||
此函数会使当前行从光标位置算起的剩余部分变为可编辑区域。在此区域中可以输入、删除文字,还可以使用左右方向键和home/end键移动光标。 | 此函数会使当前行从光标位置算起的剩余部分变为可编辑区域。在此区域中可以输入、删除文字,还可以使用左右方向键和home/end键移动光标。 | ||
***自OpenOS 1.6起,此处指定的参数列表已被废弃。** | ***自OpenOS 1.6起,此处指定的参数列表已被废弃。**第一个参数为option(选项)参数。其中带索引号的数组元素会被作为之前的histroy(历史)对待,键被命名的元素取代了之前的参数。为了兼容性,OpenOS 1.6仍支持以前的用法,即参数列表。 | ||
* | *新ops参数中支持一个新键:nowrap。现在term.read的默认行为模式是垂直换行光标和输入。旧的行为模式是水平滚动输入,即现在的term.read({nowrap=true})。 \\ | ||
可选的history表作用为提供预定义文本,这些文本可以通过上下方向键循环选择。此表必须成序列(即表中键值必须为从1开始的连续不间断的整数)。此功能的使用例为被shell和Lua解释器的命令历史功能。如果有文本输入并且被按下回车键确定,这条文本就会被加入表的末尾。 | |||
dobreak 参数在设定为false(**设定为nil时默认为true!**)时,输入完成后(如用户按下回车键)不会换行。 | |||
hint参数用于tab键补全。此参数可以为内容是字符串的表,或者接收两个参数并返回字符串表的函数,函数的参数为当前文本和在此文本中的位置,即回调函数的签名为 function(line:string, pos:number):table。 | |||
pwchar参数若给定,输入内容将会被给定字符串的第一个字符遮盖。例如,给定"*"将会导致输入的字符显示为星号。但返回值当然还是输入的实际内容。 | |||
此函数在输入成功后会返回一个字符串,管道关闭(^ | 此函数在输入成功后会返回一个字符串,管道关闭(^d)时会返回nil,管道中断(^c)时返回false。 | ||
</pre> | </pre> | ||
'''注1:''' | '''注1:'''<code>io.stdin:read()</code> 使用了此函数。 | ||
'''注2:'''此函数将会把输入的字符串与\n(换行符)一并返回。如果你只想要输入的字符串,请使用 | '''注2:'''此函数将会把输入的字符串与\n(换行符)一并返回。如果你只想要输入的字符串,请使用<code>io.read()</code>。 | ||
* | * <code>term.write(value: string[, wrap: boolean])</code> | ||
<pre>用于将文本输出到终端上,从光标的当前位置起始,可选是否自动换行,输出时同步更新光标位置。 | <pre>用于将文本输出到终端上,从光标的当前位置起始,可选是否自动换行,输出时同步更新光标位置。 | ||
此函数会自动将tab字符用text.detab转换。若wrap为true,函数将会对文本自动换行。若光标超出了显示区域底部,则函数会自动滚动显示缓冲区。但是(当wrap为false时)在超出显示区域右边界时**不会**滚动。 | |||
</pre> | </pre> | ||
'''注:'''此方法遵循io重定义。即 | '''注:'''此方法遵循io重定义。即<code>term.write</code>与io.stdout写入的是同一个流。 | ||
* | * <code>term.bind(gpu)</code> (OpenOS 1.6新加入) ) | ||
<pre> | <pre>将某个gpu代理对象(而不是地址)绑定到终端。启动过程中,在GPU与屏幕均可用后,此方法会自动调用。请注意如果手动将终端重新绑定到高度和宽度不同的屏幕,终端绘制区域将会被剪裁,不能最大化显示。此函数改变了所有终端输出使用的GPU,而不只是term API使用的,即包含io.write、print、io.stdout:write以及所有使用同样输出流的函数。term.bind可用于修改上述函数使用的gpu。 | ||
</pre> | </pre> | ||
* | * <code>term.screen(): string</code> (OpenOS 1.6新加入) | ||
<pre> | <pre>为了便利而引入的方法,仅仅是在终端绑定的GPU(参见term.bind)上调用了 getScreen。 | ||
</pre> | </pre> | ||
* | * <code>term.keyboard(): string</code> (OpenOS 1.6新加入) | ||
<pre>获取终端用于接收按键事件的键盘地址。 | <pre>获取终端用于接收按键事件的键盘地址。 | ||
| Line 90: | Line 90: | ||
{{:API/contents/zh}} | {{:API/contents/zh}} | ||
Latest revision as of 20:26, 24 August 2026
Term(终端) API
此API提供了向屏幕输出内容和读取用户输入的简化版方法。因此你无需手动操作GPU API实现这些功能。
term.isAvailable(): boolean
返回term API是否可用,即是否存在首选GPU和屏幕。换言之,term.read和term.write函数能否起到实际作用。
term.getViewport(): number, number, number, number, number, number(OpenOS 1.6新加入)
获取可视区域的宽度、高度、x偏移量、y偏移量、x相对坐标、y相对坐标。
term.gpu(): table(OpenOS 1.6新加入)
获取term API所使用GPU的代理对象。
term.pull([...]): ...(OpenOS 1.6新加入)
与event.pull的作用完全一致,接收同样的参数,返回同样的结果。此方法用于在等待事件结果时令光标闪烁。
term.getCursor(): number, number
获取光标的当前位置。
term.setCursor(col: number, row: number)
将光标位置设定为给定坐标。
term.getCursorBlink(): boolean
获取光标闪烁功能是否启用,即光标是否每隔半秒在其位置实际显示的"像素"和纯白色方块间来回变换。
term.setCursorBlink(enabled: boolean)
设定光标闪烁功能是否启用。
term.clear()
清空整个屏幕,并将光标位置重置为(1, 1)。
term.clearLine()
清空光标所在的行,并将光标的横坐标重置为1。
term.read([history: table[, dobreak:boolean[, hint:table or function[, pwchar:string]]]]): string
从终端读取一些文本,即让用户能够输入一些文本。例如,shell和Lua解释器用此函数来读取用户输入。
此函数会使当前行从光标位置算起的剩余部分变为可编辑区域。在此区域中可以输入、删除文字,还可以使用左右方向键和home/end键移动光标。
***自OpenOS 1.6起,此处指定的参数列表已被废弃。**第一个参数为option(选项)参数。其中带索引号的数组元素会被作为之前的histroy(历史)对待,键被命名的元素取代了之前的参数。为了兼容性,OpenOS 1.6仍支持以前的用法,即参数列表。
*新ops参数中支持一个新键:nowrap。现在term.read的默认行为模式是垂直换行光标和输入。旧的行为模式是水平滚动输入,即现在的term.read({nowrap=true})。 \\
可选的history表作用为提供预定义文本,这些文本可以通过上下方向键循环选择。此表必须成序列(即表中键值必须为从1开始的连续不间断的整数)。此功能的使用例为被shell和Lua解释器的命令历史功能。如果有文本输入并且被按下回车键确定,这条文本就会被加入表的末尾。
dobreak 参数在设定为false(**设定为nil时默认为true!**)时,输入完成后(如用户按下回车键)不会换行。
hint参数用于tab键补全。此参数可以为内容是字符串的表,或者接收两个参数并返回字符串表的函数,函数的参数为当前文本和在此文本中的位置,即回调函数的签名为 function(line:string, pos:number):table。
pwchar参数若给定,输入内容将会被给定字符串的第一个字符遮盖。例如,给定"*"将会导致输入的字符显示为星号。但返回值当然还是输入的实际内容。
此函数在输入成功后会返回一个字符串,管道关闭(^d)时会返回nil,管道中断(^c)时返回false。
注1:io.stdin:read() 使用了此函数。
注2:此函数将会把输入的字符串与\n(换行符)一并返回。如果你只想要输入的字符串,请使用io.read()。
term.write(value: string[, wrap: boolean])
用于将文本输出到终端上,从光标的当前位置起始,可选是否自动换行,输出时同步更新光标位置。 此函数会自动将tab字符用text.detab转换。若wrap为true,函数将会对文本自动换行。若光标超出了显示区域底部,则函数会自动滚动显示缓冲区。但是(当wrap为false时)在超出显示区域右边界时**不会**滚动。
注:此方法遵循io重定义。即term.write与io.stdout写入的是同一个流。
term.bind(gpu)(OpenOS 1.6新加入) )
将某个gpu代理对象(而不是地址)绑定到终端。启动过程中,在GPU与屏幕均可用后,此方法会自动调用。请注意如果手动将终端重新绑定到高度和宽度不同的屏幕,终端绘制区域将会被剪裁,不能最大化显示。此函数改变了所有终端输出使用的GPU,而不只是term API使用的,即包含io.write、print、io.stdout:write以及所有使用同样输出流的函数。term.bind可用于修改上述函数使用的gpu。
term.screen(): string(OpenOS 1.6新加入)
为了便利而引入的方法,仅仅是在终端绑定的GPU(参见term.bind)上调用了 getScreen。
term.keyboard(): string(OpenOS 1.6新加入)
获取终端用于接收按键事件的键盘地址。
目录
| < 100% 15% 15% > | ||
| API | OpenOS | buffer - colors - component - computer - event - filesystem - uuid - internet - keyboard - note - process - rc - robot - serialization - shell - sides - term - text - thread - transforms - unicode |
| ::: | Lua 库 | coroutine - package - io - os |