微软积木○九七:虚拟键码

本文介绍了从传统机械键盘到扫描键盘的技术演变,重点讲解了虚拟键码的概念和作用。在Windows编程中,虚拟键码是通过WM_KEYDOWN等消息传递的,与扫描码不同,它们提供了一键一码的对应关系。文章还探讨了虚拟键码的使用场景,如F1-F12功能键、OEM扫描码、重复计数、键盘状态获取等,强调了了解这些细节对于深入理解和自定义键盘处理的重要性。
摘要由CSDN通过智能技术生成
导读:

   微软积木○九七:虚拟键码

  说实话,可能大家觉得有点“跑题”,不是讲 MFC 吗?怎么忽然讲到了 API 上来了?

  没办法,我们的教程不是向对读者的,我们的教程是面向“实践”的,如果你去买一本关于MFC的相关的书籍,那些书的定位肯定就认为读者已经充分掌握了 API 的基础内容了,而我们没办法作这样的定位,我们讲到有关 MFC 解决不了的事,那就必须得回到 API ,将好多的问题与知识点一一击破,否则,我们的教程根本没办法支持下去。

  那么我们的还能叫做《微软积木》么?能,MFC的积木是为我们做好的积木,是成品,而我们这一讲以及接下来几讲,是要告诉大家,我们如果自己去做出一款我们自己的“积木”来,我们是要从木头本身开始,一步一步地教大家如何做“积木”,呵呵。

  行了,闲言少叙,我们书归正传:

  我们上一讲与大家讲过,我们的键盘其实送进来的键码为“扫描码”,那么什么是扫描码呢?就是我们键盘其实是好多好多的小开关,当我们按下键盘时,有些开关是开的,有些开关是关的,如果是开的,那么键盘就输入相应的键喽,如果是关,那么就不会输入这个字符了吧,说起来简单,那怎么实现呢?

  一个办法就是直接使用开关,然后产生一个八位的二进制,去让电脑停止运行,从而去响应我们的键盘传入的信息,大家看图:

  我们图中只给大家做了一个按键(黄色的啊,呵呵,像吗?),其实这里可以有256个按键,当然,真正是用不到这么多的按键的,那怎么办?用几三条线去表示功能键 Alt Ctrl Shift ,所以理论上我们只可以用这八个字节的键盘去设置64+3=67个按键。

  其实上面的仅仅是理论,我们的键盘当然不能这么设置了,我们键盘可以用十六位线啊,当然也可以用32位线或64位,随便啊,

  可惜的是问题来了,如果我们增加一倍的线,就会使得我们的键盘的接口增加一倍,现在都是USB 接口了,老式的接口其实就是有很多眼,好多针的,那种键盘,我们就称之为“传统键盘”吧。

  当然,技术是在飞快地发展,我们的键盘也不例外,我们的键盘现在使用了一种技术,称之为“扫描技术”。

  什么叫扫描技术呢?也就是说,某一个时刻,键盘中发送一个键码去测试某一个键,如果这个键按下了,那么这个键码就被置成1(这是牛刀的理论啊,事实上可能不一定是这样),如果这个码没有被按下,就被置成0,大家看下面的图:

  请大家看,如果我们测试图中的黄色的那个按键,那么我们就需要将上面的第六个开关关上,右边的第六个开关关上,那么也就是说,我们假设上面四根是控制上面十六个按键的话,那么上面就放上 0110 右边的也放上 0110 然后测试的结果送到进我们准备好的寄存器就一切OK了。

  当然,你可能说,那也只能测试一个按键的状态啊,是不?

  不错
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值