hid-roccat-isku.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. #ifndef __HID_ROCCAT_ISKU_H
  3. #define __HID_ROCCAT_ISKU_H
  4. /*
  5. * Copyright (c) 2011 Stefan Achatz <[email protected]>
  6. */
  7. /*
  8. */
  9. #include <linux/types.h>
  10. enum {
  11. ISKU_SIZE_CONTROL = 0x03,
  12. ISKU_SIZE_INFO = 0x06,
  13. ISKU_SIZE_KEY_MASK = 0x06,
  14. ISKU_SIZE_KEYS_FUNCTION = 0x29,
  15. ISKU_SIZE_KEYS_EASYZONE = 0x41,
  16. ISKU_SIZE_KEYS_MEDIA = 0x1d,
  17. ISKU_SIZE_KEYS_THUMBSTER = 0x17,
  18. ISKU_SIZE_KEYS_MACRO = 0x23,
  19. ISKU_SIZE_KEYS_CAPSLOCK = 0x06,
  20. ISKU_SIZE_LAST_SET = 0x14,
  21. ISKU_SIZE_LIGHT = 0x10,
  22. ISKU_SIZE_MACRO = 0x823,
  23. ISKU_SIZE_RESET = 0x03,
  24. ISKU_SIZE_TALK = 0x10,
  25. ISKU_SIZE_TALKFX = 0x10,
  26. };
  27. enum {
  28. ISKU_PROFILE_NUM = 5,
  29. ISKU_USB_INTERFACE_PROTOCOL = 0,
  30. };
  31. struct isku_actual_profile {
  32. uint8_t command; /* ISKU_COMMAND_ACTUAL_PROFILE */
  33. uint8_t size; /* always 3 */
  34. uint8_t actual_profile;
  35. } __packed;
  36. enum isku_commands {
  37. ISKU_COMMAND_CONTROL = 0x4,
  38. ISKU_COMMAND_ACTUAL_PROFILE = 0x5,
  39. ISKU_COMMAND_KEY_MASK = 0x7,
  40. ISKU_COMMAND_KEYS_FUNCTION = 0x8,
  41. ISKU_COMMAND_KEYS_EASYZONE = 0x9,
  42. ISKU_COMMAND_KEYS_MEDIA = 0xa,
  43. ISKU_COMMAND_KEYS_THUMBSTER = 0xb,
  44. ISKU_COMMAND_KEYS_MACRO = 0xd,
  45. ISKU_COMMAND_MACRO = 0xe,
  46. ISKU_COMMAND_INFO = 0xf,
  47. ISKU_COMMAND_LIGHT = 0x10,
  48. ISKU_COMMAND_RESET = 0x11,
  49. ISKU_COMMAND_KEYS_CAPSLOCK = 0x13,
  50. ISKU_COMMAND_LAST_SET = 0x14,
  51. ISKU_COMMAND_15 = 0x15,
  52. ISKU_COMMAND_TALK = 0x16,
  53. ISKU_COMMAND_TALKFX = 0x17,
  54. ISKU_COMMAND_FIRMWARE_WRITE = 0x1b,
  55. ISKU_COMMAND_FIRMWARE_WRITE_CONTROL = 0x1c,
  56. };
  57. struct isku_report_button {
  58. uint8_t number; /* ISKU_REPORT_NUMBER_BUTTON */
  59. uint8_t zero;
  60. uint8_t event;
  61. uint8_t data1;
  62. uint8_t data2;
  63. };
  64. enum isku_report_numbers {
  65. ISKU_REPORT_NUMBER_BUTTON = 3,
  66. };
  67. enum isku_report_button_events {
  68. ISKU_REPORT_BUTTON_EVENT_PROFILE = 0x2,
  69. };
  70. struct isku_roccat_report {
  71. uint8_t event;
  72. uint8_t data1;
  73. uint8_t data2;
  74. uint8_t profile;
  75. } __packed;
  76. struct isku_device {
  77. int roccat_claimed;
  78. int chrdev_minor;
  79. struct mutex isku_lock;
  80. int actual_profile;
  81. };
  82. #endif