Ncurses: Mausunterstützung


<<< ncurses-Startseite ncurses << Inhaltsverzeichnis
< Formulare Pads >



Ncurses bietet Mausunterstützung. Standardmäßig ist diese Funktionalität deaktiviert. Zur Aktivierung ist die Funktion

mmask_t mousemask(mmask_t newmask, mmask_t *oldmask);

mit der gewünschten Bitmaske aufzurufen. Vordefinierte Masken sind (auszugsweise):

ALL_MOUSE_EVENTS Alle möglichen Mausereignisse
REPORT_MOUSE_POSITION Mausposition melden
BUTTON1_CLICKED Maustaste 1 geklickt
BUTTON1_DOUBLE_CLICKED Maustaste 1 doppelgeklickt
BUTTON2_CLICKED Maustaste 2 geklickt
BUTTON2_DOUBLE_CLICKED Maustaste 2 doppelgeklickt
BUTTON3_CLICKED Maustaste 3 geklickt
BUTTON3_DOUBLE_CLICKED Maustaste 3 doppelgeklickt
BUTTON_SHIFT Zusätzlich SHIFT-Taste gedrückt
BUTTON_CTRL Zusätzlich STRG-Taste gedrückt
BUTTON_ALT Zusätzlich ALT-Taste gedrückt

Die Abfrage des Auftretens eines durch die Mausmaske festgelegten sichtbaren Mausereignisses kann durch

int getmouse(MEVENT *event);

erfolgen.

BeispielBearbeiten

#include <ncurses.h>
#include <stdlib.h>

MEVENT *mev;

void quit(void)
{
  free(mev);
  endwin();
}

int main(void)
{
  int ch;
  mev = (MEVENT *)malloc(sizeof(MEVENT));

  initscr();
  atexit(quit);
  clear();
  noecho();
  curs_set(0);
  cbreak();
  keypad(stdscr, TRUE);
  start_color();
  mousemask(BUTTON1_CLICKED, 0);

  init_pair(1, COLOR_YELLOW, COLOR_BLUE);
  bkgd(COLOR_PAIR(1));
  mvaddstr(5, 3, "Programm durch anklicken der Maustaste 1 beenden");
  refresh();
 
  for(;;)
  {
    ch=getch();
	
    switch(ch)
    {
      case KEY_MOUSE:
      { 
        if(getmouse(mev) == OK)
        {
          exit(0);
        }
      }	
    }	
  }   

  return (0);  
}

 


<<< ncurses-Startseite ncurses << Inhaltsverzeichnis
< Formulare Pads >