class Input {
public:
  enum Setting {
    Handle,
    KeyboardSupport,
    MouseSupport,
    JoypadSupport,
  };

  virtual bool cap(Setting) { return false; }
  virtual uintptr_t get(Setting) { return false; }
  virtual bool set(Setting, uintptr_t) { return false; }

  virtual bool acquire() { return false; }
  virtual bool unacquire() { return false; }
  virtual bool acquired() { return false; }

  virtual bool poll(int16_t *table) { return false; }
  virtual bool init() { return true; }
  virtual void term() {}

  Input() {}
  virtual ~Input() {}
};
