/* process_abs: * process absolute events (x, y and z movement are currently supported) */ static void process_abs(AL_CONST struct input_event *event) { /* The device can send a report when there's no tool */ if (current_tool!=no_tool) { switch (event->code) { case ABS_X: x_axis.out_abs = abs_event(&x_axis, current_tool->mode, event->value); break; case ABS_Y: y_axis.out_abs = abs_event(&y_axis, current_tool->mode, event->value); break; #ifdef ABS_WHEEL /* absent in 2.2.x */ case ABS_WHEEL: #endif case ABS_Z: z_axis.out_abs = abs_event(&z_axis, current_tool->mode, event->value); break; } } }
/* * Translates a Linux input event into a DirectFB input event. */ static int translate_event( struct input_event *levt, DFBInputEvent *devt ) { devt->flags = DIEF_TIMESTAMP; devt->timestamp = levt->time; switch (levt->type) { case EV_KEY: return key_event( levt, devt ); case EV_REL: return rel_event( levt, devt ); case EV_ABS: return abs_event( levt, devt ); default: ; } return 0; }