void InputDeviceProvider_LinuxJoystick::process_event(js_event event)
	{
		InputEvent input_event;
		input_event.mouse_pos = Pointf(window->get_mouse_position()) / window->get_pixel_ratio();
		input_event.mouse_device_pos = window->get_mouse_position();
		input_event.repeat_count = 0;

		// We don't threat JS_EVENT_INIT special, so this should do
		if (event.type & JS_EVENT_BUTTON)
		{
			// Validate event
			if (event.number >= button_states.size())
			{
				return;
			}
			new_event = true;
			bool value = event.value;
			button_states[event.number] = value;

			if (value)
			{
				input_event.type = InputEvent::pressed;
			}
			else
			{
				input_event.type = InputEvent::released;
			}

			input_event.id = (InputCode)event.number;

			if (value)
				sig_key_down()(input_event);
			else
				sig_key_up()(input_event);
		}
		else if (event.type & JS_EVENT_AXIS)
		{
			// Validate event
			if (event.number >= axis_states.size())
			{
				return;
			}
			new_event = true;
			float value = float(event.value) / 32767;
			axis_states[event.number] = value;

			input_event.type = InputEvent::axis_moved;
			input_event.id = (InputCode)event.number;
			input_event.axis_pos = value;

			sig_axis_move()(input_event);
		}
	}
void
EvdevDevice::process_absolute(struct input_event& ev)
{
  int axis_index = get_absolute_index_by_code(ev.code);
  if (axis_index != -1)
    {
      absolutes[axis_index].pos = ev.value;

#if 0
      CL_InputEvent e; 
					
      e.device   = CL_InputDevice(this);
      e.type     = CL_InputEvent::axis_moved;
      e.id       = axis_index;
      e.axis_pos = absolutes[axis_index].get_posf();
      e.repeat_count = 0;

      sig_axis_move(e);
#endif
    }
}