参考文章
https://viewsourcecode.org/snaptoken/kilo/02.enteringRawMode.html 写得很详细
原生模式
我们要写的编辑器有点与众不同,按键功能的映射是由我们自己设置的,为了达到这一步,我们首先得进入原生模式
原生模式简单来说就是单纯的接收输入,不做任何其他处理,举个例子吧,当我们写文本时,我们要移动到下一行,就习惯按下 Enter 键,这个键会被映射为回车加换行,但在原生模式下,Enter 键就仅仅只是ASCII代码,不会做任何处理
除了按键功能映射的禁用,我们还要考虑到,我们怎样读取输入,程序怎样给出输出。
举个例子,规范模式(其实就是正常模式)下,我们提供给程序的输入一般是通过 Enter 键确认发送,但在文本编辑器中,我们想要的是,直接读取,无需用户确认,简单来说就是按下一个字符,就读取一个字符。
规范模式下是按行读取输入,就是用 Enter 键确认发送,原生模式下是按字节读取输入,就是按下一个字符,就读取一个字符。
我们要了解到终端的回显功能,读取的输入是保存在缓冲区中,终端会打印缓冲区的内容显示给用户看,这个就是回显功能。原生模式下是禁用回显功能的,所以我们就得自己从缓冲区中获取内容并打印。
总结起来进入原生模式主要就三个方面吧
- 关闭一些组合按键的功能映射(禁用功能)
- 按行读取输入--->按字节读取输入(立即反应输入)
- 从缓冲区中获取内容并打印(显示用户的输入)
本章主要实现的功能就是进入原生模式,其实主要是了解一些概念就可以了,代码实现不难
源码
https://gitee.com/winterz_space/kilo_editor.git
我的源码放在gitee上了,是new_kilo分支,参考文章的首页也有原作者的代码,放在github上,不过只有1个文件,推荐大家去阅读这篇文章,写得很详细
标签:原生,读取,模式,简易,编辑器,终端,Enter,缓冲区,输入 From: https://www.cnblogs.com/winter-z/p/18341258