汇编中的扫描码、ASCII码(也称字符码)、扩展码、虚拟键码 的区别

扫描码 是键盘对应按键的编码 ,虚拟键码 是操作系统对 “对应按键”的编码,
键盘ASCII码 ,是操作系统对“对应 虚拟键码”的编码(也称ASCII字符码或者字符码)

键盘扫描码:是每个键盘生产厂家为自己所生产的键盘设置的扫面方式,目的检测是那个键被按下。
ASCII码:是虚拟键码对应的编码。虚拟键码是按照相关国际标准制定,全世界的计算机都要遵守。
虚拟键码:为了解决不同键盘生产厂家生产键盘的排布或扫面方式不同,而建立的从键盘扫面到虚拟键码的映射,(即实现键盘扫描到虚拟键码的转换)

虚拟键码

在模拟键盘程序中会用到相关函数,其中有些步骤就是把正常的ASCII或者其他字符转换成虚拟键码!VkKeyScan就是将字符转换成虚拟键码用的。Windows开发者试图通过定义所谓的虚拟键码,以便经由与装置无关的方式处理键盘,这就是产生虚拟键码的目的!大多数虚拟键码的名称在WINUSER.H表头档案中都定义为以VK_开头。其中数字和字母的虚拟键码是ASCII码。Windows程式几乎从不使用这些虚拟键码;实际上,程式使用的是ASCII码字元的字元讯息。

虚拟指的是假定存在于思想中而不是现实世界中的一些事物,也只有熟练使用DOS组合语言编写应用程式的程式写作者才有可能指出,为什么对Windows键盘处理如此基本的键码是虚拟的而不是真实的。
对於早期的程式写作者来说,真实的键码由实际键盘硬体产生。在Windows文件中将这些键码称为「扫描码(scan codes)」。在IBM相容机种上,扫描码16是Q键,17是W键,18是E、19是R,20是T,21是Y等等。这时您会发现,扫描码是依据键盘的实际布局的。Windows开发者认为这些代码过於与设备相关了,於是他们试图通过定义所谓的虚拟键码,以便经由与装置无关的方式处理键盘。其中一些虚拟键码不能在IBM相容机种上产生,但可能会在其他制造商生产的键盘中找到,或者在未来的键盘上找到。
您使用的大多数虚拟键码的名称在WINUSER.H表头档案中都定义为以VK_开头。

当用户按下某个键时,  
1.键盘会检测到这个动作,并通过 键盘控制器 把 扫描码(scan code) 传送到计算机;   键盘扫描码跟具体的硬件有关的,不同厂商对同一个键的扫描码有可能不同。  
2.计算机接收到 扫描码 后,将其交给 键盘 驱动程序 ;  
3. 键盘驱动程序 把这个 扫描码 转换为 键盘虚拟码 ;   虚拟码与具体硬件无关,不同厂商的键盘,同一个键 的 虚拟码 总是相同的。
4.然后,键盘驱动程序 把该键盘操作的 扫描码 和 虚拟码 以及 其它信息 传递给 操作系统;
5.操作 系统将获得 的信息封装在一个 键盘消息 中,并把该 键盘消息 插入到 消息列队。 6.通过Windows的 消息系统,该 键盘消息 被送到 某个窗口 中;
7.窗口所在的应用程序 接收到消息后,可以了解到有关 键盘操作的信息,然后决定作出一定的响应

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值