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.

пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
пре 13 година
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef USB_KEYBOARD_H
  2. #define USB_KEYBOARD_H 1
  3. #include <stdint.h>
  4. #include <stdbool.h>
  5. #include "usb.h"
  6. #define KEYBOARD_INTERFACE 0
  7. #define KEYBOARD_ENDPOINT 1
  8. #define KEYBOARD_SIZE 8
  9. #define KEYBOARD_BUFFER EP_DOUBLE_BUFFER
  10. #define BIT_LCTRL (1<<0)
  11. #define BIT_LSHIFT (1<<1)
  12. #define BIT_LALT (1<<2)
  13. #define BIT_LGUI (1<<3)
  14. #define BIT_RCTRL (1<<4)
  15. #define BIT_RSHIFT (1<<5)
  16. #define BIT_RALT (1<<6)
  17. #define BIT_RGUI (1<<7)
  18. #define BIT_LCTL BIT_LCTRL
  19. #define BIT_RCTL BIT_RCTRL
  20. #define BIT_LSFT BIT_LSHIFT
  21. #define BIT_RSFT BIT_RSHIFT
  22. typedef struct report {
  23. uint8_t keys[6];
  24. uint8_t mods;
  25. bool is_sent;
  26. } usb_keyboard_report_t;
  27. #define usb_keyboard_keys usb_keyboard_report->keys
  28. #define usb_keyboard_mods usb_keyboard_report->mods
  29. extern usb_keyboard_report_t *usb_keyboard_report;
  30. extern usb_keyboard_report_t *usb_keyboard_report_prev;
  31. extern uint8_t usb_keyboard_protocol;
  32. extern uint8_t usb_keyboard_idle_config;
  33. extern uint8_t usb_keyboard_idle_count;
  34. extern volatile uint8_t usb_keyboard_leds;
  35. int8_t usb_keyboard_press(uint8_t key, uint8_t modifier);
  36. int8_t usb_keyboard_send(void);
  37. int8_t usb_keyboard_send_report(usb_keyboard_report_t *report);
  38. void usb_keyboard_swap_report(void);
  39. void usb_keyboard_clear_report(void);
  40. void usb_keyboard_clear_keys(void);
  41. void usb_keyboard_clear_mods(void);
  42. void usb_keyboard_set_keys(uint8_t keys[6]);
  43. void usb_keyboard_set_mods(uint8_t mods);
  44. void usb_keyboard_add_code(uint8_t code);
  45. void usb_keyboard_add_key(uint8_t code);
  46. void usb_keyboard_add_mod(uint8_t code);
  47. void usb_keyboard_del_code(uint8_t code);
  48. void usb_keyboard_del_key(uint8_t code);
  49. void usb_keyboard_del_mod(uint8_t code);
  50. bool usb_keyboard_is_sent(void);
  51. bool usb_keyboard_has_key(void);
  52. bool usb_keyboard_has_mod(void);
  53. void usb_keyboard_print_report(usb_keyboard_report_t *report);
  54. #endif