PS/2键盘原理 【转】

早期的键盘实际上是一种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所示。

 
(点击查看大图)图11-5  主键盘键码
 
(点击查看大图)图11-6  扩展键盘键码


扩展键盘的键被释放的时候,不是首先发送F0加E0开头的键码,而是发送E0F0加一个字节的区分码,比如向左键被释放时发送到主机的键码为E0F06B。

主机可以向键盘发送命令控制键盘,具体如下:

0xED命令设置键盘LED的状态,包括Num Lock、Caps Lock、Scroll Lock LED的状态。接收到0xED命令后,键盘返回应答0xFA,接下来主机向键盘发送一个字节的命令数据格式如图11-7所示。1表示开,0表关。

 
(点击查看大图)图11-7  0xED命令后面跟的命令数据格式

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键盘发送给主机,表示错误或缓存溢出。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值