检测键盘与鼠标差不多,但是它比较好记

但是比较奇怪,比如你想要检测字母,必须是它的大写

具体的就参照虚拟键盘值表,上百度可以查到

为了能更清楚地表达,我编了个小程序


2019.10.6更新:有人说之前的程序一直打印,应该优化一下,今天想起来,小改了一下,现在是检测到变化后才打印一次,代码放到了最下面。

#include<iostream>
#include<windows.h>#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) //必要的,我是背下来的 using namespace std;void color(int a){//改变输出的颜色,比system("color x")快得多SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
/*
<span style="white-space:pre"> </span>字 1    深蓝色2    深绿色3    深青色 4   深红色5    深粉色6    黄色7 深白色8    灰色9 浅蓝色10   浅绿色 11  浅青色 12  浅红色 13  浅粉色 14  浅黄色 15  浅白色 背景1~15      黑色 16~31        深蓝色 32~47       深绿色48~63        深青色64~79        深红色80~95        深粉色96~111       深黄色112~127  深白色128~143  灰色144~159   浅蓝色160~175  浅绿色176~191  浅青色192~207  浅红色208~223  浅粉色224~239  浅黄色240~255  浅白色
*/
}void check(char c){//检测某个按键是否按下,按下就改变输出颜色if(!KEY_DOWN(c))color(7);else color(112);printf("  %c  ",c);color(7);
}int main(){while(1){check('Q');check('W');check('E');check('R');check('T');check('Y');check('U');check('I');check('O');check('P');printf("\n\n ");check('A');check('S');check('D');check('F');check('G');check('H');check('J');check('K');check('L');printf("\n\n  ");check('Z');check('X');check('C');check('V');check('B');check('N');check('M');Sleep(20);//循环时间间隔,防止太占内存 system("cls");//清屏 }return 0;
}
#include<iostream>
#include<bitset>
#include<windows.h>#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) //必要的,我是背下来的 using namespace std;void color(int a){//改变输出的颜色,比system("color x")快得多SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}bitset<30>down;//记录当前键盘按下状态
bitset<30>pre;//记录前一时刻键盘按下状态void check(char c){//检测某个按键是否按下,按下就改变一下变量if(!KEY_DOWN(c))down[c-'A']=0;else down[c-'A']=1;
}void print_letter(char c){if(!down[c-'A'])color(7);else color(112);printf("  %c  ",c);color(7);
}void print(){system("cls");//清屏print_letter('Q');print_letter('W');print_letter('E');print_letter('R');print_letter('T');print_letter('Y');print_letter('U');print_letter('I');print_letter('O');print_letter('P');printf("\n\n ");print_letter('A');print_letter('S');print_letter('D');print_letter('F');print_letter('G');print_letter('H');print_letter('J');print_letter('K');print_letter('L');printf("\n\n  ");print_letter('Z');print_letter('X');print_letter('C');print_letter('V');print_letter('B');print_letter('N');print_letter('M');
}int main(){print();while(1){pre=down;for(int i=0; i<26; i++){check(char('A'+i));}if(down!=pre)print();//检测到按键状态变化再打印Sleep(20);//循环时间间隔,防止太占内存 }return 0;
}

C++检测键盘某键是否按下相关推荐

  1. js检测键盘组合键,禁止F12

    js检测键盘组合键ctrl+p js检测键盘组合键ctrl+d js检测键盘组合键ctrl+s js禁止F12 体验地址:点击在线体验 <!DOCTYPE html> <html l ...

  2. 按下鼠标滚轮c语言,C++检测鼠标某键是否按下

    我曾经为了找到检测的方法,用了好几个小时,但是还是没有有效且简洁的方法 后来我自己研究出了一种方法,分享给大家 直接上代码 #include #include #define KEY_DOWN(VK_ ...

  3. 矩阵键盘 多键组合 c语言,矩阵键盘的检测和独立按键有很大的区别

    描述 先说矩阵键盘,因为我写的组合键代码是在矩阵键盘的基础上写的,当然在独立按键上写组合键更简单一些.所以当你矩阵键盘的组合键会写的时候,你在独立按键上的组合键也就会写了. 矩阵键盘的检测和独立按键有 ...

  4. 事件冒泡及阻止事件冒泡 事件的触发 事件参数对象 获取用户按下键盘的键

    事件冒泡及阻止事件冒泡 <!DOCTYPE html> <html lang="en"> <head><meta charset=&quo ...

  5. 计算机如何识别这是一个键盘,键盘两个键同时按下时计算机如何识别被按下的是哪个键...

    https://m.toutiaocdn.com/i6831165140000309768/?app=news_article&timestamp=1590675308&use_new ...

  6. js模拟键盘某个键按下_键盘党如何优雅的使用Quicker

    本文来自网友@Ever.他是大量优秀动作的作者,特别是"Ever智识"动作深受好评. 感谢@Ever! 看到很多安利Quicker的小伙伴们都说它是鼠标党的利器,作为一个经常使用Q ...

  7. 键盘上哪个键是插入建_如何在没有插入键的情况下按键盘上的“插入”?

    键盘上哪个键是插入建 Finding a keyboard that has all the features you want can be a bit of a task at times, bu ...

  8. android 键盘按下事件,Android虚拟键盘上下左右键按下和弹起的响应事件

    //按键按下,所触发的事件 public boolean onKeyDown(intkeyCode, KeyEvent event) {switch(keyCode) {caseKeyEvent.KE ...

  9. OnKeyPress事件和Javascript检测键盘输入

    对于有些时候,我们需要检测用户键盘输入的键盘信息,来处理一些相应的事件. 这里田子建议使用OnKeyPress=""事件来处理.相类似的还有OnKeyUp和OnKeyDown事件, ...

最新文章

  1. 爬楼梯[LeetCode]
  2. Android开发--Input/OutputStream操作
  3. python打包的程序很大_Pyinstaller 打包以及pipenv 虚拟环境应用,以及打包出来程序太大的解决办法...
  4. VS Code非英语版本连接TFS错误解决方案
  5. linux 内核连接跟踪,Linux内核连接跟踪锁的优化分析(1)
  6. PCA原理分析和意义(二)
  7. 2021牛客多校7 - xay loves trees(dfs序+主席树-标记永久化)
  8. python进阶:搞懂装饰器和切面编程
  9. 会话(session)
  10. 怎样写一篇优秀论文?看完受益匪浅!
  11. 蓝牙耳机芯片检测软件_安凯微推出TWS真无线蓝牙5.0耳机芯片
  12. java马克思手稿_java 循环嵌套解决一元,二元,三元方程(增长率,鸡兔同笼,马克思手稿)...
  13. UML类图之六种基本关系详解
  14. 23_触发器_库存与订单实战
  15. C语言 #和##的用法
  16. 数据库高可用性之数据的复制.二十一
  17. java获取手机屏幕大小_获取手机屏幕大小
  18. Javascript和C#正则只保留英文、数字、汉语、空格
  19. 计算机游戏泡泡龙,泡泡龙电脑版
  20. 干货丨面向新基建,安全厂商都准备了哪些前瞻性的“武器”?

热门文章

  1. centOS6.5中静默安装oracle 11gR2
  2. xm-select使用
  3. 为不喝的朋友准备的!
  4. git merge 冲突解决
  5. win7无损分区和硬盘分区调整合并
  6. 独家揭秘!2.5亿用户的美团智能推荐平台是如何构建的?
  7. 使用Helm在k8s集群上部署以太坊私有链
  8. 【C++】在 Visual Studio 调试器中指定符号 (.pdb) 和源文件(转载自RSS翻译)
  9. 全家都是博士是一种什么样的体验?
  10. 火力全开,重新定义蓝牙耳机!新一代南卡OE Pro不入耳式蓝牙耳机震撼来袭