#include <windows.h>     // Win32API Header File
#include <stdio.h>

/* ************************************************************************** */
/*                                                                            */
/*  Funkcia IsKeyPressed(int virtualKey)                                      */
/*         Je prave stlacena klavesa virtualKey? 0 nie, 1 ano                 */
/*                                                                            */
/* ************************************************************************** */

bool IsKeyPressed(int virtualKey)
{
    return ((GetAsyncKeyState(virtualKey)&0x8000)!=0?true:false);
}


/* ************************************************************************** */
/*                                                                            */
/*  Hlavny program - ukazka pouzitia, navyse je tam aj mys                    */
/*                                                                            */
/*  Skuste stlacit postupne Ctrl, Alt alebo Shift, pripadne                   */
/*  pohybte mysou a stlacte lave tlacitko na mysi...                          */
/*                                                                            */
/* ************************************************************************** */

int main(int argc, char* argv[])
{
   short x = 0;, y = 0;                                 // sem dame suradnice mysi
   BOOL lmouse = false;                                   // ci bolo stlacene Lave tlacitko

   HANDLE  hConsole;                           // ziskanie handle konzoly 
   hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // poznate z ulohy 2.7                                          
   COORD point = {2,2};                        // sem budeme vypisovat text 2:stlpec, 2:riadok
   
   while (true)                                // nekonecna slucka
     {
       SetConsoleCursorPosition(hConsole, point);  // nastavi sa na [2,2]
       
       printf(" S:%s", IsKeyPressed(VK_SHIFT  )?"*":" ");
       printf(" C:%s", IsKeyPressed(VK_CONTROL)?"*":" ");
       printf(" A:%s", IsKeyPressed(VK_MENU   )?"*":" "); 

       if (IsKeyPressed(VK_ESCAPE))            // Klavesa VK_ESCAPE konci program
         {
            printf("Escape!!        \n");
            break;

       }

/* ************************************************************************** */
/*                                                                            */
/*  Tato cast kodu zabezpeci nacitanie stavu mysi. Nemusite                   */
/*  mu rozumiet, ani nemusi byt vo vasom programe ak nechcete mys!            */
/*                                                                            */
/* ************************************************************************** */

       printf("  X:%d Y:%d                  \n", x, y);
       if (lmouse)
              printf("lave tlacitko na mysi");
       else 
                printf("                     ");

    INPUT_RECORD *str = new INPUT_RECORD[1];
    DWORD num = 0;
                                // nasledujuci prikaz zastavi a caka na udalost!
    ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), str, 1, &num); 
                                // vysledkom udalosti je: 
         x = str->Event.MouseEvent.dwMousePosition.X;
         y = str->Event.MouseEvent.dwMousePosition.Y;
       lmouse = str->Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED;

    Sleep(1);
/* ************************************************************************** */
   
   
   
   }                            // toto je koniec nekonecnej slucky

    return 0;                   // a toto koniec programu
}