创建命令行窗口
创建一个带窗口的任务,需要在主程序中创建窗口,再通过参数传给这个任务的main函数。因为要处理窗口重叠关系等,需要在统一的地方进行管理。
如果有多个任务能够接受键盘输入,则应该创建一个变量key_to,表示输入到哪个任务中。
为了让每个任务都能够接受键盘输入,可以把FIFO放在TASK结构中。在主程序的for循环中,根据key_to的值将键盘数据传到指定的FIFO中。然后在这个任务的for循环中处理键盘数据。
特殊字符的输入
现在只能输入一般字符。如果是通过组合键输入的,如!@#¥%,需要自己判断。这里需要处理SHIFT键。使用两个keytable表,一个是不按shift时输入的,一个是按下时输入的。在FIFO处理中,记录左右SHIFT键的按下抬起状态,然后在发送字符时选用不同的keytable。
大写字母也需要处理。初始的大小写状态可以由BIOS获取,但是32位下无法使用BIOS,可以在一开始获得的binfo中得到。