查看所有文章链接:(更新中)深入浅出操作系统 - 目录
文章目录
1. 问题
- 内核对按键事件进行编码后,如何处理?
1.1 内核策略
缓存 最近的N次按键编码,通过 系统调用 的方式将按键编码提供给任务
1.2 编码缓冲区设计
在内核中可通过 循环缓冲区 存储键位编码
– 为什么是循环缓冲区? ==> 因为缓存的是最近的N次按键编码
1.3 设计思想
- 内核中保留最近N(N=8)次键盘输入的编码结果:
- 缓冲区未满
- 编码结果存入缓冲区尾部(tail)
- 缓冲区已满
- 舍弃缓冲区头部(head)的编码
- 编码结果存入缓冲区尾部(tail)
- 缓冲区未满
1.4 循环缓冲区保存编码结果
1.5 获取编码结果
1.6 编程实验:键位编码存储与获取
1.7 Pause键的处理(Key Code:0x13)
- 收到的扫描码为0xE1时,标志着Pause键被按下
- Pause键从按下到释放的完整扫描为:
- 0xE1,0x1D,0x45,0xE1,0x9D,0xC5
- 处理思路:重新映射扫描码
- 按下:0xE1,0x1D,0x45 ==> 0x5E
- 释放:0xE1,0x9D,0xC5 ==> 0xDE
1.8 编程实验:Pause键的处理
【参看链接】:74 - 键盘驱动程序的完善 / 01Pause键的处理
1.9 思考
驱动键盘之后能做什么?