74 - 键盘驱动程序的完善
---- 整理自狄泰软件唐佐林老师课程
查看所有文章链接:(更新中)深入浅出操作系统 - 目录
文章目录
- 1. 问题
- 1.1 内核策略
- 1.2 编码缓冲区设计
- 1.3 设计思想
- 1.4 循环缓冲区保存编码结果
- 1.5 获取编码结果
- 1.6 编程实验:键位编码存储与获取
- 1.7 Pause键的处理(Key Code:0x13)
- 1.8 编程实验:Pause键的处理
- 1.9 思考
1. 问题
- 内核对按键事件进行编码后,如何处理?
1.1 内核策略
缓存 最近的N次按键编码,通过 系统调用 的方式将按键编码提供给任务
1.2 编码缓冲区设计
在内核中可通过 循环缓冲区 存储键位编码
– 为什么是循环缓冲区? ==> 因为缓存的是最近的N次按键编码

1.3 设计思想
- 内核中保留最近N(N=8)次键盘输入的编码结果:
- 缓冲区未满
- 编码结果存入缓冲区尾部(tail)
- 缓冲区已满
- 舍弃缓冲区头部(head)的编码
- 编码结果存入缓冲区尾部(tail)
- 缓冲区未满
1.4 循环缓冲区保存编码结果

1.5 获取编码结果

1.6 编程实验:键位编码存储与获取
【参看链接】:74 - 键盘驱动程序的完善 / 00

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 思考
驱动键盘之后能做什么?
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
