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

常见鼠标种类有四种:总线鼠标、串行鼠标、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 鼠标,因为其通信原理相同。

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

 

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

 

整理人张杨。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值