• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Obsluga stanu klawiatury

HackNation - ogólnopolski hackathon
0 głosów
786 wizyt
pytanie zadane 20 marca 2016 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)

Witam, potrzebowałbym w swoim programie móc sprawdzać stan odpowiednich klawiszy.

Do czego doszedłem to to, że program do odczytu bierze zawsze (?) klawisz wcisniety jako ostatni ( co wydaje sie logiczne ) niezaleznie od liczby klawiszy, ktore nadal sa wcisniete. Doszedłem do tego, że mamy cos takiego jak zdarzenia, ale są one "jednorazowe", więc potrzebuje zczytywac stan klawiszy a nie opierac na wczesniej wspomnianych zdarzeniach.

Moje pytanie brzmi - w jaki sposob jestem w stanie sprawdzic stan klawiatury, albo konkretnego klawisza?

Taki "pseudokodowy przykladzik" jak bym to widział to np funkcja:

bool stan(char klawisz)

ktora np. zwraca true jesli klawisz jest wcisniety i false jesli nie jest.

Istnieje ( no pewnie że tak ) taka funkcja? Błądząc po angielskich forach dopatrzyłem się czegos takiego jak SDL library, ale wyglada to na cholernie duze i skomplikowane, a mi chodzi tylko i wylacznie o taka mala funkcje, nie potrzebuje ogarniac calej wielkiej biblioteki, zwłaszcza, że jestem raczej początkującym, a to na co patrze wydaje mi się raczej zaawansowane laugh

2 odpowiedzi

+1 głos
odpowiedź 21 marca 2016 przez Pascal Bywalec (2,720 p.)
wybrane 21 marca 2016 przez Sinnley
 
Najlepsza

Możesz użyć funkcji

SHORT WINAPI GetAsyncKeyState(
  _In_ int vKey
);

z windows.h https://msdn.microsoft.com/pl-pl/library/windows/desktop/ms646293%28v=vs.85%29.aspx

a tu masz listę klawiszy https://msdn.microsoft.com/pl-pl/library/windows/desktop/dd375731%28v=vs.85%29.aspx

 

Na przykład w następujący sposób sprawdzisz czy naciśniętymi klawiszami jest S i U

bool clock = false;
	
	while (!clock)
	{
		clock = GetAsyncKeyState(0x53) && GetAsyncKeyState(0x55);
	}

 

0 głosów
odpowiedź 20 marca 2016 przez Fenix Nałogowiec (26,750 p.)
Może po prostu getcharem, i zczytuj jaki klawisz Ci wczytało i zapamiętuj czy co tam dalej chcesz z nim robić.

http://www.cplusplus.com/reference/cstdio/getchar/
komentarz 20 marca 2016 przez Sinnley Stary wyjadacz (12,810 p.)
Pozwole sobie zacytować: "Do czego doszedłem to to, że program do odczytu bierze zawsze (?) klawisz wcisniety jako ostatni ( co wydaje sie logiczne ) niezaleznie od liczby klawiszy, "

Getch wczyta tylko pierwszy klawisz, jesli nie bede wciskal ich pokolei to nie zadziala. A mi chodzi o ciagle trzymanie klawisza i/lub trzymanie kilku na raz w celu odmiennego działania.
komentarz 21 marca 2016 przez Fenix Nałogowiec (26,750 p.)
to może pętla do tego? Co według Ciebie oznacza trzymanie klawisza z technicznego punktu widzenia? ;)
komentarz 21 marca 2016 przez Sinnley Stary wyjadacz (12,810 p.)
Tyle, ze masz go wcisniety, trzymasz go palcem. Sam sprawdz sobie w kompilatorze jak to dziala. Albo nawet nie w kompilatorze tylko tutaj. Napisz jakies bezsensowne znaki, kursor wsadz gdzies w srodek, przytrzymaj lewa strzalke zeby poruszac sie w lewo, a nastepnie caly czas trzymajac lewa strzalke wcisnij tez prawa. Zaczniesz poruszac sie w prawo mimo wcisniecia kilku przyciskow. Stad nie mozna tutaj probowac robic tego na podstawie odczytu bo i tak odczytasz tylko jeden klawisz. Trzeba sprawdzic stan klawiatury.

Podobne pytania

0 głosów
2 odpowiedzi 294 wizyt
0 głosów
0 odpowiedzi 210 wizyt
0 głosów
2 odpowiedzi 739 wizyt
pytanie zadane 18 kwietnia 2024 w Inne języki przez sensor Użytkownik (680 p.)

93,624 zapytań

142,544 odpowiedzi

323,031 komentarzy

63,129 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 1210p. - dia-Chann
  2. 1197p. - DziarnowskiJ
  3. 1177p. - Łukasz Piwowar
  4. 1172p. - CC PL
  5. 1161p. - Maurycy W
  6. 1141p. - Adrian Wieprzkowicz
  7. 1138p. - raydeal
  8. 1116p. - rucin93
  9. 1101p. - robwarsz
  10. 1100p. - Mariusz Fornal
  11. 1024p. - ssynowiec
  12. 1024p. - Tomasz Bielak
  13. 885p. - Dominik Łempicki (kapitan)
  14. 847p. - Grzegorz Aleksander Klementowski
  15. 649p. - Michal Drewniak
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...