# 键盘

库： | 输入/输出
引入版本： | 2.2.0
外观： |

## 行为

该组件允许电路读取用户从键盘输入字符（字符必须能用 7 位 ASCII 码表示）。使用手形工具单击该组件后，用户即可输入字符；输入的字符会累积到一个缓冲区中。在任意时刻，缓冲区最左侧字符的 ASCII 值都会从最右侧输出端输出。当时钟输入被触发时，缓冲区最左侧字符会从缓冲区移除，随后新的最左侧字符会从最右侧输出端输出。

缓冲区支持的字符包括所有可打印 ASCII 字符，以及空格、换行、退格和 Ctrl-L。另外，按下左方向键与右方向键可在缓冲区内移动光标；按下 Delete 键会删除光标右侧的字符（若存在）。

该组件在一定意义上是异步的：当缓冲区为空且用户输入一个字符时，该字符会立即作为输出送出，而无需等待时钟脉冲。

## 引脚

西侧边缘，以三角形标识（输入，位宽为 1）
  时钟：当 读使能 引脚不为 0 且该输入被触发时，缓冲区最左侧字符会被删除，输出将更新以反映缓冲区的新状态。
南侧边缘，最左侧引脚（输入，位宽为 1）
  读使能：当该输入为 1（或悬空或错误值）时，一个时钟沿将会消耗缓冲区最左侧字符；当读使能为 0 时，时钟输入会被忽略。
南侧边缘，从左数第 2 个引脚（输入，位宽为 1）
  清空：当为 1 时，缓冲区会被清空，并且不再接受后续输入的字符。
南侧边缘，从右数第 2 个引脚（输出，位宽为 1）
  可用：当缓冲区至少包含 1 个字符时为 1；当缓冲区为空时为 0。
南侧边缘，最右侧引脚（输出，位宽为 7）
  数据：输出缓冲区最左侧字符的 7 位 ASCII 码；若缓冲区为空，则输出 0。

## 属性

缓冲区长度
  缓冲区一次可容纳的字符数量。
触发方式
  若为 上升沿，则当时钟输入从 0 变为 1 时（且读使能允许），会消耗缓冲区最左侧字符；若为 下降沿，则在时钟输入从 1 变为 0 时发生该操作。

## 手形工具行为

在组件上按下鼠标按钮可使该组件获得键盘焦点，并显示一个竖线光标。

此后输入的每个字符都会被插入到缓冲区中，前提是缓冲区未达到容量上限，且该字符属于组件支持的范围：7 位 ASCII 码内的可打印字符，以及空格、退格、换行与 Ctrl-L。此外，用户可通过左/右方向键改变光标在缓冲区中的位置，并可通过 Delete 键删除光标右侧的缓冲区字符（若存在）。

## 文本工具行为

无。

返回 库参考手册