分享

键盘扫描码

 F2967527 2021-12-26

一. 键盘的构造及历史

对于键盘,如果想要表示某个按键,硬件上对应着某个点,有两种方法。

一种是对于每个按键,都设计一个硬件的点。

一种是设计成矩阵式,即由多少行,多少列所组成。

举例说明:

某个键盘一共需要35个按键。

前者是要设计35个硬件上的点。

后者只需要设计7行5列即可实现7×5=35个按键。

行列的矩阵式,比独立的点的方式,硬件上更容易实现。

矩阵式的键盘

普通PC上的键盘,由于按键太多,为了之后的普及和通用性,要有个统一的标准,去定义哪个键值对应到键盘上的哪个按键。

因此,才会出现扫描码Scan Code。

二. 键盘中的扫描码Scan Code

从按下一个键盘上的字母,到手松开,实际上对应着一个通码Make Code和一个断码Break Code,两者概念上都属于扫描码Scan Code。

对应的按下键的动作产生的键码叫做通码Make Code。

释放的时候电路被断开产生的键码叫做断码Break Code。

三. 扫描码集合Scan Code Set

目前现存有3种Scan Code即,

Scan Code Set1(第一种扫描码集合)。

Scan Code Set2。

Scan Code Set3。

四. 第一种扫描码集合

Set1的Scan Code的Make Code和Break Code都是单字节。

Make code和Break Code的差别就在最高位,即

 Break code = make code + 0x80

将make code的最高位置1就是Break Code。

五. 键盘常见流程

(1)用户按下键盘上的某个键

(2)键盘的硬件产生Scan Code,其中目前常见的AT键盘中用的是Set2的Scan Code。按下是Make Code,释放是Break Code

(3)键盘的控制器将Set2的Scan Code转化为Set1的Scan Code。

           A. 此处是为了兼容旧的Scan Code Set1才去将Set2转为Set1。也可通过设置而禁止掉此处的转换。

           B. 将Scan Code Set2转为Scan Code Set1,对于普通PC机,一般是通过BIOS做的这个转换。

(4)控制器再将Set1的Scan Code发送给PC主机Host

(5)主机Host端,会有对应的驱动和软件去处理,将Scan Code转化为对应的字母而显示出来。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多