Permalänk

c++ tngbrds-inmatning

jag ska göra ett program som ska styra en radiostyrd bil,och tänkte använda den befintliga kontrollen,och styra den via parallelporten genom transistorer.

Men jag har inte lyckats lösa problemet hur man läser av två tangentbordsinmatningar samtidigt. Tex så trycker jag in "w" för att få den att gå fram,men samtidigt vill ja svänga å trycker in "a". Hur får ja den att fortsätta köra frammåt,men känna av att ja även trycker på "a",och således bör svänga?

Mvh Henril

Permalänk
Medlem

Det går inte i standard C++ vad jag vet, men det finns säkert libbar till det. Annars kan du ju göra det med WinAPI/wxWidgets/SDL eller liknande, kanske lite overkill men ändå...

Permalänk

sök på 'GetAsyncKeyState' i MSDN, kan lätt göra det du vill.

#define KEYDOWN(code) ((GetAsyncKeyState(code) & 0x8000) ? 1 : 0) #define KEYUP(code) ((GetAsyncKeyState(code) & 0x8000) ? 0 : 1) struct KEY_STATUS { bool pressed; bool down; bool released; }; KEY_STATUS m_Keys[255]; void UpdateInput() { for (int i = 0; i < 255; i++) { if (KEYDOWN(i) && !m_Keys[i].down) { m_Keys[i].pressed = 1; m_Keys[i].down = 1; m_Keys[i].released = 0; } else if (KEYDOWN(i)) { m_Keys[i].pressed = 0; m_Keys[i].down = 1; m_Keys[i].released = 0; } else if (m_Keys[i].down) { m_Keys[i].pressed = 0; m_Keys[i].down = 0; m_Keys[i].released = 1; } else { m_Keys[i].pressed = 0; m_Keys[i].down = 0; m_Keys[i].released = 0; } } }

.pressed är om du tryckt ner knappen en gång.
.down är om knappen är nertryckt
.released är om knappen varit nertryckt men nu är släppt.

Sen måste du ju kunna koderna för knapparna, hittade en lista jag brukar använda.

#define VK_0 0x30 #define VK_C 0x43 #define VK_O 0x4F #define VK_1 0x31 #define VK_D 0x44 #define VK_P 0x50 #define VK_2 0x32 #define VK_E 0x45 #define VK_Q 0x51 #define VK_3 0x33 #define VK_F 0x46 #define VK_R 0x52 #define VK_4 0x34 #define VK_G 0x47 #define VK_S 0x53 #define VK_5 0x35 #define VK_H 0x48 #define VK_T 0x54 #define VK_6 0x36 #define VK_I 0x49 #define VK_U 0x55 #define VK_7 0x37 #define VK_J 0x4A #define VK_V 0x56 #define VK_8 0x38 #define VK_K 0x4B #define VK_W 0x57 #define VK_9 0x39 #define VK_L 0x4C #define VK_X 0x58 #define VK_A 0x41 #define VK_M 0x4D #define VK_Y 0x59 #define VK_B 0x42 #define VK_N 0x4E #define VK_Z 0x5A