void update_key_ring (XPointer priv, XRecordInterceptData *data) { static int meta = 0; static int ctrl = 0; static int shift = 0; xEvent *event; KeySym ks; char *display_string; char *ksname; if (data->category==XRecordFromServer) { event=(xEvent *)data->data; /* display_keystack(keystack); */ switch (event->u.u.type) { case KeyPress: ks = XKeycodeToKeysym(d0, event->u.u.detail, 0); ksname = XKeysymToString (ks); /* TBD: Might have to handle no symbol keys */ if (! process_modifiers(ks, &meta, &ctrl, &shift, 1)) { display_string = create_emacs_keyname(ksname, meta, ctrl, shift); push(keystack, display_string); display_keystrokes(osd, keystack); } break; case KeyRelease: ks = XKeycodeToKeysym(d0, event->u.u.detail, 0); process_modifiers(ks, &meta, &ctrl, &shift, 0); break; } } }
int process_key_event (event *ev) { int loop; ASSERT (ev->sdl_event.key.state != KEY_STATE_EITHER); process_modifiers (ev); for (loop = MODIFIER_NONE; loop < NUM_MODIFIER_TYPES; loop ++) { if ((current_modifier_states & (1 << loop)) || ((current_modifier_states | loop) == 0) || (ev->sdl_event.key.state == SDL_RELEASED)) { if (registered_events [ev->sdl_event.key.keysym.sym][loop].current_state == ev->sdl_event.key.state) { continue; } if (registered_events [ev->sdl_event.key.keysym.sym/*ökey*/][loop].in_use) { #if EVENT_DEBUG debug_log ("KEY_EVENT: key %d, modifier %d, current_state = %d, notify_state = %d, event state = %d", ev->key, loop, registered_events [ev->key][loop].current_state, registered_events [ev->key][loop].notify_state, ev->state); #endif registered_events [ev->sdl_event.key.keysym.sym][loop].current_state = ev->sdl_event.key.state; if ((registered_events [ev->sdl_event.key.keysym.sym][loop].notify_state == ev->sdl_event.key.state) || (registered_events [ev->sdl_event.key.keysym.sym][loop].notify_state == KEY_STATE_EITHER)) { if (registered_events [ev->sdl_event.key.keysym.sym][loop].function) { #if EVENT_DEBUG debug_log ("KEY_EVENT: key event called"); #endif ev->modifier = loop; registered_events [ev->sdl_event.key.keysym.sym][loop].function ((void *) ev); } } } } } return FALSE; }
void App::process_mouse_motion(const SDL_Event &sdle) { // turn SDL mouse move event into a VT mouse event vtMouseEvent event; event.type = VT_MOVE; event.button = VT_NONE; event.flags = process_modifiers(); event.pos.Set(sdle.motion.x, sdle.motion.y); vtGetScene()->OnMouse(event); }
void App::process_mouse_button(const SDL_Event &sdle) { // turn SDL mouse button event into a VT mouse event vtMouseEvent event; event.type = (sdle.button.type == SDL_MOUSEBUTTONDOWN) ? VT_DOWN : VT_UP; if (sdle.button.button == 1) event.button = VT_LEFT; else if (sdle.button.button == 2) event.button = VT_MIDDLE; else if (sdle.button.button == 3) event.button = VT_RIGHT; event.flags = process_modifiers(); event.pos.Set(sdle.button.x, sdle.button.y); vtGetScene()->OnMouse(event); }