carbon.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "keyboard/carbon.cpp"
  2. struct InputCarbon : InputDriver {
  3. InputCarbon& self = *this;
  4. InputCarbon(Input& super) : InputDriver(super), keyboard(super) {}
  5. ~InputCarbon() { terminate(); }
  6. auto create() -> bool override {
  7. return initialize();
  8. }
  9. auto driver() -> string override { return "Carbon"; }
  10. auto ready() -> bool override { return isReady; }
  11. auto acquired() -> bool override { return false; }
  12. auto acquire() -> bool override { return false; }
  13. auto release() -> bool override { return false; }
  14. auto poll() -> vector<shared_pointer<HID::Device>> override {
  15. vector<shared_pointer<HID::Device>> devices;
  16. keyboard.poll(devices);
  17. return devices;
  18. }
  19. auto rumble(uint64_t id, bool enable) -> bool override {
  20. return false;
  21. }
  22. private:
  23. auto initialize() -> bool {
  24. terminate();
  25. if(!keyboard.initialize()) return false;
  26. return isReady = true;
  27. }
  28. auto terminate() -> void {
  29. isReady = false;
  30. keyboard.terminate();
  31. }
  32. bool isReady = false;
  33. InputKeyboardCarbon keyboard;
  34. };