1 Star 0 Fork 0

xuechangan / cgdb-manual-in-chinese

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
6.0.md 2.32 KB
一键复制 编辑 原始数据 按行查看 历史
leeyiw 提交于 2015-07-03 15:24 . replace contents.md as SUMMARY.md

上一节:不同的颜色,下一节:KUI超时选项,目录:目录


6 CGDB键盘用户接口

CGDB通过键盘用户接口从用户那里获取输入。我们通常称键盘用户接口为KUI。CGDB仅需要向KUI获取KUI提供的下一个用户输入的指令。

除了读取用户输入以及提供这些输入给CGDB以外,KUI还有两个主要的责任:它需要检测用户输入自定义的键盘映射与用户按下的特殊键。

用户定义的映射,或是简单映射,是用来改变输入的按键的含义。一些用户可能会称将这种功能称之为 。例如:map a b。当用户输入了<a>字符,则KUI将会检测到并且替换为<b>然后将<b>返回给CGDB。

当用户输入了键盘上的特殊字符时,一个键码会被发往CGDB。例如HOME、DEL、<F1>等等。当这样的键被按下时,操作系统将会发送几个字符给应用程序,而不是像普通的按键一样仅发送一个字符。这些连结的字符被称之为一个按键序列。KUI则负责将这些按键序列进行组合,并且向CGDB报告:有一个特别的按键被用户按下。ESC键是比较特殊的,因为大多数的键码都以它为开始。它通常给出了所有的按键序列的通常的头部。KUI使用了terminfo数据库去判断按键序列是由什么键码产生的。有少部分常用的按键序列被硬编码进CGDB中。

KUI主要的挑战是如何判断何时一个映射或者按键序列被输入完成。KUI有时需要读入不止一个字符去确定映射或者按键序列被输入完成。例如,用户设置了两个映射,map abc defmap abd def,KUI需要在它能判断用户是否要输入一个映射之前缓存<a>与<b>两个字符。当下一个键被按下时,如果用户输入<c>或是<d>则KUI收到一个映射,然后将d e f返回给CGDB。否则,没有映射被接收到,KUI将会把a b返回给CGDB。

选项 timeoutttimeouttimeoutlen 以及 ttimeoutlen 可以被用来告诉KUI是否需要在映射或是按键序列的中间保持超时,以及如果需要的话,需要保持多久。

1
https://gitee.com/xuechangan/cgdb-manual-in-chinese.git
git@gitee.com:xuechangan/cgdb-manual-in-chinese.git
xuechangan
cgdb-manual-in-chinese
cgdb-manual-in-chinese
master

搜索帮助