int rom_info_event(rom_info_t *m,int event,int data) { int i; if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) { m->isshowing = 0; config_save(); } break; case E_REFRESH: for(i=0; i<20; i++) strcpy(m->labels[i].text,""); if((pce == 0) || (pce->rom == 0)) { strcpy(m->labels[0].text,"No ROM loaded."); return(0); } /* //the rom is in our database if(pce->rom->indatabase == 1) { strcpy(m->labels[0].text,"File:"); strcpy(m->labels[1].text,"Name:"); strcpy(m->labels[2].text,"PRG Size:"); strcpy(m->labels[3].text,"CHR Size:"); strcpy(m->labels[4].text,"Board:"); strcpy(m->labels[5].text,"Mirroring:"); strncpy(m->labels[10].text,nes->rom->filename,30); strncpy(m->labels[11].text,nes->rom->name,30); sprintf(m->labels[12].text,"%d kb",nes->rom->prgsize / 1024); sprintf(m->labels[13].text,"%d kb",nes->rom->chrsize / 1024); sprintf(m->labels[14].text,"%s",nes->rom->board); switch(nes->rom->mirroring) { case 0:sprintf(m->labels[15].text,"Horizontal");break; case 1:sprintf(m->labels[15].text,"Vertical");break; default:sprintf(m->labels[15].text,"Four Screen");break; } } //regular ines rom image else */ { strcpy(m->labels[0].text,"File:"); strcpy(m->labels[1].text,"Name:"); strcpy(m->labels[2].text,"Size:"); strncpy(m->labels[10].text,pce->rom->filename,30); sprintf(m->labels[11].text,"<not in database>"); sprintf(m->labels[12].text,"%d kb",pce->rom->size / 1024); } break; } return(0); }
int sound_event(sound_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: break; case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); checkbox_event(&m->enabled,event,data); checkbox_event(&m->sq1,event,data); checkbox_event(&m->sq2,event,data); checkbox_event(&m->tri,event,data); checkbox_event(&m->noise,event,data); checkbox_event(&m->dmc,event,data); checkbox_event(&m->ext,event,data); text_event(&m->tc,event,data); break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) m->isshowing = 0; break; } return(0); }
int mappers_event(mappers_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); break; case E_REFRESH: break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) { m->isshowing = 0; config_save(); } break; } if(nes->rom) { switch(nes->rom->boardid) { //nes-event case B_EVENT: mapper105_event(m,event,data); break; } } return(0); }
int load_event(load_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: case E_MOUSEDOWN2: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->closebtn,event,data); button_event(&m->loadbtn,event,data); if(list_event(&m->romlist,event,data) > 0) return(1); if(list_event(&m->dirlist,event,data) > 0) return(1); edit_event(&m->edit,event,data); break; case E_MOUSEUP: if(button_event(&m->closebtn,event,data) > 0) m->isshowing = 0; button_event(&m->loadbtn,event,data); if(list_event(&m->romlist,event,data) > 0) return(1); if(list_event(&m->dirlist,event,data) > 0) return(1); edit_event(&m->edit,event,data); break; } return(0); }
void analog_event(IOReturn result, IOHIDElementRef element, IOHIDValueRef value) { int int_value = IOHIDValueGetIntegerValue(value); uint16_t usage = IOHIDElementGetUsage(element); switch (usage) { case kHIDUsage_GD_X: case kHIDUsage_GD_Y: case kHIDUsage_GD_Rx: case kHIDUsage_GD_Ry: { int min = IOHIDElementGetLogicalMin(element); int max = IOHIDElementGetLogicalMax(element); double double_value = int_value; if (int_value < 0) { double_value = -(double_value / min); } else { double_value = (double_value / max); } usage -= kHIDUsage_GD_X; gamepad[usage] = double_value; static const int x_component[] = {0, 0, -1, 3, 3, -1}; double x = gamepad[x_component[usage]]; double y = gamepad[x_component[usage] + 1]; enqueue(new GamepadStickEvent( now_usecs(), kHIDUsage_GD_X + x_component[usage], x, y)); } break; case kHIDUsage_GD_Z: case kHIDUsage_GD_Rz: button_event(result, element, value); break; } }
void usb_gpio_tick(void) { if (usb_gpio.state->set_mask || usb_gpio.state->clear_mask) return; button_event(0); }
void JoystickNode::joyCallback(const sensor_msgs::JoyConstPtr &msg) { unsigned int i; static std::vector<double> axes(msg->axes.size(), 0); static std::vector<bool> buttons(msg->buttons.size(), false); if((unsigned)axes.size() != msg->axes.size()) axes.resize(msg->axes.size(), 0); if((unsigned)buttons.size() != msg->buttons.size()) buttons.resize(msg->buttons.size(), false); for(i = 0; i < msg->axes.size(); i++) { if(msg->axes[i] != axes[i]) { axes[i] = msg->axes[i]; // std::cout << "Axis " << i << ": " << msg->axes[i] << std::endl; emit axis_event(i, msg->axes[i]); } } for(i = 0; i < msg->buttons.size(); i++) { if(msg->buttons[i] != buttons[i]) { buttons[i] = msg->buttons[i]; // std::cout << "Buttons " << i << ": " << buttons[i] << std::endl; emit button_event(i, msg->buttons[i]); } } }
int about_event(about_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) m->isshowing = 0; break; } return(0); }
int msg_recv_handle(int sockfd,char* buf) { int n,type; n = read(sockfd,buf,4); if(n==4) { getval(&type,buf,INT); SPICE_DEBUG("Got event:%d\n",type); switch(type) { case ANDROID_OVER: { android_send_task(ANDROID_TASK_OVER); g_main_loop_quit(android_mainloop); exit(1); return 1; } break; case ANDROID_KEY_PRESS: case ANDROID_KEY_RELEASE: n = read(sockfd,buf,4); if(n==4) { AndroidEventKey* key =(AndroidEventKey*)malloc(8); key->type = type; getval(&key->hardware_keycode,buf,INT); key_event(key); free(key); } else error("msg_recv error!\n"); break; case ANDROID_BUTTON_PRESS: case ANDROID_BUTTON_RELEASE: n = read(sockfd,buf,8); if(n==4) n += read(sockfd,buf+4,8); if(n==8) { AndroidEventButton* button =(AndroidEventButton*)malloc(12); button->type = type; getval(&button->x,buf,INT); getval(&button->y,buf+4,INT); button_event(button); free(button); } else error("msg_recv error!\n"); break; } } else error("msg_recv error!\n"); return 0; }
/** @copydoc widgetdata::event_func */ static int widget_event(widgetdata *widget, SDL_Event *event) { uint32_t row, col; size_t i; if (EVENT_IS_MOUSE(event) && event->button.button == SDL_BUTTON_LEFT && list_mouse_get_pos(list_skills, event->motion.x, event->motion.y, &row, &col)) { size_t skill_id; skill_id = row * list_skills->cols + col; if (skill_id < skill_list_num) { if (event->type == SDL_MOUSEBUTTONUP) { if (selected_skill != skill_id) { selected_skill = skill_id; widget->redraw = 1; return 1; } } else if (event->type == SDL_MOUSEBUTTONDOWN) { event_dragging_start(skill_list[skill_id]->skill->tag, event->motion.x, event->motion.y); return 1; } } } /* If the list has handled the mouse event, we need to redraw the * widget. */ if (list_skills && list_handle_mouse(list_skills, event)) { widget->redraw = 1; return 1; } for (i = 0; i < BUTTON_NUM; i++) { if (button_event(&buttons[i], event)) { switch (i) { case BUTTON_CLOSE: widget->show = 0; break; case BUTTON_HELP: help_show("skill list"); break; } widget->redraw = 1; return 1; } if (buttons[i].redraw) { widget->redraw = 1; } } return 0; }
int video_event(video_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); radiogroup_event(&m->filter,event,data); radiogroup_event(&m->videomode,event,data); break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) { m->isshowing = 0; config_save(); } break; } return(0); }
int options_event(options_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); radiogroup_event(&m->fdsbios,event,data); checkbox_event(&m->showinfo,event,data); break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) { m->isshowing = 0; config_save(); } break; } return(0); }
static void touchscreen_event(int x, int y) { if(background) { x -= UI_LCD_POSX; y -= UI_LCD_POSY; } if(x >= 0 && y >= 0 && x < SIM_LCD_WIDTH && y < SIM_LCD_HEIGHT) { mouse_coords = (x << 16) | y; button_event(BUTTON_TOUCHSCREEN, true); if (debug_wps) printf("Mouse at 1: (%d, %d)\n", x, y); } }
int start(int argc, char **argv) { GR_EVENT event; nxeyes_state *state; if(GrOpen() < 0) { printf("Couldn't connect to Nano-X server\n"); return 1; } if(!(state = init())) { printf("Couldn't allocate state structure\n"); return 1; } while(!state->quit) { GrGetNextEvent(&event); switch(event.type) { case GR_EVENT_TYPE_CLOSE_REQ: state->quit = 1; break; case GR_EVENT_TYPE_MOUSE_POSITION: position_event(&event.mouse, state); break; case GR_EVENT_TYPE_BUTTON_UP: case GR_EVENT_TYPE_BUTTON_DOWN: button_event(&event.button, state); break; case GR_EVENT_TYPE_EXPOSURE: draw_eyes(state, 1); break; #if MW_FEATURE_TIMERS case GR_EVENT_TYPE_TIMER: timer_event(&event.timer, state); break; #endif default: break; } if(state->mouse_moved) { draw_eyes(state, 0); state->mouse_moved = 0; } } GrClose(); free(state); return 0; }
void mouse_tick_task(void) { static int last_check = 0; int x,y; if (TIME_BEFORE(current_tick, last_check+(HZ/10))) return; last_check = current_tick; if (SDL_GetMouseState(&x, &y) & SDL_BUTTON(SDL_BUTTON_LEFT)) { if(background) { x -= UI_LCD_POSX; y -= UI_LCD_POSY; if(x<0 || y<0 || x>SIM_LCD_WIDTH || y>SIM_LCD_HEIGHT) return; } mouse_coords = (x<<16)|y; button_event(BUTTON_TOUCHSCREEN, true); if (debug_wps) printf("Mouse at: (%d, %d)\n", x, y); } }
int menubar_event(menubar_t *m,int event,int data) { int i,processed; #ifndef PS2 static int msx,msy; #endif load_event(&m->load,event,data); video_event(&m->video,event,data); input_event(&m->input,event,data); sound_event(&m->sound,event,data); gui_input_event(&m->guiinput,event,data); options_event(&m->options,event,data); paths_event(&m->paths,event,data); rom_info_event(&m->rom_info,event,data); tracer_event(&m->tracer,event,data); memory_viewer_event(&m->memory_viewer,event,data); about_event(&m->about,event,data); switch(event) { //mouse button pressed case E_MOUSEDOWN: case E_MOUSEDOWN2: if(mouseinrange(&m->info,data) == 0) return(0); //see if the click was on a menu for(processed=0,i=0;i<MAX_MENUS && m->menus[i].info.w;i++) { //send event to the menu and see if it processes it if(menu_event(&m->menus[i],event,data) > 0) processed = 1; } for(i=0;i<3;i++) { if(button_event(&m->buttons[i],event,data) > 0) processed = 1; } //if event was not processed by a menu or button, then move the window if(processed == 0) { m->ismoving = 1; #ifndef PS2 video_getwindowpos(&msx,&msy); #endif } break; case E_MOUSEUP: m->ismoving = 0; posx = newposx; posy = newposy; //send event off to children for(i=0;i<MAX_MENUS && m->menus[i].info.w;i++) menu_event(&m->menus[i],event,data); #ifndef PS2 for(i=0;i<3;i++) button_event(&m->buttons[i],event,data); #endif break; case E_MOUSEMOVE: #ifndef PS2 if(m->ismoving && config.windowed) { int x,y; mousemove_u mm; mm.data = data; video_getwindowpos(&x,&y); // break; log_message("window moving: ms x = %d, y = %d\n",msx,msy); log_message("window moving: window x = %d, y = %d\n",x,y); log_message("window moving: mouse x = %d, y = %d\n",mm.info.x,mm.info.y); log_message("window moving: mouse xrel = %d, yrel = %d\n",mm.info.xrel,mm.info.yrel); x += mm.info.xrel; y += mm.info.yrel; // SDL_GetRelativeMouseState(&newposx,&newposy); // newposx += posx; // newposy += posy; // newposx = mm.info.x * 3; // newposy = mm.info.y * 3; // if(newposx == posx || newposy == posy) // break; if(x == msx && y == msy) video_setwindowpos(x,y); break; } #endif //send event off to children for(i=0;i<MAX_MENUS && m->menus[i].info.w;i++) menu_event(&m->menus[i],event,data); break; } return(0); }
/** * Handle event in the main screen. * @param event * The event to handle. * @return * 1 if the event was handled, 0 otherwise. */ int intro_event(SDL_Event *event) { if (!list_servers) { return 0; } if (event->type == SDL_MOUSEBUTTONDOWN && event->button.button == SDL_BUTTON_LEFT) { if (LIST_MOUSE_OVER(list_news, event->motion.x, event->motion.y)) { list_news->focus = 1; list_servers->focus = 0; } else if (LIST_MOUSE_OVER(list_servers, event->motion.x, event->motion.y)) { list_servers->focus = 1; list_news->focus = 0; } } if (button_event(&button_play, event)) { list_handle_enter(list_servers, event); return 1; } else if (button_event(&button_refresh, event)) { if (!ms_connecting(-1)) { cpl.state = ST_META; } return 1; } else if (button_event(&button_server, event)) { server_add_open(); return 1; } else if (button_event(&button_settings, event)) { settings_open(); return 1; } else if (button_event(&button_update, event)) { updater_open(); return 1; } else if (button_event(&button_help, event)) { help_show("main screen"); return 1; } else if (button_event(&button_credits, event)) { credits_show(); return 1; } else if (button_event(&button_quit, event)) { exit(0); return 1; } else if (event->type == SDL_KEYDOWN && event->key.keysym.sym == SDLK_TAB && list_news) { int news_focus = 0; if (list_servers->focus) { news_focus = 1; } list_news->focus = news_focus; list_servers->focus = !news_focus; } else if (list_handle_keyboard(list_news && list_news->focus ? list_news : list_servers, event)) { return 1; } else if (list_handle_mouse(list_news, event)) { return 1; } else if (list_handle_mouse(list_servers, event)) { return 1; } return 0; }
static void * x_thread_main (void *closure) { x_global_t *xg = closure; XEvent event; struct pollfd fds[2]; int timeout; sigset_t mask; sigemptyset (&mask); sigaddset (&mask, SIGALRM); sigaddset (&mask, SIGIO); sigaddset (&mask, SIGCHLD); sigaddset (&mask, SIGINT); pthread_sigmask (SIG_BLOCK, &mask, NULL); fds[0].fd = ConnectionNumber (xg->dpy); fds[0].events = POLLIN; fds[1].fd = xg->pipe[0]; fds[1].events = POLLIN; while (xg->running) { while (XPending (xg->dpy)) { XNextEvent (xg->dpy, &event); switch (event.type) { case ConfigureNotify: configure_event (xg, &event.xconfigure); break; case Expose: expose_event (xg, &event.xexpose); break; case MotionNotify: motion_notify_event (xg, &event.xmotion); break; case ButtonPress: case ButtonRelease: button_event (xg, &event.xbutton); break; case KeyPress: case KeyRelease: key_event (xg, &event.xkey); break; case ClientMessage: client_message_event (xg, &event.xclient); break; case FocusIn: case FocusOut: focus_change_event (xg, &event.xfocus); break; } } timeout = -1; while (xg->repaint) { int when = now (); timeout = xg->repaint->when - when; if (timeout > 0) break; timeout = -1; repaint_timeout (xg, when); } poll (fds, 2, timeout); if (fds[1].revents & POLLIN) { char stuffed[128]; read (fds[1].fd, stuffed, sizeof (stuffed)); } } close (xg->pipe[0]); close (xg->pipe[1]); XCloseDisplay (xg->dpy); free (xg); return 0; }
/** @copydoc widgetdata::event_func */ static int widget_event(widgetdata *widget, SDL_Event *event) { size_t i; if (list_mplayer) { if (list_handle_mouse(list_mplayer, event)) { widget->redraw = 1; return 1; } else if (scrollbar_event(&scrollbar_progress, event)) { widget->redraw = 1; return 1; } } for (i = 0; i < BUTTON_NUM; i++) { if (button_event(&buttons[i], event)) { switch (i) { case BUTTON_PLAY: if (sound_map_background(-1)) { sound_start_bg_music("no_music", 0, 0); sound_map_background(0); shuffle = 0; } else { list_handle_enter(list_mplayer, event); } break; case BUTTON_SHUFFLE: shuffle = !shuffle; if (shuffle) { mplayer_do_shuffle(list_mplayer); sound_map_background(1); } else { sound_start_bg_music("no_music", 0, 0); sound_map_background(0); } break; case BUTTON_BLACKLIST: /* Toggle the blacklist state of the selected row. */ mplayer_blacklist_toggle(list_mplayer); mplayer_blacklist_save(list_mplayer); break; case BUTTON_CLOSE: widget->show = 0; break; case BUTTON_HELP: help_show("music player"); break; } widget->redraw = 1; return 1; } if (buttons[i].redraw) { widget->redraw = 1; } } return 0; }
static bool event_handler(SDL_Event *event) { SDLKey ev_key; switch(event->type) { case SDL_ACTIVEEVENT: if (event->active.state & SDL_APPINPUTFOCUS) { if (event->active.gain == 1) sdl_app_has_input_focus = 1; else sdl_app_has_input_focus = 0; } break; case SDL_KEYDOWN: case SDL_KEYUP: ev_key = event->key.keysym.sym; #if (CONFIG_PLATFORM & PLATFORM_MAEMO5) /* N900 with shared up/down cursor mapping. Seen on the German, Finnish, Italian, French and Russian version. Probably more. */ if (event->key.keysym.mod & KMOD_MODE || n900_updown_key_pressed) { /* Prevent stuck up/down keys: If you release the ALT key before the cursor key, rockbox will see a KEYUP event for left/right instead of up/down and the previously pressed up/down key would stay active. */ if (ev_key == SDLK_LEFT || ev_key == SDLK_RIGHT) { if (event->type == SDL_KEYDOWN) n900_updown_key_pressed = 1; else n900_updown_key_pressed = 0; } if (ev_key == SDLK_LEFT) ev_key = SDLK_UP; else if (ev_key == SDLK_RIGHT) ev_key = SDLK_DOWN; } #endif button_event(ev_key, event->type == SDL_KEYDOWN); break; #ifdef HAVE_TOUCHSCREEN case SDL_MOUSEMOTION: if (event->motion.state & SDL_BUTTON(1)) { int x = event->motion.x / display_zoom; int y = event->motion.y / display_zoom; touchscreen_event(x, y); } break; #endif case SDL_MOUSEBUTTONUP: case SDL_MOUSEBUTTONDOWN: { SDL_MouseButtonEvent *mev = &event->button; mev->x /= display_zoom; mev->y /= display_zoom; mouse_event(mev, event->type == SDL_MOUSEBUTTONUP); break; } case SDL_QUIT: /* Will post SDL_USEREVENT in shutdown_hw() if successful. */ sys_poweroff(); break; case SDL_USEREVENT: return true; break; } return false; }
static void mouse_event(SDL_MouseButtonEvent *event, bool button_up) { #define SQUARE(x) ((x)*(x)) static int x,y; #ifdef SIMULATOR static int xybutton = 0; #endif if(button_up) { switch ( event->button ) { #ifdef HAVE_SCROLLWHEEL case SDL_BUTTON_WHEELUP: case SDL_BUTTON_WHEELDOWN: #endif case SDL_BUTTON_MIDDLE: case SDL_BUTTON_RIGHT: button_event( event->button, false ); break; /* The scrollwheel button up events are ignored as they are queued immediately */ case SDL_BUTTON_LEFT: if ( mapping && background ) { printf(" { SDLK_, %d, %d, %d, \"\" },\n", x, y, (int)sqrt( SQUARE(x-(int)event->x) + SQUARE(y-(int)event->y)) ); } #ifdef SIMULATOR if ( background && xybutton ) { button_event( xybutton, false ); xybutton = 0; } #endif #ifdef HAVE_TOUCHSCREEN else button_event(BUTTON_TOUCHSCREEN, false); #endif break; } } else { /* button down */ switch ( event->button ) { #ifdef HAVE_SCROLLWHEEL case SDL_BUTTON_WHEELUP: case SDL_BUTTON_WHEELDOWN: #endif case SDL_BUTTON_MIDDLE: case SDL_BUTTON_RIGHT: button_event( event->button, true ); break; case SDL_BUTTON_LEFT: if ( mapping && background ) { x = event->x; y = event->y; } #ifdef SIMULATOR if ( background ) { xybutton = xy2button( event->x, event->y ); if( xybutton ) { button_event( xybutton, true ); break; } } #endif #ifdef HAVE_TOUCHSCREEN touchscreen_event(event->x, event->y); #endif break; } if (debug_wps && event->button == SDL_BUTTON_LEFT) { int m_x, m_y; if ( background ) { m_x = event->x - 1; m_y = event->y - 1; #ifdef HAVE_REMOTE if ( event->y >= UI_REMOTE_POSY ) /* Remote Screen */ { m_x -= UI_REMOTE_POSX; m_y -= UI_REMOTE_POSY; } else #endif { m_x -= UI_LCD_POSX; m_y -= UI_LCD_POSY; } } else { m_x = event->x; m_y = event->y; #ifdef HAVE_REMOTE if ( m_y >= LCD_HEIGHT ) /* Remote Screen */ m_y -= LCD_HEIGHT; #endif } printf("Mouse at 2: (%d, %d)\n", m_x, m_y); } } #undef SQUARE }
bool gui_message_loop(void) { SDL_Event event; static int x,y,xybutton = 0; while (SDL_WaitEvent(&event)) { sim_enter_irq_handler(); switch(event.type) { case SDL_KEYDOWN: case SDL_KEYUP: button_event(event.key.keysym.sym, event.type == SDL_KEYDOWN); break; #ifdef HAVE_TOUCHSCREEN case SDL_MOUSEMOTION: if (event.motion.state & SDL_BUTTON(1)) touchscreen_event(event.motion.x, event.motion.y); break; #endif case SDL_MOUSEBUTTONDOWN: switch ( event.button.button ) { #ifdef HAVE_SCROLLWHEEL case SDL_BUTTON_WHEELUP: button_event( SDLK_UP, true ); break; case SDL_BUTTON_WHEELDOWN: button_event( SDLK_DOWN, true ); break; #endif case SDL_BUTTON_LEFT: case SDL_BUTTON_MIDDLE: if ( mapping && background ) { x = event.button.x; y = event.button.y; } if ( background ) { xybutton = xy2button( event.button.x, event.button.y ); if( xybutton ) { button_event( xybutton, true ); break; } } #ifdef HAVE_TOUCHSCREEN touchscreen_event(event.button.x, event.button.y); #endif break; default: break; } if (debug_wps && event.button.button == 1) { if ( background ) #ifdef HAVE_REMOTE if ( event.button.y < UI_REMOTE_POSY ) /* Main Screen */ printf("Mouse at: (%d, %d)\n", event.button.x - UI_LCD_POSX -1 , event.button.y - UI_LCD_POSY - 1 ); else printf("Mouse at: (%d, %d)\n", event.button.x - UI_REMOTE_POSX -1 , event.button.y - UI_REMOTE_POSY - 1 ); #else printf("Mouse at: (%d, %d)\n", event.button.x - UI_LCD_POSX -1 , event.button.y - UI_LCD_POSY - 1 ); #endif else if ( event.button.y/display_zoom < LCD_HEIGHT ) /* Main Screen */ printf("Mouse at: (%d, %d)\n", event.button.x/display_zoom, event.button.y/display_zoom ); #ifdef HAVE_REMOTE else printf("Mouse at: (%d, %d)\n", event.button.x/display_zoom, event.button.y/display_zoom - LCD_HEIGHT ); #endif } break; case SDL_MOUSEBUTTONUP: switch ( event.button.button ) { /* The scrollwheel button up events are ignored as they are queued immediately */ case SDL_BUTTON_LEFT: case SDL_BUTTON_MIDDLE: if ( mapping && background ) { printf(" { SDLK_, %d, %d, %d, \"\" },\n", x, #define SQUARE(x) ((x)*(x)) y, (int)sqrt( SQUARE(x-(int)event.button.x) + SQUARE(y-(int)event.button.y)) ); } if ( background && xybutton ) { button_event( xybutton, false ); xybutton = 0; } #ifdef HAVE_TOUCHSCREEN else button_event(BUTTON_TOUCHSCREEN, false); #endif break; default: break; } break; case SDL_QUIT: { sim_exit_irq_handler(); return false; } default: /*printf("Unhandled event\n"); */ break; } sim_exit_irq_handler(); }
/** @copydoc widgetdata::event_func */ static int widget_event(widgetdata *widget, SDL_Event *event) { char buf[MAX_BUF]; size_t i; /* If the list has handled the mouse event, we need to redraw the * widget. */ if (list_party && list_handle_mouse(list_party, event)) { widget->redraw = 1; return 1; } for (i = 0; i < BUTTON_NUM; i++) { if ((cpl.partyname[0] == '\0' && (i == BUTTON_PASSWORD || i == BUTTON_LEAVE || i == BUTTON_CHAT || i == BUTTON_MEMBERS)) || (cpl.partyname[0] != '\0' && (i == BUTTON_FORM))) { continue; } if (button_event(&buttons[i], event)) { switch (i) { case BUTTON_PARTIES: send_command("/party list"); break; case BUTTON_MEMBERS: send_command("/party who"); break; case BUTTON_FORM: snprintf(buf, sizeof(buf), "?MCON /party form "); keybind_process_command(buf); break; case BUTTON_PASSWORD: snprintf(buf, sizeof(buf), "?MCON /party password "); keybind_process_command(buf); break; case BUTTON_LEAVE: send_command("/party leave"); break; case BUTTON_CHAT: snprintf(buf, sizeof(buf), "?MCON /gsay "); keybind_process_command(buf); break; case BUTTON_CLOSE: widget->show = 0; break; case BUTTON_HELP: help_show("spell list"); break; } widget->redraw = 1; return 1; } if (buttons[i].redraw) { widget->redraw = 1; } } return 0; }