code: def __handle_changed_state(self, state):
          
          timeval = self.__get_timeval()
          events = self.__get_button_events(state, timeval)
          events.extend(self.__get_axis_events(state, timeval))
          if events:
              self.__write_to_character_device(events, timeval)
docs: we need to pack a struct with the following five numbers:
          tv_sec, tv_usec, ev_type, code, value
  
          then write it using __write_to_character_device
  
          seconds, mircroseconds, ev_type, code, value
          time we just use now
          ev_type we look up
          code we look up
          value is 0 or 1 for the buttons
          axis value is maybe the same as Linux? Hope so!