This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Problem with GetKeyState()


     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".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]