CGDB通过键盘用户接口从用户那里获取输入。我们通常称键盘用户接口为KUI。CGDB仅需要向KUI获取KUI提供的下一个用户输入的指令。
除了读取用户输入以及提供这些输入给CGDB以外,KUI还有两个主要的责任:它需要检测用户输入自定义的键盘映射与用户按下的特殊键。
用户定义的映射,或是简单映射,是用来改变输入的按键的含义。一些用户可能会称将这种功能称之为 宏 。例如:map a b
。当用户输入了\字符,则KUI将会检测到并且替换为\然后将\返回给CGDB。
当用户输入了键盘上的特殊字符时,一个键码会被发往CGDB。例如HOME、DEL、\
KUI主要的挑战是如何判断何时一个映射或者按键序列被输入完成。KUI有时需要读入不止一个字符去确定映射或者按键序列被输入完成。例如,用户设置了两个映射,map abc def
与map abd def
,KUI需要在它能判断用户是否要输入一个映射之前缓存\与\两个字符。当下一个键被按下时,如果用户输入\d e f
返回给CGDB。否则,没有映射被接收到,KUI将会把a b
返回给CGDB。
选项 timeout , ttimeout , timeoutlen 以及 ttimeoutlen 可以被用来告诉KUI是否需要在映射或是按键序列的中间保持超时,以及如果需要的话,需要保持多久。