我正在爲C語言製作PC的和聲合成器軟件,爲此我必須檢測多個按鍵和keyrelease,以便同時播放音符。所以,我認爲訪問鍵盤緩衝區會有所幫助。但我不知道如何。所以任何人都可以提出這樣做的方法或一些新的想法來檢測多個按鍵。用於檢測單按鍵和keyrelease我提出以下使用的kbhit(C代碼)和的getch()功能: -如何訪問PC鍵盤緩衝區以檢測多個按鍵和按鍵釋放?
#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
如果解決方案將平臺友好,這將是一件好事。
謝謝!
你的意思是你想使用電腦鍵盤,如鋼琴鍵盤,同時持有幾個鍵?您可能會考慮WINAPI函數[GetKeyboardState](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646299(v = vs.85).aspx) –
這是DOS編程,不是視窗。 – Lundin