ENTRYPOINT Bool antinspect_handle_event (ModeInfo *mi, XEvent *event) { antinspectstruct *mp = &antinspect[MI_SCREEN(mi)]; if(event->xany.type == ButtonPress && event->xbutton.button == Button1) { mp->button_down_p = True; gltrackball_start(mp->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if(event->xany.type == ButtonRelease && event->xbutton.button == Button1) { mp->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (mp->trackball, event->xbutton.button, 5, !event->xbutton.state); return True; } else if(event->xany.type == MotionNotify && mp->button_down_p) { gltrackball_track (mp->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } return False; }
/** handle X event (trackball) */ ENTRYPOINT Bool chess_handle_event (ModeInfo *mi, XEvent *event) { Chesscreen *cs = &qs[MI_SCREEN(mi)]; if(event->xany.type == ButtonPress && event->xbutton.button == Button1) { cs->button_down_p = True; gltrackball_start (cs->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if(event->xany.type == ButtonRelease && event->xbutton.button == Button1) { cs->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (cs->trackball, event->xbutton.button, 5, !event->xbutton.state); return True; } else if(event->xany.type == MotionNotify && cs->button_down_p) { gltrackball_track (cs->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } return False; }
ENTRYPOINT Bool jigglypuff_handle_event(ModeInfo *mi, XEvent *event) { jigglystruct *js = &jss[MI_SCREEN(mi)]; if(event->xany.type == ButtonPress && event->xbutton.button == Button1) { js->button_down = 1; gltrackball_start(js->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH(mi), MI_HEIGHT(mi)); return True; } else if(event->xany.type == ButtonRelease && event->xbutton.button == Button1) { js->button_down = 0; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (js->trackball, event->xbutton.button, 10, !!event->xbutton.state); return True; } else if(event->xany.type == MotionNotify && js->button_down) { gltrackball_track(js->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH(mi), MI_HEIGHT(mi)); return True; } return False; }
ENTRYPOINT Bool rubikblocks_handle_event (ModeInfo *mi, XEvent *event) { rubikblocks_conf *cp = &rubikblocks[MI_SCREEN(mi)]; if(event->xany.type == ButtonPress && event->xbutton.button == Button1) { cp->button_down = True; gltrackball_start(cp->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH(mi), MI_HEIGHT(mi)); return True; } else if(event->xany.type == ButtonRelease && event->xbutton.button == Button1) { cp->button_down = False; return True; } else if(event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel(cp->trackball, event->xbutton.button, 5, !!event->xbutton.state); return True; } else if(event->xany.type == MotionNotify && cp->button_down) { gltrackball_track(cp->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } return False; }
ENTRYPOINT Bool cube_handle_event (ModeInfo *mi, XEvent *event) { cube_configuration *bp = &bps[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { bp->button_down_p = True; gltrackball_start (bp->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { bp->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (bp->trackball, event->xbutton.button, 10, !!event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && bp->button_down_p) { gltrackball_track (bp->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == KeyPress) { KeySym keysym; char c = 0; XLookupString (&event->xkey, &c, 1, &keysym, 0); if (c == ' ') { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); return True; } else if (c == '\r' || c == '\n') { new_cube_colors (mi); return True; } } return False; }
ENTRYPOINT Bool molecule_handle_event (ModeInfo *mi, XEvent *event) { molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { mc->button_down_p = True; gltrackball_start (mc->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { mc->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (mc->trackball, event->xbutton.button, 10, !!event->xbutton.state); return True; } else if (event->xany.type == KeyPress) { KeySym keysym; char c = 0; XLookupString (&event->xkey, &c, 1, &keysym, 0); if (c == ' ' || c == '\t' || c == '\r' || c == '\n') { GLfloat speed = 4.0; mc->mode = 1; mc->mode_tick = 10 * speed; return True; } } else if (event->xany.type == MotionNotify && mc->button_down_p) { gltrackball_track (mc->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } return False; }
ENTRYPOINT Bool carousel_handle_event (ModeInfo *mi, XEvent *event) { carousel_state *ss = &sss[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { if (! ss->button_down_p) ss->button_down_time = time((time_t *) 0); ss->button_down_p = True; gltrackball_start (ss->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { if (ss->button_down_p) { /* Add the time the mouse was held to the expire times of all frames, so that mouse-dragging doesn't count against image expiration. */ int secs = time((time_t *) 0) - ss->button_down_time; int i; for (i = 0; i < ss->nframes; i++) ss->frames[i]->expires += secs; } ss->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (ss->trackball, event->xbutton.button, 5, !event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && ss->button_down_p) { gltrackball_track (ss->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } return False; }
ENTRYPOINT Bool extrusion_handle_event (ModeInfo *mi, XEvent *event) { extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (gp->trackball, event->xbutton.button, 10, !!event->xbutton.state); return True; } else if (event->xany.type == ButtonPress && /* rotate with left button */ !event->xbutton.state) /* if no modifier keys */ { gp->button_down_p = True; gltrackball_start (gp->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonPress) /* deform with other buttons */ { /* or with modifier keys */ gp->button2_down_p = True; gp->mouse_start_x = gp->mouse_x = event->xbutton.x; gp->mouse_start_y = gp->mouse_y = event->xbutton.y; return True; } else if (event->xany.type == ButtonRelease) { gp->button_down_p = False; gp->button2_down_p = False; return True; } else if (event->xany.type == MotionNotify) { if (gp->button_down_p) gltrackball_track (gp->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); if (gp->button2_down_p) { gp->mouse_x = event->xmotion.x; gp->mouse_y = event->xmotion.y; } return True; } return False; }
ENTRYPOINT Bool pinion_handle_event (ModeInfo *mi, XEvent *event) { pinion_configuration *pp = &pps[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { pp->button_down_p = True; gltrackball_start (pp->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { pp->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (pp->trackball, event->xbutton.button, 5, !!event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && pp->button_down_p) { gltrackball_track (pp->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == KeyPress) { KeySym keysym; char c = 0; XLookupString (&event->xkey, &c, 1, &keysym, 0); if (c == ' ' && debug_one_gear_p && pp->ngears) { delete_gear (mi, pp->gears[0]); return True; } } return False; }
ENTRYPOINT Bool stairs_handle_event (ModeInfo *mi, XEvent *event) { stairsstruct *sp = &stairs[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { sp->button_down_p = True; gltrackball_start (sp->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { sp->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (sp->trackball, event->xbutton.button, 10, !!event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && sp->button_down_p) { gltrackball_track (sp->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == KeyPress) { KeySym keysym; char c = 0; XLookupString (&event->xkey, &c, 1, &keysym, 0); if (c == ' ') { gltrackball_reset (sp->trackball); return True; } } return False; }
ENTRYPOINT Bool bit_handle_event (ModeInfo *mi, XEvent *event) { bit_configuration *bp = &bps[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { bp->button_down_p = True; gltrackball_start (bp->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { bp->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (bp->trackball, event->xbutton.button, 3, !!event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && bp->button_down_p) { gltrackball_track (bp->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == KeyPress) { KeySym keysym; char c = 0; XLookupString (&event->xkey, &c, 1, &keysym, 0); if (c == ' ' || c == '1' || c == '0') { bp->kbd = c; return True; } } return False; }
ENTRYPOINT Bool fire_handle_event (ModeInfo *mi, XEvent *event) { firestruct *fs = &fire[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { fs->button_down_p = True; event->xbutton.x = MI_WIDTH(mi) - event->xbutton.x; /* kludge! */ event->xbutton.y = MI_HEIGHT(mi) - event->xbutton.y; gltrackball_start (fs->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { fs->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (fs->trackball, event->xbutton.button, 5, !!event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && fs->button_down_p) { event->xmotion.x = MI_WIDTH(mi) - event->xmotion.x; /* kludge! */ event->xmotion.y = MI_HEIGHT(mi) - event->xmotion.y; gltrackball_track (fs->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } return False; }
/* A utility function for event-handler functions: Handles the various motion and click events related to trackballs. Returns True if the event was handled. */ Bool gltrackball_event_handler (XEvent *event, trackball_state *ts, int window_width, int window_height, Bool *button_down_p) { if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { *button_down_p = True; gltrackball_start (ts, event->xbutton.x, event->xbutton.y, window_width, window_height); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { *button_down_p = False; gltrackball_stop (ts); return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (ts, event->xbutton.button, 10, !!event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && *button_down_p) { gltrackball_track (ts, event->xmotion.x, event->xmotion.y, window_width, window_height); return True; } return False; }
ENTRYPOINT Bool toasters_handle_event (ModeInfo *mi, XEvent *event) { toaster_configuration *bp = &bps[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { bp->button_down_p = True; gltrackball_start (bp->user_trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { bp->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (bp->user_trackball, event->xbutton.button, 5, !event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && bp->button_down_p) { gltrackball_track (bp->user_trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } return False; }
ENTRYPOINT Bool gflux_handle_event (ModeInfo *mi, XEvent *event) { gfluxstruct *gp = &gfluxes[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { gp->button_down_p = True; gltrackball_start (gp->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { gp->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (gp->trackball, event->xbutton.button, 10, !!event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && gp->button_down_p) { gltrackball_track (gp->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } return False; }
ENTRYPOINT Bool logo_handle_event (ModeInfo *mi, XEvent *event) { logo_configuration *dc = &dcs[MI_SCREEN(mi)]; if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { dc->button_down_p = True; gltrackball_start (dc->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { dc->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (dc->trackball, event->xbutton.button, 10, !!event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && dc->button_down_p) { gltrackball_track (dc->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } return False; }
/* handle input events or not if daemon running the show */ ENTRYPOINT Bool topBlock_handle_event (ModeInfo *mi, XEvent *event) { topBlockSTATE *tb = &tbs[MI_SCREEN(mi)]; if (event->xany.type == KeyPress) { KeySym keysym; char c = 0; XLookupString (&event->xkey, &c, 1, &keysym, 0); if (c == 'a') { tb->eyeX++; return True; } else if (c == 'z') { tb->eyeX--; return True; } else if (c == 's') { tb->eyeY--; return True; } else if (c == 'x') { tb->eyeY++; return True; } else if (c == 'd') { tb->eyeZ++; return True; } else if (c == 'c') { tb->eyeZ--; return True; } else if (c == 'f') { camX++; return True; } else if (c == 'v') { camX--; return True; } else if (c == 'g') { camY++; return True; } else if (c == 'b') { camY--; return True; } else if (c == 'h') { camZ++; return True; } else if (c == 'n') { camZ--; return True; } else if (c == 'r') { tb->rotation++; return True; } } if (event->xany.type == ButtonPress && event->xbutton.button == Button1) { tb->button_down_p = True; gltrackball_start (tb->trackball, event->xbutton.x, event->xbutton.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } else if (event->xany.type == ButtonRelease && event->xbutton.button == Button1) { tb->button_down_p = False; return True; } else if (event->xany.type == ButtonPress && (event->xbutton.button == Button4 || event->xbutton.button == Button5 || event->xbutton.button == Button6 || event->xbutton.button == Button7)) { gltrackball_mousewheel (tb->trackball, event->xbutton.button, 10, !!event->xbutton.state); return True; } else if (event->xany.type == MotionNotify && tb->button_down_p) { gltrackball_track (tb->trackball, event->xmotion.x, event->xmotion.y, MI_WIDTH (mi), MI_HEIGHT (mi)); return True; } return False; }