diff --git a/src/hidpp20.h b/src/hidpp20.h index 27cd6b45..69118dc7 100644 --- a/src/hidpp20.h +++ b/src/hidpp20.h @@ -577,14 +577,42 @@ enum hidpp20_color_led_zone_effect { #define HIDPP_PAGE_ONBOARD_PROFILES 0x8100 +/* type */ #define HIDPP20_BUTTON_HID_TYPE 0x80 +#define HIDPP20_BUTTON_SPECIAL 0x90 + +/* standard opcodes (0x80) */ +#define HIDPP20_BUTTON_HID_TYPE_NOOP 0x00 #define HIDPP20_BUTTON_HID_TYPE_MOUSE 0x01 #define HIDPP20_BUTTON_HID_TYPE_KEYBOARD 0x02 #define HIDPP20_BUTTON_HID_TYPE_CONSUMER_CONTROL 0x03 -#define HIDPP20_BUTTON_SPECIAL 0x90 + +/* special opcodes (0x90) */ +#define HIDPP20_BUTTON_SPECIAL_NOOP 0x00 +#define HIDPP20_BUTTON_SPECIAL_TILT_LEFT 0x01 +#define HIDPP20_BUTTON_SPECIAL_TILT_RIGHT 0x02 +#define HIDPP20_BUTTON_SPECIAL_NEXT_DPI 0x03 +#define HIDPP20_BUTTON_SPECIAL_PREV_DPI 0x04 +#define HIDPP20_BUTTON_SPECIAL_CYCLE_DPI 0x05 +#define HIDPP20_BUTTON_SPECIAL_DEFAULT_DPI 0x06 +#define HIDPP20_BUTTON_SPECIAL_SHIFT_DPI 0x07 +#define HIDPP20_BUTTON_SPECIAL_NEXT_PROFILE 0x08 +#define HIDPP20_BUTTON_SPECIAL_PREV_PROFILE 0x09 +#define HIDPP20_BUTTON_SPECIAL_CYCLE_PROFILE 0x0a +#define HIDPP20_BUTTON_SPECIAL_GSHIFT 0x0b +/* memory model >= 3 */ +#define HIDPP20_BUTTON_SPECIAL_BATTERY_INDICATOR 0x0c +#define HIDPP20_BUTTON_SPECIAL_ENABLE_PROFILE 0x0d +#define HIDPP20_BUTTON_SPECIAL_PERFORMANCE_SWITCH 0x0e +#define HIDPP20_BUTTON_SPECIAL_HOST 0x0f +#define HIDPP20_BUTTON_SPECIAL_SCROLL_DOWN 0x10 +#define HIDPP20_BUTTON_SPECIAL_SCROLL_UP 0x11 + +/* buttons */ #define HIDPP20_BUTTON_MACRO 0x00 #define HIDPP20_BUTTON_DISABLED 0xFF +/* modifiers */ #define HIDPP20_MODIFIER_KEY_CTRL 0x01 #define HIDPP20_MODIFIER_KEY_SHIFT 0x02 @@ -792,12 +820,32 @@ struct hidpp20_led { uint8_t original[sizeof(struct hidpp20_internal_led)]; }; -#define HIDPP20_MACRO_NOOP 0x01 +/* macro opcodes */ + +/* control commands */ +#define HIDPP20_MACRO_WAIT_FOR_RELEASE 0x01 +#define HIDPP20_MACRO_REPEAT_WHILE_PRESSED 0x02 +#define HIDPP20_MACRO_REPEAT_UNTIL_CANCELED 0x03 +#define HIDPP20_MACRO_END 0xff + +/* delay & jump commands */ +#define HIDPP20_MACRO_NOOP 0x00 /* wait the duration of a macro step */ #define HIDPP20_MACRO_DELAY 0x40 +#define HIDPP20_MACRO_JUMP 0x60 + +/* button & key event generation */ +#define HIDPP20_MACRO_BUTTON_DOWN 0x41 +#define HIDPP20_MACRO_BUTTON_UP 0x42 #define HIDPP20_MACRO_KEY_PRESS 0x43 #define HIDPP20_MACRO_KEY_RELEASE 0x44 -#define HIDPP20_MACRO_JUMP 0x60 -#define HIDPP20_MACRO_END 0xff +#define HIDPP20_MACRO_CONS_DOWN 0x45 +#define HIDPP20_MACRO_CONS_UP 0x46 + +/* analog commands */ +#define HIDPP20_MACRO_ROLLER 0x20 +#define HIDPP20_MACRO_ACPAN 0x21 +#define HIDPP20_MACRO_XY 0x61 + union hidpp20_macro_data { struct {