1 Star 0 Fork 1

saigon/Algorithms

forked from charlieshu/Algorithms 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
多键盘监控操作.cpp 1.47 KB
一键复制 编辑 原始数据 按行查看 历史
charlie 提交于 2024-01-09 00:01 . move from github to gitee
#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;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/saigonshu/algorithm.git
git@gitee.com:saigonshu/algorithm.git
saigonshu
algorithm
Algorithms
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385