鼠标键盘与系统的连接(话题提出人:张杨)

    技术2022-05-11  145

    常见鼠标种类有四种:总线鼠标、串行鼠标、PS/2鼠标和USB鼠标。下面是鼠标键盘与系统之间关系的示意图:

    做了一个文本示意图,大家就着吧。

     

                          +--------------------------+

                          |                          |

         +--------------->|                          |<---------------+

         |                | 消息分发机制             |                |

         |                +--------------------------+                |

         |                     //             // 字符                 |

         |                     ||             //                      |

         |                     ||         +----------+                |

         |                     按键状态   |字符      |                |

         |                     XY     |映射表    |                |

         |                     ||         +----------+                |

         |                     ||              //                     |

         |                     ||              ||扫描码               |

         //                    //              //                     //

    +----------+          +----------+    +----------+           +----------+

    | 协议解释 |          |  PS/2    |    |          |           |          |

    |          |          |          |    |键盘      |           |协议解释  |

    |          |          | 协议解释 |    |协议解释  |           |          |

    +----------+          +----------+    +----------+           +----------+

         //                    //              //                     //

         ||                    ||              ||                     ||

         //                    //              //                     //

    +----------+          +--------------------------+           +----------+

    | 相关     |          |                          |           |          |

    |          |          |                          |           |8251      |

    | 设备驱动 |          | 8042驱动程序             |           |驱动程序  |

    +----------+          +--------------------------+           +----------+

        //                             //                             //   软件

    ----||-----------------------------||原始数据---------------------||-------

        //                             //                             //   硬件

    +----------+          +--------------------------+           +----------+

    | ISA/PCI  |          |                          |           |  8251    |

    |          |          |                          |           |也在Super |

    |  设备    |          | 8042(在南桥SuperI/O中) |           |  I/O   |

    +----------+          +--------------------------+           +----------+

         //                    //               //                   //

         ||                  PS/2鼠标协议   键盘协议                 ||

         //                    //               //                   //

    +----------+          +----------+    +----------+           +----------+

    |          |          |          |    |          |           |          |

    |总线鼠标  |          |PS/2鼠标  |    |键盘      |           |串行鼠标  |

    |          |          |          |    |          |           |          |

    +----------+          +----------+    +----------+           +----------+

     

    具体的过程是这样的:PS/2鼠标通过PS/2鼠标协议与8042通信(该通信过程是基于串行协议的,一个开始位、一个奇偶校验位、一个停止位);PS/2鼠标协议解释程序通过8042驱动程序获取8042得到的原始数据;PS/2鼠标协议解释程序进行解释后分发给消息处理系统。

    键盘的数据获取、解释过程也是同上面的描述一致的,只是键盘协议解释程序在解释键盘扫描码的同时会在“字符映射表”中查找扫描码对应的字符。Windows下有键盘左手习惯、右手习惯等应该是通过键盘字符映射表来实现的。

    同样的8042芯片,接待由滚轮的鼠标和不带滚轮的鼠标所使用的PS/2鼠标协议解释程序是不一样的。这也就是双飞燕、罗技等鼠标需要额外的驱动的原因。滚轮鼠标的协议是非滚轮鼠标的协议的扩展,所以支持非滚轮鼠标的协议也可以支持滚轮鼠标(但不支持滚轮功能)。非滚轮鼠标的协议交互有一定的规则,该规则目前没有详细的文档,但是可以找到一些实验结果,通过鼠标控制芯片的数据手册也可以找到一些内容。基本鼠标数据包包含三个字节,即按键状态、X变化值、Y变化值。滚轮鼠标应该还包含第四个字节即滚轮的信息。

    使用相同控制芯片的鼠标因为使用同样的串行协议,所以可以方便的更改为串行鼠标,同理串行鼠标也可以改为PS/2 鼠标,因为其通信原理相同。

    鼠标、键盘在宏观上是输入设备,实际上计算机也是要向鼠标发送命令的,也就是说还是一个双向设备。

     

    总结这么点,欢迎大家补充。

     

    整理人张杨。

     


    最新回复(0)