【发布时间】:2016-06-15 10:03:50
【问题描述】:
我正在用 C 语言为 PC 制作一个风琴合成器软件,因为我必须检测多个按键和按键释放,以便相应地同时播放音符。所以,我认为访问键盘缓冲区会有所帮助。但我不知道该怎么做。所以任何人都可以建议这样做的方法或一些新的想法来检测多个按键。为了检测单个按键和按键释放,我使用 kbhit() 和 getch() 函数制作了以下 C 代码:-
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
void keypress(char);
void delay(int);
int flag=0;
int main()
{
char c;
while(1)
{
if(kbhit())
{
c=getch();
printf("\nCharacter:%c",c);
getch();
keypress(c);
printf("\nKey Released");
}
}
return 0;
}
void keypress(char ch)
{
char c;
delay(50);
if(kbhit())
{
c=getch();
if(c==ch)
{
keypress(c);
}
}
}
void delay(int milliSeconds)
{
clock_t final_time = milliSeconds + clock();
while (final_time > clock());
}
但它有一些问题,例如:-
1). 未检测到多个按键
2).它会产生非常小的延迟
那么任何人都可以建议改进代码以解决上述问题或一些用于检测多个按键和按键释放的新技术。
平台:-Windows 8.1
如果解决方案对平台友好,那就太好了。
谢谢!
【问题讨论】:
-
您的意思是要像钢琴键盘一样使用 PC 键盘,同时按住多个键?您不妨考虑 WINAPI 函数GetKeyboardState
-
这是 DOS 编程,不是 Windows。
标签: c