forked from Qortal/Brooklyn
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.
97 lines
2.0 KiB
97 lines
2.0 KiB
/* SPDX-License-Identifier: GPL-2.0-or-later */ |
|
#ifndef __HID_ROCCAT_ISKU_H |
|
#define __HID_ROCCAT_ISKU_H |
|
|
|
/* |
|
* Copyright (c) 2011 Stefan Achatz <[email protected]> |
|
*/ |
|
|
|
/* |
|
*/ |
|
|
|
#include <linux/types.h> |
|
|
|
enum { |
|
ISKU_SIZE_CONTROL = 0x03, |
|
ISKU_SIZE_INFO = 0x06, |
|
ISKU_SIZE_KEY_MASK = 0x06, |
|
ISKU_SIZE_KEYS_FUNCTION = 0x29, |
|
ISKU_SIZE_KEYS_EASYZONE = 0x41, |
|
ISKU_SIZE_KEYS_MEDIA = 0x1d, |
|
ISKU_SIZE_KEYS_THUMBSTER = 0x17, |
|
ISKU_SIZE_KEYS_MACRO = 0x23, |
|
ISKU_SIZE_KEYS_CAPSLOCK = 0x06, |
|
ISKU_SIZE_LAST_SET = 0x14, |
|
ISKU_SIZE_LIGHT = 0x10, |
|
ISKU_SIZE_MACRO = 0x823, |
|
ISKU_SIZE_RESET = 0x03, |
|
ISKU_SIZE_TALK = 0x10, |
|
ISKU_SIZE_TALKFX = 0x10, |
|
}; |
|
|
|
enum { |
|
ISKU_PROFILE_NUM = 5, |
|
ISKU_USB_INTERFACE_PROTOCOL = 0, |
|
}; |
|
|
|
struct isku_actual_profile { |
|
uint8_t command; /* ISKU_COMMAND_ACTUAL_PROFILE */ |
|
uint8_t size; /* always 3 */ |
|
uint8_t actual_profile; |
|
} __packed; |
|
|
|
enum isku_commands { |
|
ISKU_COMMAND_CONTROL = 0x4, |
|
ISKU_COMMAND_ACTUAL_PROFILE = 0x5, |
|
ISKU_COMMAND_KEY_MASK = 0x7, |
|
ISKU_COMMAND_KEYS_FUNCTION = 0x8, |
|
ISKU_COMMAND_KEYS_EASYZONE = 0x9, |
|
ISKU_COMMAND_KEYS_MEDIA = 0xa, |
|
ISKU_COMMAND_KEYS_THUMBSTER = 0xb, |
|
ISKU_COMMAND_KEYS_MACRO = 0xd, |
|
ISKU_COMMAND_MACRO = 0xe, |
|
ISKU_COMMAND_INFO = 0xf, |
|
ISKU_COMMAND_LIGHT = 0x10, |
|
ISKU_COMMAND_RESET = 0x11, |
|
ISKU_COMMAND_KEYS_CAPSLOCK = 0x13, |
|
ISKU_COMMAND_LAST_SET = 0x14, |
|
ISKU_COMMAND_15 = 0x15, |
|
ISKU_COMMAND_TALK = 0x16, |
|
ISKU_COMMAND_TALKFX = 0x17, |
|
ISKU_COMMAND_FIRMWARE_WRITE = 0x1b, |
|
ISKU_COMMAND_FIRMWARE_WRITE_CONTROL = 0x1c, |
|
}; |
|
|
|
struct isku_report_button { |
|
uint8_t number; /* ISKU_REPORT_NUMBER_BUTTON */ |
|
uint8_t zero; |
|
uint8_t event; |
|
uint8_t data1; |
|
uint8_t data2; |
|
}; |
|
|
|
enum isku_report_numbers { |
|
ISKU_REPORT_NUMBER_BUTTON = 3, |
|
}; |
|
|
|
enum isku_report_button_events { |
|
ISKU_REPORT_BUTTON_EVENT_PROFILE = 0x2, |
|
}; |
|
|
|
struct isku_roccat_report { |
|
uint8_t event; |
|
uint8_t data1; |
|
uint8_t data2; |
|
uint8_t profile; |
|
} __packed; |
|
|
|
struct isku_device { |
|
int roccat_claimed; |
|
int chrdev_minor; |
|
|
|
struct mutex isku_lock; |
|
|
|
int actual_profile; |
|
}; |
|
|
|
#endif
|
|
|