@@ -17,13 +17,22 @@ const size_t max_key_per_color = 13;
17
17
const size_t data_size = 16 ;
18
18
19
19
static unsigned int matrix_map[7 ][27 ] =
20
- { { 110 , NA, NA, NA, NA, NA, NA, NA, NA, NA, 111 , NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA },
21
- { NA, NA, 37 , NA, 54 , 55 , 56 , 57 , NA, 58 , 59 , 60 , 61 , NA, 62 , 63 , 64 , 65 , NA, 66 , 67 , 68 , NA, 106 , 107 , 108 , 109 },
22
- { 112 , NA, 49 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , NA, 41 , 42 , 38 , NA, NA, 69 , 70 , 71 , NA, 79 , 80 , 81 , 82 },
23
- { 113 , NA, 39 , NA, 16 , 22 , 4 , 17 , NA, 19 , 24 , 20 , 8 , 14 , 15 , 43 , 44 , 45 , NA, 72 , 73 , 74 , NA, 91 , 92 , 93 , 83 },
24
- { 114 , NA, 53 , NA, 0 , 18 , 3 , 5 , NA, 6 , 7 , 9 , 10 , 11 , 47 , 48 , 46 , 36 , NA, NA, NA, NA, NA, 88 , 89 , 90 , NA },
25
- { 115 , NA, 99 , 96 , 25 , 23 , 2 , 21 , NA, 1 , NA, 13 , 12 , 50 , 51 , 52 , 103 , NA, NA, NA, 78 , NA, NA, 85 , 86 , 87 , 84 },
26
- { 116 , NA, 98 , 101 , 100 , NA, NA, NA, NA, 40 , NA, NA, NA, NA, 104 , 105 , 97 , 102 , NA, 76 , 77 , 75 , NA, 94 , NA, 95 , NA } };
20
+ { { 93 , NA, NA, NA, NA, NA, NA, NA, NA, NA, 94 , NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA },
21
+ { NA, NA, 37 , NA, 54 , 55 , 56 , 57 , NA, 58 , 59 , 60 , 61 , NA, 62 , 63 , 64 , 65 , NA, 66 , 67 , 68 , NA, 89 , 90 , 91 , 92 },
22
+ { 112 , NA, 49 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , NA, 41 , 42 , 38 , NA, NA, 69 , 70 , 71 , NA, 95 , 96 , 97 , 98 },
23
+ { 113 , NA, 39 , NA, 16 , 22 , 4 , 17 , NA, 19 , 24 , 20 , 8 , 14 , 15 , 43 , 44 , 45 , NA, 72 , 73 , 74 , NA, 107 , 108 , 109 , 99 },
24
+ { 114 , NA, 53 , NA, 0 , 18 , 3 , 5 , NA, 6 , 7 , 9 , 10 , 11 , 47 , 48 , 46 , 36 , NA, NA, NA, NA, NA, 104 , 105 , 106 , NA },
25
+ { 115 , NA, 82 , 79 , 25 , 23 , 2 , 21 , NA, 1 , NA, 13 , 12 , 50 , 51 , 52 , 86 , NA, NA, NA, 78 , NA, NA, 101 , 102 , 103 , 100 },
26
+ { 116 , NA, 81 , 84 , 83 , NA, NA, NA, NA, 40 , NA, NA, NA, NA, 87 , 88 , 80 , 85 , NA, 76 , 77 , 75 , NA, 110 , NA, 111 , NA } };
27
+
28
+ static unsigned int matrix_map_tkl[7 ][20 ] =
29
+ { { 93 , NA, NA, NA, NA, 94 , NA, NA, NA, NA, NA, NA, 89 , 90 , 91 , 92 , NA, NA, NA, NA },
30
+ { 37 , NA, 54 , 55 , 56 , 57 , NA, 58 , 59 , 60 , 61 , NA, 62 , 63 , 64 , 65 , NA, 66 , 67 , 68 },
31
+ { 49 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , NA, 41 , 42 , 38 , NA, NA, 69 , 70 , 71 },
32
+ { 39 , NA, 16 , 22 , 4 , 17 , NA, 19 , 24 , 20 , 8 , 14 , 15 , 43 , 44 , 45 , NA, 72 , 73 , 74 },
33
+ { 53 , NA, 0 , 18 , 3 , 5 , NA, 6 , 7 , 9 , 10 , 11 , 47 , 48 , 46 , 36 , NA, NA, NA, NA },
34
+ { 82 , 79 , 25 , 23 , 2 , 21 , NA, 1 , NA, 13 , 12 , 50 , 51 , 52 , 86 , NA, NA, NA, 78 , NA },
35
+ { 81 , 84 , 83 , NA, NA, NA, NA, 40 , NA, NA, NA, NA, 87 , 88 , 80 , 85 , NA, 76 , 77 , 75 } };
27
36
28
37
static const char * zone_names[] =
29
38
{
@@ -35,6 +44,9 @@ static zone_type zone_types[] =
35
44
ZONE_TYPE_MATRIX,
36
45
};
37
46
47
+ static const unsigned int tkl_led_count = 95 ;
48
+ static const unsigned int full_led_count = 117 ;
49
+
38
50
static const unsigned int zone_sizes[] =
39
51
{
40
52
117 ,
@@ -129,7 +141,23 @@ static const led_type led_names[] =
129
141
{ " Key: Left Arrow" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x50 },
130
142
{ " Key: Down Arrow" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x51 },
131
143
{ " Key: Up Arrow" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x52 },
132
- { " Key: Num Lock" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x53 },
144
+ { " Key: \\ (ISO)" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x64 },// ISO only
145
+ { " Key: Menu" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x65 },
146
+ { " Key: Left Control" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE0 },
147
+ { " Key: Left Shift" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE1 },
148
+ { " Key: Left Alt" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE2 },
149
+ { " Key: Left Windows" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE3 },
150
+ { " Key: Right Control" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE4 },
151
+ { " Key: Right Shift" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE5 },
152
+ { " Key: Right Alt" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE6 },
153
+ { " Key: Right Windows" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE7 },
154
+ { " Key: Media Previous" , LOGITECH_G915_ZONE_DIRECT_MEDIA, 0x9E },
155
+ { " Key: Media Play/Pause" , LOGITECH_G915_ZONE_DIRECT_MEDIA, 0x9B },
156
+ { " Key: Media Next" , LOGITECH_G915_ZONE_DIRECT_MEDIA, 0x9D },
157
+ { " Key: Media Mute" , LOGITECH_G915_ZONE_DIRECT_MEDIA, 0x9C },
158
+ { " Logo" , LOGITECH_G915_ZONE_DIRECT_LOGO, 0x01 },
159
+ { " Key: Brightness" , LOGITECH_G915_ZONE_DIRECT_INDICATORS, 0x99 },
160
+ { " Key: Num Lock" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x53 }, // First Non-TKL Key
133
161
{ " Key: Number Pad /" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x54 },
134
162
{ " Key: Number Pad *" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x55 },
135
163
{ " Key: Number Pad -" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x56 },
@@ -146,38 +174,31 @@ static const led_type led_names[] =
146
174
{ " Key: Number Pad 9" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x61 },
147
175
{ " Key: Number Pad 0" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x62 },
148
176
{ " Key: Number Pad ." , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x63 },
149
- { " Key: \\ (ISO)" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x64 },// ISO only
150
- { " Key: Menu" , LOGITECH_G915_ZONE_DIRECT_KEYBOARD, 0x65 },
151
- { " Key: Left Control" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE0 },
152
- { " Key: Left Shift" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE1 },
153
- { " Key: Left Alt" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE2 },
154
- { " Key: Left Windows" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE3 },
155
- { " Key: Right Control" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE4 },
156
- { " Key: Right Shift" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE5 },
157
- { " Key: Right Alt" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE6 },
158
- { " Key: Right Windows" , LOGITECH_G915_ZONE_MODE_MODIFIERS, 0xE7 },
159
- { " Key: Media Previous" , LOGITECH_G915_ZONE_DIRECT_MEDIA, 0x9E },
160
- { " Key: Media Play/Pause" , LOGITECH_G915_ZONE_DIRECT_MEDIA, 0x9B },
161
- { " Key: Media Next" , LOGITECH_G915_ZONE_DIRECT_MEDIA, 0x9D },
162
- { " Key: Media Mute" , LOGITECH_G915_ZONE_DIRECT_MEDIA, 0x9C },
163
- { " Logo" , LOGITECH_G915_ZONE_DIRECT_LOGO, 0x01 },
164
- { " Lighting" , LOGITECH_G915_ZONE_DIRECT_INDICATORS, 0x99 },
165
177
{ " Key: G1" , LOGITECH_G915_ZONE_MODE_GKEYS, 0x01 },
166
178
{ " Key: G2" , LOGITECH_G915_ZONE_MODE_GKEYS, 0x02 },
167
179
{ " Key: G3" , LOGITECH_G915_ZONE_MODE_GKEYS, 0x03 },
168
180
{ " Key: G4" , LOGITECH_G915_ZONE_MODE_GKEYS, 0x04 },
169
181
{ " Key: G5" , LOGITECH_G915_ZONE_MODE_GKEYS, 0x05 },
170
182
};
171
183
172
- RGBController_LogitechG915::RGBController_LogitechG915 (LogitechG915Controller* logitech_ptr)
184
+ RGBController_LogitechG915::RGBController_LogitechG915 (LogitechG915Controller* logitech_ptr, bool tkl )
173
185
{
174
- logitech = logitech_ptr ;
186
+ is_tkl = tkl ;
175
187
176
- name = " Logitech G915 Keyboard Device" ;
177
- vendor = " Logitech" ;
178
- type = DEVICE_TYPE_KEYBOARD;
179
- description = " Logitech G915 Keyboard Device" ;
180
- serial = logitech->GetSerialString ();
188
+ if (is_tkl)
189
+ {
190
+ name = " Logitech G915TKL Keyboard Device" ;
191
+ }
192
+ else
193
+ {
194
+ name = " Logitech G915 Keyboard Device" ;
195
+ }
196
+
197
+ description = name;
198
+ logitech = logitech_ptr;
199
+ vendor = " Logitech" ;
200
+ type = DEVICE_TYPE_KEYBOARD;
201
+ serial = logitech->GetSerialString ();
181
202
182
203
mode Direct;
183
204
Direct.name = " Direct" ;
@@ -249,22 +270,32 @@ void RGBController_LogitechG915::SetupZones()
249
270
/* ---------------------------------------------------------*\
250
271
| Set up zones |
251
272
\*---------------------------------------------------------*/
273
+
252
274
unsigned int total_led_count = 0 ;
253
275
for (unsigned int zone_idx = 0 ; zone_idx < 1 ; zone_idx++)
254
276
{
255
277
zone new_zone;
256
278
new_zone.name = zone_names[zone_idx];
257
279
new_zone.type = zone_types[zone_idx];
258
- new_zone.leds_min = zone_sizes[zone_idx] ;
259
- new_zone.leds_max = zone_sizes[zone_idx] ;
260
- new_zone.leds_count = zone_sizes[zone_idx] ;
280
+ new_zone.leds_count = (is_tkl) ? tkl_led_count : full_led_count ;
281
+ new_zone.leds_min = new_zone. leds_count ;
282
+ new_zone.leds_max = new_zone. leds_count ;
261
283
262
284
if (zone_types[zone_idx] == ZONE_TYPE_MATRIX)
263
285
{
264
286
new_zone.matrix_map = new matrix_map_type;
265
- new_zone.matrix_map ->height = 7 ;
266
- new_zone.matrix_map ->width = 27 ;
267
- new_zone.matrix_map ->map = (unsigned int *)&matrix_map;
287
+ if (is_tkl)
288
+ {
289
+ new_zone.matrix_map ->map = (unsigned int *)&matrix_map_tkl;
290
+ new_zone.matrix_map ->height = 7 ;
291
+ new_zone.matrix_map ->width = 20 ;
292
+ }
293
+ else
294
+ {
295
+ new_zone.matrix_map ->map = (unsigned int *)&matrix_map;
296
+ new_zone.matrix_map ->height = 7 ;
297
+ new_zone.matrix_map ->width = 27 ;
298
+ }
268
299
}
269
300
else
270
301
{
@@ -273,7 +304,7 @@ void RGBController_LogitechG915::SetupZones()
273
304
274
305
zones.push_back (new_zone);
275
306
276
- total_led_count += zone_sizes[zone_idx] ;
307
+ total_led_count += new_zone. leds_count ;
277
308
}
278
309
279
310
for (unsigned int led_idx = 0 ; led_idx < total_led_count; led_idx++)
0 commit comments