Keyboard firmwares for Atmel AVR and Cortex-M
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

pjrc.c 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. Copyright 2011 Jun Wako <[email protected]>
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 2 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. */
  14. #include <stdint.h>
  15. #include "usb_keyboard.h"
  16. #include "usb_mouse.h"
  17. #include "usb_extra.h"
  18. #include "host_driver.h"
  19. #include "pjrc.h"
  20. /*------------------------------------------------------------------*
  21. * Host driver
  22. *------------------------------------------------------------------*/
  23. static uint8_t keyboard_leds(void);
  24. static void send_keyboard(report_keyboard_t *report);
  25. static void send_mouse(report_mouse_t *report);
  26. static void send_system(uint16_t data);
  27. static void send_consumer(uint16_t data);
  28. static host_driver_t driver = {
  29. keyboard_leds,
  30. send_keyboard,
  31. send_mouse,
  32. send_system,
  33. send_consumer
  34. };
  35. host_driver_t *pjrc_driver(void)
  36. {
  37. return &driver;
  38. }
  39. static uint8_t keyboard_leds(void) {
  40. return usb_keyboard_leds;
  41. }
  42. static void send_keyboard(report_keyboard_t *report)
  43. {
  44. usb_keyboard_send_report(report);
  45. }
  46. static void send_mouse(report_mouse_t *report)
  47. {
  48. #ifdef MOUSE_ENABLE
  49. usb_mouse_send(report->x, report->y, report->v, report->h, report->buttons);
  50. #endif
  51. }
  52. static void send_system(uint16_t data)
  53. {
  54. #ifdef EXTRAKEY_ENABLE
  55. usb_extra_system_send(data);
  56. #endif
  57. }
  58. static void send_consumer(uint16_t data)
  59. {
  60. #ifdef EXTRAKEY_ENABLE
  61. usb_extra_consumer_send(data);
  62. #endif
  63. }