This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
Problem with GetKeyState()
- To: gnu-win32 at cygnus dot com
- Subject: Problem with GetKeyState()
- From: GBradfor <GBradfor at fhssmtp dot redstone dot army dot mil>
- Date: Wed, 5 Nov 1997 15:02:15 -0600
What is wrong with the following program?
#include <stdio.h>
#include <stdarg.h>
#include <windows.h>
#include "Functions.h"
void main (void)
{
short keystate;
printf("\nThe program has started.\n");
while (!(keystate=GetKeyState(0x61)));
printf("\nAnd the appropriate key has been pressed.\n");
if (0x8 & keystate)
{
printf("\'a\' is pressed.\n");
}
while (keystate=GetKeyState(0x61));
printf("\'a\' has been released.\n");
}
It is compiled under bash with
gcc -o keystate.exe keystate.c -I$GCC_WIN_INCLUDE -luser32
where GCC_WIN_INCLUDE is an environment variable pointing to the Windows32
directory.
As I understand the documentation on this function, GetKeyState() takes the
ASCII code for A-Z, a-z, and 0-9 as input (the virtual-key code for
others). It returns a value where the high-order bit is set for key down,
and it is reset for key up. The low-order bit is set and reset for
"toggle-able" keys.
Given this, and that 0x61 is ASCII for 'a', I would think that the program
would print the opening statement, wait for 'a' to be struck, print the
next two statements, wait for 'a' to be released, and print the last
statement.
This ain't happening. The program prints the first statement and hangs.
What am I misunderstanding here?
Thanks for your help and patience.
/s/
Pat Bradford
Respond to:
gbradfor@redstone.army.mil
AND/OR
p_n_brad@traveller.com
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".