1use cue_sdk_sys as ffi;
2
3#[repr(C)]
12#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
13pub struct LedColor {
14 pub id: u32,
16 pub r: u8,
17 pub g: u8,
18 pub b: u8,
19 pub a: u8,
20}
21
22impl LedColor {
23 pub fn new(id: u32, r: u8, g: u8, b: u8, a: u8) -> Self {
25 Self { id, r, g, b, a }
26 }
27
28 pub fn rgb(id: u32, r: u8, g: u8, b: u8) -> Self {
30 Self::new(id, r, g, b, 255)
31 }
32}
33
34const _: () = {
37 assert!(
38 std::mem::size_of::<LedColor>() == std::mem::size_of::<ffi::CorsairLedColor>(),
39 "LedColor size mismatch"
40 );
41 assert!(
42 std::mem::align_of::<LedColor>() == std::mem::align_of::<ffi::CorsairLedColor>(),
43 "LedColor alignment mismatch"
44 );
45};
46
47#[derive(Debug, Clone, Copy)]
53pub struct LedPosition {
54 pub id: u32,
56 pub cx: f64,
58 pub cy: f64,
60}
61
62impl LedPosition {
63 pub(crate) fn from_ffi(raw: &ffi::CorsairLedPosition) -> Self {
64 Self {
65 id: raw.id,
66 cx: raw.cx,
67 cy: raw.cy,
68 }
69 }
70}
71
72pub mod keyboard {
81 use cue_sdk_sys as ffi;
82
83 pub const ESCAPE: u32 = ffi::CorsairLedId_Keyboard_CLK_Escape;
84 pub const F1: u32 = ffi::CorsairLedId_Keyboard_CLK_F1;
85 pub const F2: u32 = ffi::CorsairLedId_Keyboard_CLK_F2;
86 pub const F3: u32 = ffi::CorsairLedId_Keyboard_CLK_F3;
87 pub const F4: u32 = ffi::CorsairLedId_Keyboard_CLK_F4;
88 pub const F5: u32 = ffi::CorsairLedId_Keyboard_CLK_F5;
89 pub const F6: u32 = ffi::CorsairLedId_Keyboard_CLK_F6;
90 pub const F7: u32 = ffi::CorsairLedId_Keyboard_CLK_F7;
91 pub const F8: u32 = ffi::CorsairLedId_Keyboard_CLK_F8;
92 pub const F9: u32 = ffi::CorsairLedId_Keyboard_CLK_F9;
93 pub const F10: u32 = ffi::CorsairLedId_Keyboard_CLK_F10;
94 pub const F11: u32 = ffi::CorsairLedId_Keyboard_CLK_F11;
95 pub const F12: u32 = ffi::CorsairLedId_Keyboard_CLK_F12;
96 pub const GRAVE_ACCENT: u32 = ffi::CorsairLedId_Keyboard_CLK_GraveAccentAndTilde;
97 pub const KEY_1: u32 = ffi::CorsairLedId_Keyboard_CLK_1;
98 pub const KEY_2: u32 = ffi::CorsairLedId_Keyboard_CLK_2;
99 pub const KEY_3: u32 = ffi::CorsairLedId_Keyboard_CLK_3;
100 pub const KEY_4: u32 = ffi::CorsairLedId_Keyboard_CLK_4;
101 pub const KEY_5: u32 = ffi::CorsairLedId_Keyboard_CLK_5;
102 pub const KEY_6: u32 = ffi::CorsairLedId_Keyboard_CLK_6;
103 pub const KEY_7: u32 = ffi::CorsairLedId_Keyboard_CLK_7;
104 pub const KEY_8: u32 = ffi::CorsairLedId_Keyboard_CLK_8;
105 pub const KEY_9: u32 = ffi::CorsairLedId_Keyboard_CLK_9;
106 pub const KEY_0: u32 = ffi::CorsairLedId_Keyboard_CLK_0;
107 pub const MINUS: u32 = ffi::CorsairLedId_Keyboard_CLK_MinusAndUnderscore;
108 pub const EQUALS: u32 = ffi::CorsairLedId_Keyboard_CLK_EqualsAndPlus;
109 pub const BACKSPACE: u32 = ffi::CorsairLedId_Keyboard_CLK_Backspace;
110 pub const TAB: u32 = ffi::CorsairLedId_Keyboard_CLK_Tab;
111 pub const Q: u32 = ffi::CorsairLedId_Keyboard_CLK_Q;
112 pub const W: u32 = ffi::CorsairLedId_Keyboard_CLK_W;
113 pub const E: u32 = ffi::CorsairLedId_Keyboard_CLK_E;
114 pub const R: u32 = ffi::CorsairLedId_Keyboard_CLK_R;
115 pub const T: u32 = ffi::CorsairLedId_Keyboard_CLK_T;
116 pub const Y: u32 = ffi::CorsairLedId_Keyboard_CLK_Y;
117 pub const U: u32 = ffi::CorsairLedId_Keyboard_CLK_U;
118 pub const I: u32 = ffi::CorsairLedId_Keyboard_CLK_I;
119 pub const O: u32 = ffi::CorsairLedId_Keyboard_CLK_O;
120 pub const P: u32 = ffi::CorsairLedId_Keyboard_CLK_P;
121 pub const BRACKET_LEFT: u32 = ffi::CorsairLedId_Keyboard_CLK_BracketLeft;
122 pub const BRACKET_RIGHT: u32 = ffi::CorsairLedId_Keyboard_CLK_BracketRight;
123 pub const CAPS_LOCK: u32 = ffi::CorsairLedId_Keyboard_CLK_CapsLock;
124 pub const A: u32 = ffi::CorsairLedId_Keyboard_CLK_A;
125 pub const S: u32 = ffi::CorsairLedId_Keyboard_CLK_S;
126 pub const D: u32 = ffi::CorsairLedId_Keyboard_CLK_D;
127 pub const F: u32 = ffi::CorsairLedId_Keyboard_CLK_F;
128 pub const G: u32 = ffi::CorsairLedId_Keyboard_CLK_G;
129 pub const H: u32 = ffi::CorsairLedId_Keyboard_CLK_H;
130 pub const J: u32 = ffi::CorsairLedId_Keyboard_CLK_J;
131 pub const K: u32 = ffi::CorsairLedId_Keyboard_CLK_K;
132 pub const L: u32 = ffi::CorsairLedId_Keyboard_CLK_L;
133 pub const SEMICOLON: u32 = ffi::CorsairLedId_Keyboard_CLK_SemicolonAndColon;
134 pub const APOSTROPHE: u32 = ffi::CorsairLedId_Keyboard_CLK_ApostropheAndDoubleQuote;
135 pub const BACKSLASH: u32 = ffi::CorsairLedId_Keyboard_CLK_Backslash;
136 pub const ENTER: u32 = ffi::CorsairLedId_Keyboard_CLK_Enter;
137 pub const LEFT_SHIFT: u32 = ffi::CorsairLedId_Keyboard_CLK_LeftShift;
138 pub const NON_US_BACKSLASH: u32 = ffi::CorsairLedId_Keyboard_CLK_NonUsBackslash;
139 pub const Z: u32 = ffi::CorsairLedId_Keyboard_CLK_Z;
140 pub const X: u32 = ffi::CorsairLedId_Keyboard_CLK_X;
141 pub const C: u32 = ffi::CorsairLedId_Keyboard_CLK_C;
142 pub const V: u32 = ffi::CorsairLedId_Keyboard_CLK_V;
143 pub const B: u32 = ffi::CorsairLedId_Keyboard_CLK_B;
144 pub const N: u32 = ffi::CorsairLedId_Keyboard_CLK_N;
145 pub const M: u32 = ffi::CorsairLedId_Keyboard_CLK_M;
146 pub const COMMA: u32 = ffi::CorsairLedId_Keyboard_CLK_CommaAndLessThan;
147 pub const PERIOD: u32 = ffi::CorsairLedId_Keyboard_CLK_PeriodAndBiggerThan;
148 pub const SLASH: u32 = ffi::CorsairLedId_Keyboard_CLK_SlashAndQuestionMark;
149 pub const RIGHT_SHIFT: u32 = ffi::CorsairLedId_Keyboard_CLK_RightShift;
150 pub const LEFT_CTRL: u32 = ffi::CorsairLedId_Keyboard_CLK_LeftCtrl;
151 pub const LEFT_GUI: u32 = ffi::CorsairLedId_Keyboard_CLK_LeftGui;
152 pub const LEFT_ALT: u32 = ffi::CorsairLedId_Keyboard_CLK_LeftAlt;
153 pub const SPACE: u32 = ffi::CorsairLedId_Keyboard_CLK_Space;
154 pub const RIGHT_ALT: u32 = ffi::CorsairLedId_Keyboard_CLK_RightAlt;
155 pub const RIGHT_GUI: u32 = ffi::CorsairLedId_Keyboard_CLK_RightGui;
156 pub const APPLICATION: u32 = ffi::CorsairLedId_Keyboard_CLK_Application;
157 pub const RIGHT_CTRL: u32 = ffi::CorsairLedId_Keyboard_CLK_RightCtrl;
158 pub const LED_PROGRAMMING: u32 = ffi::CorsairLedId_Keyboard_CLK_LedProgramming;
159 pub const LANG1: u32 = ffi::CorsairLedId_Keyboard_CLK_Lang1;
160 pub const LANG2: u32 = ffi::CorsairLedId_Keyboard_CLK_Lang2;
161 pub const INTERNATIONAL1: u32 = ffi::CorsairLedId_Keyboard_CLK_International1;
162 pub const INTERNATIONAL2: u32 = ffi::CorsairLedId_Keyboard_CLK_International2;
163 pub const INTERNATIONAL3: u32 = ffi::CorsairLedId_Keyboard_CLK_International3;
164 pub const INTERNATIONAL4: u32 = ffi::CorsairLedId_Keyboard_CLK_International4;
165 pub const INTERNATIONAL5: u32 = ffi::CorsairLedId_Keyboard_CLK_International5;
166 pub const PRINT_SCREEN: u32 = ffi::CorsairLedId_Keyboard_CLK_PrintScreen;
167 pub const SCROLL_LOCK: u32 = ffi::CorsairLedId_Keyboard_CLK_ScrollLock;
168 pub const PAUSE_BREAK: u32 = ffi::CorsairLedId_Keyboard_CLK_PauseBreak;
169 pub const INSERT: u32 = ffi::CorsairLedId_Keyboard_CLK_Insert;
170 pub const HOME: u32 = ffi::CorsairLedId_Keyboard_CLK_Home;
171 pub const PAGE_UP: u32 = ffi::CorsairLedId_Keyboard_CLK_PageUp;
172 pub const DELETE: u32 = ffi::CorsairLedId_Keyboard_CLK_Delete;
173 pub const END: u32 = ffi::CorsairLedId_Keyboard_CLK_End;
174 pub const PAGE_DOWN: u32 = ffi::CorsairLedId_Keyboard_CLK_PageDown;
175 pub const UP_ARROW: u32 = ffi::CorsairLedId_Keyboard_CLK_UpArrow;
176 pub const LEFT_ARROW: u32 = ffi::CorsairLedId_Keyboard_CLK_LeftArrow;
177 pub const DOWN_ARROW: u32 = ffi::CorsairLedId_Keyboard_CLK_DownArrow;
178 pub const RIGHT_ARROW: u32 = ffi::CorsairLedId_Keyboard_CLK_RightArrow;
179 pub const NON_US_TILDE: u32 = ffi::CorsairLedId_Keyboard_CLK_NonUsTilde;
180 pub const BRIGHTNESS: u32 = ffi::CorsairLedId_Keyboard_CLK_Brightness;
181 pub const WIN_LOCK: u32 = ffi::CorsairLedId_Keyboard_CLK_WinLock;
182 pub const MUTE: u32 = ffi::CorsairLedId_Keyboard_CLK_Mute;
183 pub const STOP: u32 = ffi::CorsairLedId_Keyboard_CLK_Stop;
184 pub const SCAN_PREVIOUS_TRACK: u32 = ffi::CorsairLedId_Keyboard_CLK_ScanPreviousTrack;
185 pub const PLAY_PAUSE: u32 = ffi::CorsairLedId_Keyboard_CLK_PlayPause;
186 pub const SCAN_NEXT_TRACK: u32 = ffi::CorsairLedId_Keyboard_CLK_ScanNextTrack;
187 pub const NUM_LOCK: u32 = ffi::CorsairLedId_Keyboard_CLK_NumLock;
188 pub const KEYPAD_SLASH: u32 = ffi::CorsairLedId_Keyboard_CLK_KeypadSlash;
189 pub const KEYPAD_ASTERISK: u32 = ffi::CorsairLedId_Keyboard_CLK_KeypadAsterisk;
190 pub const KEYPAD_MINUS: u32 = ffi::CorsairLedId_Keyboard_CLK_KeypadMinus;
191 pub const KEYPAD_7: u32 = ffi::CorsairLedId_Keyboard_CLK_Keypad7;
192 pub const KEYPAD_8: u32 = ffi::CorsairLedId_Keyboard_CLK_Keypad8;
193 pub const KEYPAD_9: u32 = ffi::CorsairLedId_Keyboard_CLK_Keypad9;
194 pub const KEYPAD_PLUS: u32 = ffi::CorsairLedId_Keyboard_CLK_KeypadPlus;
195 pub const KEYPAD_4: u32 = ffi::CorsairLedId_Keyboard_CLK_Keypad4;
196 pub const KEYPAD_5: u32 = ffi::CorsairLedId_Keyboard_CLK_Keypad5;
197 pub const KEYPAD_6: u32 = ffi::CorsairLedId_Keyboard_CLK_Keypad6;
198 pub const KEYPAD_1: u32 = ffi::CorsairLedId_Keyboard_CLK_Keypad1;
199 pub const KEYPAD_2: u32 = ffi::CorsairLedId_Keyboard_CLK_Keypad2;
200 pub const KEYPAD_3: u32 = ffi::CorsairLedId_Keyboard_CLK_Keypad3;
201 pub const KEYPAD_COMMA: u32 = ffi::CorsairLedId_Keyboard_CLK_KeypadComma;
202 pub const KEYPAD_ENTER: u32 = ffi::CorsairLedId_Keyboard_CLK_KeypadEnter;
203 pub const KEYPAD_0: u32 = ffi::CorsairLedId_Keyboard_CLK_Keypad0;
204 pub const KEYPAD_PERIOD_DELETE: u32 = ffi::CorsairLedId_Keyboard_CLK_KeypadPeriodAndDelete;
205 pub const VOLUME_UP: u32 = ffi::CorsairLedId_Keyboard_CLK_VolumeUp;
206 pub const VOLUME_DOWN: u32 = ffi::CorsairLedId_Keyboard_CLK_VolumeDown;
207 pub const MR: u32 = ffi::CorsairLedId_Keyboard_CLK_MR;
208 pub const M1: u32 = ffi::CorsairLedId_Keyboard_CLK_M1;
209 pub const M2: u32 = ffi::CorsairLedId_Keyboard_CLK_M2;
210 pub const M3: u32 = ffi::CorsairLedId_Keyboard_CLK_M3;
211 pub const FN: u32 = ffi::CorsairLedId_Keyboard_CLK_Fn;
212}