发布网友 发布时间:2022-04-20 13:55
共2个回答
热心网友 时间:2023-02-15 04:04
这个比较复杂
一、PS/2协议下,键盘是每次发生按键/抬键动作,都会发送数据信号给主机。
按下一个键这个动作所包含的数据(通码)为1或2个字节,抬起一个键(断码)则是2或3个字节。如果按住一个键不放,则会不停地向主机循环发送通码,直到抬起按键发送断码。
PS/2的工作频率规范为10-20kHz,每位数据的传输时间大约是40-80微秒,加上中间的保留延迟,每个字节会占用0.5-1ms的传输时间。延迟小。
在PS/2规范的键盘下,每按一次键,发送一次信号。各个键盘的信号不一样,但可以同时发射。
二、USB协议下,键盘会以某个固定的回报率(每秒125-1000次),定期向主机发送当前按键的状态,每次发送8个字节,这8个字节的具体内容则是:
第一个字节:8位分别表示左右的Ctrl、Shift、Alt、Win各自是否被按下。这8个键统称为(modifer key),因为规范已经事先定义好每一位的含义,从而得以能够只用一个字节就表示8个键的状态。
第二个字节:保留(无用)
其余6个字节:当前正按下的6个(一般按键,比如字母、数字等)(如果按了7个以上,根据键盘主控芯片内置的程序,可能取最先按的6个,也可能取最后按的6个)。
即每1-8ms,可以发送最多14个按键的状态信息。
最多能发送14个按键,扣除Ctrl、Alt、Win、Shift一共8个键外,还剩下6个字母、数字等按键啦。
这个是USB规范的痛。
热心网友 时间:2023-02-15 05:22
看你扫描电路怎么做了,为省成本,做个矩阵扫描,最常见的就是3键避位了。然后几个控制键单独扫描,这样就可以满足大部分需求,键盘毕竟是成本很低的东西。当然,成本允许,每个键都扫描,那也行,反正hid协议也支持。只是扫描电路贵一点而已。所以不是ps2就行,以前10块钱的ps2键盘,三键一起按也滴滴叫
。