1.键盘扫描码:
键盘上的每个键都有一个包含在字节低7位(位6-0)中相应的扫描码,在高位(位7)表示是按键还是松开按键。位7=0按键按下,位7=1表示按键松开。
例如,按下键"A"的接通码是0x1E。当一个按下的键被松开时,从键盘控制器端口收到的就是一个断开码。对于XT键盘,断开码是其接通码的最高位取1,相当于加上0x80。例如,上述"A"键的断开码就是 0x80 + 0x1E = 0x9E。
表7-4是XT键盘的扫描码表。
但是对于那些PC/XT标准83键键盘以后新添加的("扩展的")AT键盘上的按键(如右边的Ctrl键和右边的Alt键等),则其接通和断开扫描码通常有2~4B,并且第1个字节一定是0xE0。例如,按下左边的非扩展Ctrl键时会产生1B接通码0x1D,而按下右边的Ctrl键时就会产生扩展的2B接通码0xE0、0x1D。对应的断开码是0xE0、0x9D。
根据计算机的发展,目前已有三套扫描码集可供使用:
第一套扫描码集:原始XT键盘扫描码集。目前的键盘已经很少发送这类扫描码。
第二套扫描码集:现代键盘默认使用的扫描码集,通常称为AT键盘扫描码集。
第三套扫描码集:PS/2键盘扫描码集。原IBM推出PS/2微机时使用的扫描码集,已很少使用。
AT键盘默认发送的是第二套扫描码集。虽然如此,主机键盘控制器为了与PC/XT的软件兼容,仍然会把所有
接收到的第二套键盘扫描码转换成第一套扫描码。因此,我们在为键盘控制器进行编程时通常只需要了解第一套
扫描码集即可。
主机键盘控制器专门用来对接收到的键盘扫描码进行解码,并把解码后的数据发送到操作系统的键盘数据队列
中。键盘控制器通常采用Intel 8042单片微处理器芯片或其兼容电路。现在的PC都已经将键盘控制器集成在主板芯片组中,但是功能仍然与使用8042芯片的控制器相兼容。
键盘控制器接收键盘发送来的11位串行格式数据。其中第1位是起始位,第2~9位是8位键盘扫描码,第10位
是奇校验位,第11位是停止位。键盘控制器在收到11位的串行数据后就将键盘扫描码转换成PC/XT标准键盘兼
容的系统扫描码,然后通过中断控制器IRQ1引脚向CPU发送中断请求。当CPU响应该中断请求后,就会调用键盘
中断处理程序来读取控制器中的XT键盘扫描码。
804x键盘命令:
系统向端口0x60写入1字节,便是发送键盘命令。有的命令后还需跟一个参数。键盘在接收到命令后20ns内给予回复,即回送一个命令响应。
804x键盘控制器命令:
系统向输入缓冲(端口0x64)写入1字节,即发生一键盘控制器命令。可带一个参数。参数是通过写0x60端口发送的。见表7-3所示。
阅读(5575) | 评论(0) | 转发(0) |