#include <stdio.h>
#include <gpm.h>

int my_handler(Gpm_Event *event, void *data)
{
  gpm_visiblepointer=1; /*Mauscursor immer vorhanden*/
  if(event->buttons & GPM_B_LEFT)
      if(event->type & GPM_DOWN)
         printf("Linker Button gedrückt: ");
      else if(event->type & GPM_UP)
         printf("Linker Button losgelassen: ");

  if(event->buttons & GPM_B_RIGHT)
      if(event->type & GPM_DOWN)
            printf("Rechter Button gedrückt: ");
      else if(event->type & GPM_UP)
            printf("Rechter Button losgelassen: ");

  if(event->buttons & GPM_B_MIDDLE)
      if(event->type & GPM_DOWN)
            printf("Mittlerer Button gedrückt");
      else if(event->type & GPM_UP)
            printf("Mittlerer Button losgelassen");

  printf(" an Position %d %d ",event->x, event->y);
  if(event->type &GPM_SINGLE)
      printf(" -> Einfacher Klick");
  if(event->type &GPM_DOUBLE)
      printf(" -> Doppelter Klick");
  if(event->type &GPM_TRIPLE)
      printf(" -> Dreifacher Mausklick");

  if(event->buttons & GPM_B_LEFT || event->buttons & GPM_B_RIGHT ||
     event->buttons & GPM_B_MIDDLE)
         printf("\n");
  return 0;
}

int main()
{
  Gpm_Connect connect;
  int c;

  connect.eventMask = ~0;  /*Alle Mausereignisse*/
  connect.defaultMask = 0;  /*Nichts geht an gpm*/
  connect.minMod = 0;        /*Es müssen keine Tasten gedrückt werden*/
  connect.maxMod = ~0;     /*Es dürfen aber alle Tasten gedrückt werden*/

  if(Gpm_Open(&connect, 0) == -1){ /*Verbindung zu gpm öffnen*/
        printf("Kann keine Verbindung zum Mouseserver herstellen\n");
        exit(0);
       }
  gpm_handler = my_handler; /*Handler initialisieren*/
  while((c = Gpm_Getc(stdin)) != EOF)
       printf("%d\n", c);
  Gpm_Close();
  return 0;
}