键盘和CPU的交互方式是中断和读取端口,这个操作是串行的.CPU只接收通知并读取端口的扫描码,这个通知只能知通知一个事件:某个键被按下或弹起. 为此一个键实际需要两个扫描码:一个表示按下,一个表示弹起.如果按下的扫描码为X,则弹起的扫描码为X+0x80.
键盘端口在xp下端口和中断号都是定死的,即中断号为0x93,商品号为0x60.每次0x93中断发生,CPU都去读取0x60中的扫描码.0x60中只保存一个字节,但扫描码可以有两个字节,此时会发生两次中断,CPU会先后读到扫描码的两个字节.