WinApi keyboard event

0

Chciałbym zrobić coś takiego że
if (KEYBOARD_DOWN)
//pobierz to co zostało wciśnietę

myślałem, że do pobierania jest GetAsyncKeyState, ale jakoś ten kawałek kodu nie działa (wyświetla zero) wciskam w

 
    char zmienna;
    std::cin >> zmienna;
    short j = GetAsyncKeyState(119);
    std::cout << j;
    zmienna = getch();
    short i = GetAsyncKeyState(119);
    std::cout << i;

i mam dwa pytania

  1. jak bez dodatkowych bibliotek (tylko tymi które są w standardzie) sprawdzić czy jest jakiś event, a jeżeli jest to jest to keypressdown czy keydown?
  2. jak pobrać to co zostało ostatnio na klawiaturze wciśnięte?
1
  • Biblioteka standardowa C++ nie wspiera obsługi klawiatury. W aplikacjach konsolowych obsługą klawiatury zajmuje się program zewnętrzny - konsola. Tłumaczy ona zdarzenia klawiatury na tekst który jest przesyłany na wejście twojego programu.
  • GetAsyncKeyState to nie jest funkcja biblioteki standardowej.
  • GetAsyncKeyState działa w ten sposób, że w momencie wywołania sprawdza, czy dany klawisz jest wciśnięty czy nie.

Zapewne przyda ci się (niestandardowa) funkcja getch z conio.h

0

hm, nie wiedziałem o tym że ta metoda nie jest w standardzie, muszę poczytać jednak co należy do standardu a co nie ;). A czy jest możliwość jakaś to robić? (wiem ze SDL ma taką obsługę), ale za pomocą WinApi? (robię program pod konsole)

0

GetAsync z windows.h rowniez sie sprawdzi. Tylko nie w taki sposob jak ty to robisz. Ta funkcja zwraca klawisz w momencie klikniecia. Musisz to wrzucic w petle ktora bedzie sobie chodzila. Do niej jakis sleep zeby nie zezarlo ci calego procesora ;) W jakims innym temacie kiedys dawalem jak sie sprawdza czy klawisz zostal wcisniety np. Arrow Up Down czy puszczony Up.

0

Najlepszym sposobem jest założenie HOOK'a na klawiaturę, nie potrzeba żadnej pętli typy while(true) a co za tym idzie zużycie procesora nie wynosi 100%.

EDIT: Najlepszym, jeżeli chcesz znać wszystkie kliknięcia na klawiaturze a nie tylko w swojej aplikacji.

1

Panowie poprzednicy, "klika" to się myszką a nie klawiaturą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1