devterm_keyboard.ino 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include "keyboard.h"
  2. #include "keys.h"
  3. #include "trackball.h"
  4. #include "devterm.h"
  5. #include "tickwaiter.h"
  6. #include <USBComposite.h>
  7. #define SER_NUM_STR "20230714"
  8. USBHID HID;
  9. DEVTERM dev_term;
  10. const uint8_t reportDescription[] = {
  11. HID_CONSUMER_REPORT_DESCRIPTOR(),
  12. HID_KEYBOARD_REPORT_DESCRIPTOR(),
  13. HID_JOYSTICK_REPORT_DESCRIPTOR(),
  14. HID_MOUSE_REPORT_DESCRIPTOR()
  15. };
  16. static const uint32_t LOOP_INTERVAL_MS = 0;
  17. static TickWaiter<LOOP_INTERVAL_MS> waiter;
  18. void setup() {
  19. USBComposite.setManufacturerString("ClockworkPI");
  20. USBComposite.setProductString("DevTerm");
  21. USBComposite.setSerialString(SER_NUM_STR);
  22. dev_term.Keyboard = new HIDKeyboard(HID);
  23. dev_term.Joystick = new HIDJoystick(HID);
  24. dev_term.Mouse = new HIDMouse(HID);
  25. dev_term.Consumer = new HIDConsumer(HID);
  26. dev_term.Keyboard->setAdjustForHostCapsLock(false);
  27. dev_term.state = new State();
  28. dev_term.Keyboard_state.layer = 0;
  29. dev_term.Keyboard_state.prev_layer = 0;
  30. dev_term.Keyboard_state.fn_on = 0;
  31. dev_term.Keyboard_state.shift = 0;
  32. dev_term._Serial = new USBCompositeSerial;
  33. HID.begin(*dev_term._Serial,reportDescription, sizeof(reportDescription));
  34. while(!USBComposite);//wait until usb port been plugged in to PC
  35. keyboard_init(&dev_term);
  36. keys_init(&dev_term);
  37. trackball_init(&dev_term);
  38. dev_term._Serial->println("setup done");
  39. pinMode(PD2,INPUT);// switch 2 in back
  40. delay(1000);
  41. }
  42. void loop() {
  43. dev_term.delta = waiter.waitForNextTick();
  44. dev_term.state->tick(dev_term.delta);
  45. trackball_task(&dev_term);
  46. keys_task(&dev_term); //keys above keyboard
  47. keyboard_task(&dev_term);
  48. }