質問失礼します。いまC++でキーボードの押し離しを検出しようと試みています。
キーを押すことは認識できたのですが、
離す時の処理が思いつかなかったので、知恵を貸していただけると幸いです。
ちなみに複数のキーを取得できたらいいなと思っています。
よろしくお願い致します。
C
1#include "input_data.hpp" 2 3using namespace std; 4 5array<float, 10> input_time; 6array<string, 10> input_button; 7 8int Csv_input(array<string, 10> input_button, array<float, 10> input_time){ 9 10 ofstream ofs("input_button.csv"); 11 12 if(!ofs){ 13 cout << "ファイルが書き込めません" << endl; 14 return -1; 15 } 16 17 for( int i = 0; i < input_button.size(); i++){ 18 ofs << input_button[i] << "," <<input_time[i] << endl; 19 } 20 return 0; 21} 22 23string input_key(char input){ 24 string button_code; 25 26 if(input == 0x4D) button_code = "VK_LEFT"; 27 if(input == 0x48) button_code = "VK_UP"; 28 if(input == 0x4B) button_code = "VK_RIGHT"; 29 if(input == 0x50) button_code = "VK_DOWN"; 30 31 if(input == 'a') button_code = "A"; 32 if(input == 's') button_code = "S"; 33 if(input == 'd') button_code = "D"; 34 if(input == 'w') button_code = "W"; 35 36 cout << "input : " << input << endl; 37 cout << "button : " << button_code << endl; 38 return button_code; 39} 40 41int main(void){ 42 43 int j = 0; 44 string input_key_code; 45 clock_t start, end; 46 start = clock(); 47 int c; 48 49 char input = 0; 50 char before_input; 51 52 53 while(1){ 54 55 if(j >= 10){ //終了の条件 56 //Csv_input(inputButton); //csvに保存する 57 Csv_input(input_button, input_time); 58 break; 59 } 60 61 if(c = kbhit()){ //入力があったら 62 63 input = getch(); //キーの取得 64 cout << "input :" << input << endl; 65 if(input == 0xFFFFFFE0){ 66 input = getch(); //特殊キーの場合 67 } 68 if(input == before_input){ //同じボタンを押し続けていたら 69 70 }else if(input != before_input){ //以前と違うボタンを押したら 71 72 input_key_code = input_key(input); //キーコードへの変換 73 cout << "input_key : " << input_key_code << endl; 74 end = clock(); 75 input_button[j] = input_key_code; //入力ボタンの保存 76 input_time[j] = end; //時間の保存 77 j++; 78 79 } 80 81 before_input = input; //以前入力していたボタンを保存 82 83 }else{ 84 before_input = 0; 85 } 86 87 Sleep(1000); //0.1ms待つ 88 } 89 cout << "終了したよ"<< endl; 90 91 return 0; 92}

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。