PS/2键盘原理 【转】
2017-07-04 19:54
239 查看
早期的键盘实际上是一种5pin的键盘,称作AT键盘,是1984年IBM
PC的标准键盘。在1987年IBM进行了改进,从而变成了现在的PS/2键盘。
当按下一个键或释放一个键,键盘都会发送键盘扫描码到主机。比如按下A,键盘就会发送0x1C到主机。如果持续按A,当经过一个给定时间后,就会发
送0x1C到主机。当键盘被释放,键盘会发送0xF0加键码到主机,告诉主机键盘哪个键被释放。当再次按下A,键盘就会再次发送0x1C到主机。键盘的每
一个键都有一个特定的键码,无论SHIFT、Num Lock、Caps Lock、Scroll
Lock键是否被按下,键盘总是发送同样的键码,主机的键盘BIOS负责区分SHIFT、Num Lock、Caps Lock、Scroll
Lock键的状态。键盘有101个键,而PS/2接口只有8比特。因此,并不是所有的键都只有一个字节的键码。扩展键盘中有一些键的键码是双字节的,以
E0开头,比如向左键为E06B。有些键的扫描码非常夸张,比如Pause
Brk键的键码为E1177E1F014F077!主键盘键码如图11-5所示,扩展键盘键码如图11-6所示。
扩展键盘的键被释放的时候,不是首先发送F0加E0开头的键码,而是发送E0F0加一个字节的区分码,比如向左键被释放时发送到主机的键码为E0F06B。
主机可以向键盘发送命令控制键盘,具体如下:
0xED命令设置键盘LED的状态,包括Num Lock、Caps Lock、Scroll Lock
LED的状态。接收到0xED命令后,键盘返回应答0xFA,接下来主机向键盘发送一个字节的命令数据格式如图11-7所示。1表示开,0表关。
0xEE是环回(Echo)命令,当接收到该命令,键盘返回0xEE。
0xF0设置扫描码集。当接收到0xF0,键盘返回0xFA应答。接下来主机向键盘发送一个字节的数据,如果数据为01~03,决定使用的扫描码集;如果数据为0x00,则主机返回当前使用的键盘扫描码集的编号。
0xF3设置打字重复率(Typematic Repeat
Rate)。当接收到0xF3,键盘返回0xFA应答。接下来主机向键盘发送一个字节的数据,表示具体的打字重复率值。
0xF4设置键盘使能,清除键盘输出缓存,使能键盘扫描,键盘接收到该命令后返回0xFA。
0xF5设置键盘关闭,清除键盘输出缓存,停止键盘扫描,键盘接收到该命令后返回0xFA。
0xFE请求重传。键盘接收到该命令后,键盘重新发送刚刚发送的字节;主机接收到该命令后,重新发送刚刚发送的字节给键盘。
0xFF键盘复位。
0xFA键盘发送到主机的应答。
0xAA键盘发送给主机的加电自检完成指示(Power On Self Test Passed)。
0x00/0xFF键盘发送给主机,表示错误或缓存溢出。
PC的标准键盘。在1987年IBM进行了改进,从而变成了现在的PS/2键盘。
当按下一个键或释放一个键,键盘都会发送键盘扫描码到主机。比如按下A,键盘就会发送0x1C到主机。如果持续按A,当经过一个给定时间后,就会发
送0x1C到主机。当键盘被释放,键盘会发送0xF0加键码到主机,告诉主机键盘哪个键被释放。当再次按下A,键盘就会再次发送0x1C到主机。键盘的每
一个键都有一个特定的键码,无论SHIFT、Num Lock、Caps Lock、Scroll
Lock键是否被按下,键盘总是发送同样的键码,主机的键盘BIOS负责区分SHIFT、Num Lock、Caps Lock、Scroll
Lock键的状态。键盘有101个键,而PS/2接口只有8比特。因此,并不是所有的键都只有一个字节的键码。扩展键盘中有一些键的键码是双字节的,以
E0开头,比如向左键为E06B。有些键的扫描码非常夸张,比如Pause
Brk键的键码为E1177E1F014F077!主键盘键码如图11-5所示,扩展键盘键码如图11-6所示。
(点击查看大图)图11-5 主键盘键码 |
(点击查看大图)图11-6 扩展键盘键码 |
主机可以向键盘发送命令控制键盘,具体如下:
0xED命令设置键盘LED的状态,包括Num Lock、Caps Lock、Scroll Lock
LED的状态。接收到0xED命令后,键盘返回应答0xFA,接下来主机向键盘发送一个字节的命令数据格式如图11-7所示。1表示开,0表关。
(点击查看大图)图11-7 0xED命令后面跟的命令数据格式 |
0xF0设置扫描码集。当接收到0xF0,键盘返回0xFA应答。接下来主机向键盘发送一个字节的数据,如果数据为01~03,决定使用的扫描码集;如果数据为0x00,则主机返回当前使用的键盘扫描码集的编号。
0xF3设置打字重复率(Typematic Repeat
Rate)。当接收到0xF3,键盘返回0xFA应答。接下来主机向键盘发送一个字节的数据,表示具体的打字重复率值。
0xF4设置键盘使能,清除键盘输出缓存,使能键盘扫描,键盘接收到该命令后返回0xFA。
0xF5设置键盘关闭,清除键盘输出缓存,停止键盘扫描,键盘接收到该命令后返回0xFA。
0xFE请求重传。键盘接收到该命令后,键盘重新发送刚刚发送的字节;主机接收到该命令后,重新发送刚刚发送的字节给键盘。
0xFF键盘复位。
0xFA键盘发送到主机的应答。
0xAA键盘发送给主机的加电自检完成指示(Power On Self Test Passed)。
0x00/0xFF键盘发送给主机,表示错误或缓存溢出。
相关文章推荐
- VIP 原理和特点
- 键盘扫描程序 FPGA
- FW:分布式实时计算storm 原理…
- ARM MMU工作原理剖析(转)
- Android 键盘系统
- PS/2键盘原理
- 办公必备 键盘上的快捷键
- FW:分布式实时计算storm 原理…
- FW:分布式实时计算storm 原理…
- 编译链接原理   C++
- Java NIO原理和使用
- ARM9 2410移植之ARM中断原理,…
- ARM中断原理, 中断嵌套的误区,中…
- FW:分布式实时计算storm 原理…
- FW: WebGIS设计与实现原理 - ATL S…
- Hadoop pipes设计原理
- autorelease pool 原理剖析
- ARM中断原理, 中断嵌套的误区,中…
- 【转】Fedora 开机打开数字小键盘
- WCF 回调原理