Files
OpenRGB/Controllers/LenovoControllers/LenovoDevices.h
2025-12-17 21:25:25 -08:00

1985 lines
60 KiB
C++

/*---------------------------------------------------------*\
| LenovoDevices.h |
| |
| Device list for Lenovo USB devices |
| |
| Cooper Hall (geobot19) 17 Apr 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
#include <string>
#include "RGBControllerKeyNames.h"
#include "RGBController.h"
#define NA 0xFFFFFFFF
/*-------------------------------------------------------------------*\
| Note: additions here must be adeed to RGBController_LenovoUSB.cpp in|
| the switch statements which are on lines 28 and 60 at time of |
| writing |
\*-------------------------------------------------------------------*/
/*-----------------------------------------------------*\
| Keyboard product IDs |
\*-----------------------------------------------------*/
#define LEGION_Y740 0xC935
#define LEGION_Y750 0xC956
#define LEGION_Y750S 0xC957
#define LEGION_Y760 0xC968
#define LEGION_Y760S 0xC967
#define LEGION_S7GEN7 0xC977
#define LEGION_7GEN7 0xC978
#define LEGION_7GEN8 0xC988
#define LEGION_S7GEN8 0xC987
#define LEGION_7GEN9 0xC997
#define LEGION_7GEN9_H 0xC998
#define LEGION_7GEN10 0xC197
enum LENOVO_KEYBOARD
{
ISO,
ANSI,
JAPAN
};
enum LENOVO_SIZE
{
SEVENTEEN,
FIFTEEN,
UNKNOWN
};
struct lenovo_led
{
uint8_t led_num;
std::string name;
};
struct lenovo_zone
{
std::string name;
zone_type type;
unsigned char id;
unsigned int height;
unsigned int width;
const unsigned int* matrix_map;
const lenovo_led* leds;
unsigned int start; //index to start reading the list of leds
unsigned int end; //end index
};
/*---------*\
| LED MAPS |
\*---------*/
static const unsigned int legion_Y760_ansi_leds_map[] =
{ 0, NA, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, NA, 21, 22, 23, 24, 25, 26, 27, 28, 29, NA, 30, 31, 32, NA, 52, 33, 34, 35, 36,
37, NA, 38, 39, 40, 41, 42, 43, 44, 45, 46, NA, 47, 48, 49, 50, 51, 53, NA, NA, NA,
54, NA, 55, 56, 57, NA, 58, 59, 60, 61, 62, 63, 64, 65, 66, NA, 67, 68, 69, 70, NA,
72, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 90, 91, NA, 92, 93, 94, 95, 71,
73, 74, 75, NA, 76, 77, 78, 79, 80, 81, 82, 83, 84, NA, 86, 88, 89, 111, 113, 114, 96,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 85, NA, 87, NA, NA, 112, NA, 115, NA,
97, 98, NA, 99, 100, 101, NA, 102, 103, 104, 105, 106, 107, 108, NA, 109, 110, 119, 121, 123, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 116, 117, 118, NA, NA, NA, 120, 122, 124, 125,
126, NA, 127, 128, 129, 130, NA, NA, NA, NA, 131, 132, 133, NA, 135, NA, NA, 140, NA, 142, 144,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 136, NA, NA, NA, 141, 143, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 134, 137, NA, 139, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 138, NA, NA, NA, NA, NA, NA };
static const unsigned int legion_Y760_iso_leds_map[] =
{ 0, NA, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, NA, 21, 22, 23, 24, 25, 26, 27, 28, 29, NA, 30, 31, 32, NA, NA, 33, 34, 35, 36,
37, NA, 38, 39, 40, 41, 42, 43, 44, 45, 46, NA, 47, 48, 49, NA, 50, 51, NA, NA, NA,
52, NA, 53, 54, 55, NA, 56, 57, 58, 59, 60, 61, 62, 63, 64, NA, 65, 66, 67, 68, NA,
70, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 88, 89, NA, NA, 90, 91, 92, 69,
71, 72, 73, NA, 74, 75, 76, 77, 78, 79, 80, 81, 82, NA, 84, 86, NA, 109, 111, 112, 93,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 83, NA, 85, 87, NA, 110, NA, 113, NA,
94, NA, 95, 97, 98, 99, NA, 100, 101, 102, 103, 104, 105, 106, NA, 107, 108, 117, 119, 121, NA,
NA, NA, 96, NA, NA, NA, NA, NA, NA, NA, NA, 114, 115, 116, NA, NA, NA, 118, 120, 122, 123,
124, NA, 125, 126, 127, 128, NA, NA, NA, NA, 129, 130, 131, NA, 133, NA, NA, 138, NA, 140, 142,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 134, NA, NA, NA, 139, 141, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 132, 135, NA, 137, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 136, NA, NA, NA, NA, NA, NA };
static const unsigned int legion_Y760_jp_leds_map[] =
{ 0, NA, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, NA, 21, 22, 23, 24, 25, 26, 27, 28, 29, NA, 30, 31, 32, 33, 53, 34, 35, 36, 37,
38, NA, 39, 40, 41, 42, 43, 44, 45, 46, 47, NA, 48, 49, 50, 51, 52, 54, NA, NA, NA,
55, NA, 56, 57, 58, NA, 59, 60, 61, 62, 63, 64, 65, 66, 68, NA, 70, 71, 72, 73, NA,
75, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 67, 69, NA, 93, 94, 95, 96, 74,
76, 77, 78, NA, 79, 80, 81, 82, 83, 84, 85, 86, 87, NA, 89, 91, NA, 116, 118, 119, 97,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 88, NA, 90, 92, NA, 117, NA, 120, NA,
98, 99, NA, 100, 101, 102, NA, 103, 104, 105, 106, 107, 109, 111, 113, 114, 115, 121, 123, 125, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 108, 110, 112, NA, NA, NA, 122, 124, 126, 127,
128, NA, 129, 130, 131, 132, 133, NA, NA, 134, 135, 136, 137, NA, 139, NA, NA, 144, NA, 146, 148,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 140, NA, NA, NA, 145, 147, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 138, 141, NA, 143, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 142, NA, NA, NA, NA, NA, NA };
static const unsigned int legion_Y740_17_ansi_leds_map[] =
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, NA, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, NA, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, NA, 89, NA, 88, NA,
90, 91, 92, 93, 94, NA, NA, 95, NA, 96, 97, 98, 99, 100, NA, NA, 101, 102, 103 };
static const unsigned int legion_Y740_17_iso_leds_map[] =
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, NA, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, NA, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, NA, NA, 69, 70, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, NA, 88, NA, 87, NA,
89, 90, 91, 92, 93, NA, NA, 94, NA, 95, 96, 97, 98, 99, NA, NA, 100, 101, 102 };
static const unsigned int legion_Y740_15_ansi_leds_map[] =
{ 84, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, NA,
85, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
86, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, NA,
87, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
88, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, NA,
89, 72, 73, 74, 75, 76, NA, NA, NA, 77, 78, 79, NA, 80, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 81, 82, 83, NA };
static const unsigned int legion_Y740_15_iso_leds_map[] =
{ 83, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, NA,
84, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
85, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, NA,
86, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, NA,
87, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, NA,
88, 71, 72, 73, 74, 75, NA, NA, NA, 76, 77, 78, NA, 79, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 80, 81, 82, NA };
/*---------------------*\
| zone 1, keyboard ANSI |
\*---------------------*/
const lenovo_led legion_Y760_ansi_leds[]
{
//row 1
{0x01, KEY_EN_ESCAPE},//0
{0x02, KEY_EN_F1},//1
{0x03, KEY_EN_F2},//2
{0x04, KEY_EN_F3},//3
{0x05, KEY_EN_F4},//4
{0x06, KEY_EN_F5},//5
{0x07, KEY_EN_F6},//6
{0x08, KEY_EN_F7},//7
{0x09, KEY_EN_F8},//8
{0x0A, KEY_EN_F9},//9
{0x0B, KEY_EN_F10},//10
{0x0C, KEY_EN_F11},//11
{0x0D, KEY_EN_F12},//12
{0x0E, KEY_EN_INSERT},//13
{0x0F, KEY_EN_PRINT_SCREEN},//14
{0x10, KEY_EN_DELETE},//15
{0x11, KEY_EN_HOME},//16
{0x12, KEY_EN_END},//17
{0x13, KEY_EN_PAGE_UP},//18
{0x14, KEY_EN_PAGE_DOWN},//19
//row 2
{0x16, "Key: ~"},//20
{0x17, "Key: !"},//21
{0x18, "Key: @"},//22
{0x19, KEY_EN_POUND},//23
{0x1A, "Key: $"},//24
{0x1B, "Key: %"},//25
{0x1C, "Key: ^"},//26
{0x1D, "Key: &"},//27
{0x1E, "Key: *"},//28
{0x1F, "Key: ("},//29
{0x20, "Key: )"},//30
{0x21, "Key: _"},//31
{0x22, "Key: +"},//32
{0x26, KEY_EN_NUMPAD_LOCK},//33
{0x27, KEY_EN_NUMPAD_DIVIDE},//34
{0x28, KEY_EN_NUMPAD_TIMES},//35
{0x29, KEY_EN_NUMPAD_MINUS},//36
//row 3
{0x2B, KEY_EN_BACK_TICK},//37
{0x2C, KEY_EN_1},//38
{0x2D, KEY_EN_2},//39
{0x2E, KEY_EN_3},//40
{0x2F, KEY_EN_4},//41
{0x30, KEY_EN_5},//42
{0x31, KEY_EN_6},//43
{0x32, KEY_EN_7},//44
{0x33, KEY_EN_8},//45
{0x34, KEY_EN_9},//46
{0x35, KEY_EN_0},//47
{0x36, KEY_EN_MINUS},//48
{0x37, KEY_EN_EQUALS},//49
{0x38, KEY_EN_BACKSPACE},//50
{0x39, KEY_EN_BACKSPACE},//51
{0x3A, KEY_EN_BACKSPACE},//52
{0x3B, KEY_EN_NUMPAD_LOCK},//53
//row 4
{0x40, KEY_EN_TAB},//54
{0x42, KEY_EN_Q},//55
{0x43, KEY_EN_W},//56
{0x44, KEY_EN_E},//57
{0x45, KEY_EN_R},//58
{0x46, KEY_EN_T},//59
{0x47, KEY_EN_Y},//60
{0x48, KEY_EN_U},//61
{0x49, KEY_EN_I},//62
{0x4A, KEY_EN_O},//63
{0x4B, KEY_EN_P},//64
{0x4C, "Key: {"},//65
{0x4D, "Key: }"},//66
{0x4E, "Key: |"},//67
{0x4F, KEY_EN_NUMPAD_7},//68
{0x50, KEY_EN_NUMPAD_8},//69
{0x51, KEY_EN_NUMPAD_9},//70
{0x67, KEY_EN_NUMPAD_PLUS},//71
//row 5
{0x55, KEY_EN_CAPS_LOCK},//72
{0x56, KEY_EN_CAPS_LOCK},//73
{0x57, KEY_EN_CAPS_LOCK},//74
{0x6D, KEY_EN_A},//75
{0x6E, KEY_EN_S},//76
{0x58, KEY_EN_D},//77
{0x59, KEY_EN_F},//78
{0x5A, KEY_EN_G},//79
{0x71, KEY_EN_H},//80
{0x72, KEY_EN_J},//81
{0x5B, KEY_EN_K},//82
{0x5C, KEY_EN_L},//83
{0x5D, "Key: :"},//84
{0x5E, KEY_EN_SEMICOLON},//85
{0x5F, "Key: \""},//86
{0x60, KEY_EN_QUOTE},//87
{0x77, KEY_EN_ANSI_ENTER},//88
{0x78, KEY_EN_ANSI_ENTER},//89
{0x61, KEY_EN_LEFT_BRACKET},//90
{0x62, KEY_EN_RIGHT_BRACKET},//91
{0x63, KEY_EN_ANSI_BACK_SLASH},//92
{0x64, "Key: Number Pad Home"},//93
{0x65, "Key: Number Pad Up Arrow"},//94
{0x66, "Key: Number Pad Page Up"},//95
{0x68, KEY_EN_NUMPAD_PLUS},//96
//row 6
{0x6A, KEY_EN_LEFT_SHIFT},//97
{0x6B, KEY_EN_LEFT_SHIFT},//98
{0x82, KEY_EN_Z},//99
{0x83, KEY_EN_X},//100
{0x6F, KEY_EN_C},//101
{0x70, KEY_EN_V},//102
{0x87, KEY_EN_B},//103
{0x88, KEY_EN_N},//104
{0x73, KEY_EN_M},//105
{0x74, "Key: <"},//106
{0x75, "Key: >"},//107
{0x76, "Key: ?"},//108
{0x8D, KEY_EN_RIGHT_SHIFT},//109
{0xA2, KEY_EN_RIGHT_SHIFT},//110
{0x79, KEY_EN_NUMPAD_4},//111
{0x7A, "Key: Number Pad Right Arrow"},//112
{0x7B, KEY_EN_NUMPAD_5},//113
{0x7C, KEY_EN_NUMPAD_6},//114
{0x7D, "Key: Number Pad Left Arrow"},//115
//row 7
{0x89, KEY_EN_COMMA},//116
{0x8A, KEY_EN_PERIOD},//117
{0x8B, KEY_EN_FORWARD_SLASH},//118
{0x8E, KEY_EN_NUMPAD_1},//119
{0x8F, "Key: Number Pad End"},//120
{0x90, KEY_EN_NUMPAD_2},//121
{0x91, "Key: Number Pad Down Arrow"},//122
{0x92, KEY_EN_NUMPAD_3},//123
{0x93, "Key: Number Pad Page Down"},//124
{0xA7, KEY_EN_NUMPAD_ENTER},//125
//row 8
{0x7F, KEY_EN_LEFT_CONTROL},//126
{0x80, KEY_EN_LEFT_FUNCTION},//127
{0x96, KEY_EN_LEFT_WINDOWS},//128
{0x97, KEY_EN_LEFT_ALT},//129
{0x98, KEY_EN_SPACE},//130
{0x99, KEY_EN_SPACE},//131
{0x9A, KEY_EN_RIGHT_ALT},//132
{0x9B, KEY_EN_RIGHT_CONTROL},//133
{0x9C, KEY_EN_LEFT_ARROW},//134
{0x9D, KEY_EN_UP_ARROW},//135
{0x9E, "Key: Brightness +"},//136
{0x9F, KEY_EN_DOWN_ARROW},//137
{0xA0, "Key: Brightness -"},//138
{0xA1, KEY_EN_RIGHT_ARROW},//139
{0xA3, KEY_EN_NUMPAD_0},//140
{0xA4, "Key: Number Pad Insert"},//141
{0xA5, KEY_EN_NUMPAD_PERIOD},//142
{0xA6, "Key: Number Pad Delete"},//143
{0xA8, KEY_EN_NUMPAD_ENTER},//144
};
/*--------------------*\
| zone 1, keyboard ISO |
\*--------------------*/
const lenovo_led legion_Y760_iso_leds[]
{
//row 1
{0x01, KEY_EN_ESCAPE},//0
{0x02, KEY_EN_F1},//1
{0x03, KEY_EN_F2},//2
{0x04, KEY_EN_F3},//3
{0x05, KEY_EN_F4},//4
{0x06, KEY_EN_F5},//5
{0x07, KEY_EN_F6},//6
{0x08, KEY_EN_F7},//7
{0x09, KEY_EN_F8},//8
{0x0A, KEY_EN_F9},//9
{0x0B, KEY_EN_F10},//10
{0x0C, KEY_EN_F11},//11
{0x0D, KEY_EN_F12},//12
{0x0E, KEY_EN_INSERT},//13
{0x0F, KEY_EN_PRINT_SCREEN},//14
{0x10, KEY_EN_DELETE},//15
{0x11, KEY_EN_HOME},//16
{0x12, KEY_EN_END},//17
{0x13, KEY_EN_PAGE_UP},//18
{0x14, KEY_EN_PAGE_DOWN},//19
//row 2
{0x16, "Key: ¬"},//20
{0x17, "Key: !"},//21
{0x18, "Key: \""},//22
{0x19, "Key: £"},//23
{0x1A, "Key: $"},//24
{0x1B, "Key: %"},//25
{0x1C, "Key: ^"},//26
{0x1D, "Key: &"},//27
{0x1E, "Key: *"},//28
{0x1F, "Key: ("},//29
{0x20, "Key: )"},//30
{0x21, "Key: _"},//31
{0x22, "Key: +"},//32
{0x26, KEY_EN_NUMPAD_LOCK},//33
{0x27, KEY_EN_NUMPAD_DIVIDE},//34
{0x28, KEY_EN_NUMPAD_TIMES},//35
{0x29, KEY_EN_NUMPAD_MINUS},//36
//row 3
{0x2B, KEY_EN_BACK_TICK},//37
{0x2C, KEY_EN_1},//38
{0x2D, KEY_EN_2},//39
{0x2E, KEY_EN_3},//40
{0x2F, KEY_EN_4},//41
{0x30, KEY_EN_5},//42
{0x31, KEY_EN_6},//43
{0x32, KEY_EN_7},//44
{0x33, KEY_EN_8},//45
{0x34, KEY_EN_9},//46
{0x35, KEY_EN_0},//47
{0x36, KEY_EN_MINUS},//48
{0x37, KEY_EN_EQUALS},//49
{0x3A, KEY_EN_BACKSPACE},//50
{0x3B, KEY_EN_NUMPAD_LOCK},//51
//row 4
{0x40, KEY_EN_TAB},//52
{0x42, KEY_EN_Q},//53
{0x43, KEY_EN_W},//54
{0x44, KEY_EN_E},//55
{0x45, KEY_EN_R},//56
{0x46, KEY_EN_T},//57
{0x47, KEY_EN_Y},//58
{0x48, KEY_EN_U},//59
{0x49, KEY_EN_I},//60
{0x4A, KEY_EN_O},//61
{0x4B, KEY_EN_P},//62
{0x4C, "Key: {"},//63
{0x4D, "Key: }"},//64
{0x4E, KEY_EN_ISO_ENTER},//65
{0x4F, KEY_EN_NUMPAD_7},//66
{0x50, KEY_EN_NUMPAD_8},//67
{0x51, KEY_EN_NUMPAD_9},//68
{0x67, KEY_EN_NUMPAD_PLUS},//69
//row 5
{0x55, KEY_EN_CAPS_LOCK},//70
{0x56, KEY_EN_CAPS_LOCK},//71
{0x57, KEY_EN_CAPS_LOCK},//72
{0x6D, KEY_EN_A},//73
{0x6E, KEY_EN_S},//74
{0x58, KEY_EN_D},//75
{0x59, KEY_EN_F},//76
{0x5A, KEY_EN_G},//77
{0x71, KEY_EN_H},//78
{0x72, KEY_EN_J},//79
{0x5B, KEY_EN_K},//80
{0x5C, KEY_EN_L},//81
{0x5D, "Key: :"},//82
{0x5E, KEY_EN_SEMICOLON},//83
{0x5F, "Key: @"},//84
{0x60, KEY_EN_QUOTE},//85
{0x77, "Key: ~"},//86
{0x78, KEY_EN_POUND},//87
{0x61, KEY_EN_LEFT_BRACKET},//88
{0x62, KEY_EN_RIGHT_BRACKET},//89
{0x64, "Key: Number Pad Home"},//90
{0x65, "Key: Number Pad Up Arrow"},//91
{0x66, "Key: Number Pad Page Up"},//92
{0x68, KEY_EN_NUMPAD_PLUS},//93
//row 6
{0x6A, KEY_EN_LEFT_SHIFT},//94
{0x6C, "Key: |"},//95
{0x81, KEY_EN_ISO_BACK_SLASH},//96
{0x82, KEY_EN_Z},//97
{0x83, KEY_EN_X},//98
{0x6F, KEY_EN_C},//99
{0x70, KEY_EN_V},//100
{0x87, KEY_EN_B},//101
{0x88, KEY_EN_N},//102
{0x73, KEY_EN_M},//103
{0x74, "Key: <"},//104
{0x75, "Key: >"},//105
{0x76, "Key: ?"},//106
{0x8D, KEY_EN_RIGHT_SHIFT},//107
{0xA2, KEY_EN_RIGHT_SHIFT},//108
{0x79, KEY_EN_NUMPAD_4},//109
{0x7A, "Key: Number Pad Right Arrow"},//110
{0x7B, KEY_EN_NUMPAD_5},//111
{0x7C, KEY_EN_NUMPAD_6},//112
{0x7D, "Key: Number Pad Left Arrow"},//113
//row 7
{0x89, KEY_EN_COMMA},//114
{0x8A, KEY_EN_PERIOD},//115
{0x8B, KEY_EN_FORWARD_SLASH},//116
{0x8E, KEY_EN_NUMPAD_1},//117
{0x8F, "Key: Number Pad End"},//118
{0x90, KEY_EN_NUMPAD_2},//119
{0x91, "Key: Number Pad Down Arrow"},//120
{0x92, KEY_EN_NUMPAD_3},//121
{0x93, "Key: Number Pad Page Down"},//122
{0xA7, KEY_EN_NUMPAD_ENTER},//123
//row 8
{0x7F, KEY_EN_LEFT_CONTROL},//124
{0x80, KEY_EN_LEFT_FUNCTION},//125
{0x96, KEY_EN_LEFT_WINDOWS},//126
{0x97, KEY_EN_LEFT_ALT},//127
{0x98, KEY_EN_SPACE},//128
{0x99, KEY_EN_SPACE},//129
{0x9A, KEY_EN_RIGHT_ALT},//130
{0x9B, KEY_EN_RIGHT_CONTROL},//131
{0x9C, KEY_EN_LEFT_ARROW},//132
{0x9D, KEY_EN_UP_ARROW},//133
{0x9E, "Key: Brightness +"},//134
{0x9F, KEY_EN_DOWN_ARROW},//135
{0xA0, "Key: Brightness -"},//136
{0xA1, KEY_EN_RIGHT_ARROW},//137
{0xA3, KEY_EN_NUMPAD_0},//138
{0xA4, "Key: Number Pad Insert"},//139
{0xA5, KEY_EN_NUMPAD_PERIOD},//140
{0xA6, "Key: Number Pad Delete"},//141
{0xA8, KEY_EN_NUMPAD_ENTER},//142
};
/*----------------------*\
| zone 1, keyboard Japan |
\*----------------------*/
const lenovo_led legion_Y760_jp_leds[]
{
//row 1
{0x01, KEY_EN_ESCAPE}, //0
{0x02, KEY_EN_F1}, //1
{0x03, KEY_EN_F2}, //2
{0x04, KEY_EN_F3}, //3
{0x05, KEY_EN_F4}, //4
{0x06, KEY_EN_F5}, //5
{0x07, KEY_EN_F6}, //6
{0x08, KEY_EN_F7}, //7
{0x09, KEY_EN_F8}, //8
{0x0A, KEY_EN_F9}, //9
{0x0B, KEY_EN_F10}, //10
{0x0C, KEY_EN_F11}, //11
{0x0D, KEY_EN_F12}, //12
{0x0E, KEY_EN_INSERT}, //13
{0x0F, KEY_EN_PRINT_SCREEN}, //14
{0x10, KEY_EN_DELETE}, //15
{0x11, KEY_EN_HOME}, //16
{0x12, KEY_EN_END}, //17
{0x13, KEY_EN_PAGE_UP}, //18
{0x14, KEY_EN_PAGE_DOWN}, //19
//row 2
{0x16, KEY_JP_ZENKAKU}, //20
{0x17, "Key: !"}, //21
{0x18, "Key: \""}, //22
{0x19, KEY_EN_POUND}, //23
{0x1A, "Key: $"}, //24
{0x1B, "Key: %"}, //25
{0x1C, "Key: &"}, //26
{0x1D, "Key: '"}, //27
{0x1E, "Key: ("}, //28
{0x1F, "Key: )"}, //29
{0x20, "Key: wo"}, //30
{0x21, KEY_EN_EQUALS}, //31
{0x22, "Key: ~"}, //32
{0x23, "Key: |"}, //33
{0x26, KEY_EN_NUMPAD_LOCK}, //34
{0x27, KEY_EN_NUMPAD_DIVIDE}, //35
{0x28, KEY_EN_NUMPAD_TIMES}, //36
{0x29, KEY_EN_NUMPAD_MINUS}, //37
//row 3
{0x2B, "Key: kanji"}, //38
{0x2C, KEY_EN_1}, //39
{0x2D, KEY_EN_2}, //40
{0x2E, KEY_EN_3}, //41
{0x2F, KEY_EN_4}, //42
{0x30, KEY_EN_5}, //43
{0x31, KEY_EN_6}, //44
{0x32, KEY_EN_7}, //45
{0x33, KEY_EN_8}, //46
{0x34, KEY_EN_9}, //47
{0x35, KEY_EN_0}, //48
{0x36, KEY_EN_MINUS}, //49
{0x37, KEY_JP_CHEVRON}, //50
{0x38, KEY_JP_YEN}, //51
{0x25, KEY_EN_BACKSPACE}, //52
{0x3A, KEY_EN_BACKSPACE}, //53
{0x3B, KEY_EN_NUMPAD_LOCK}, //54
//row 4
{0x40, KEY_EN_TAB}, //55
{0x42, KEY_EN_Q}, //56
{0x43, KEY_EN_W}, //57
{0x44, KEY_EN_E}, //58
{0x45, KEY_EN_R}, //59
{0x46, KEY_EN_T}, //60
{0x47, KEY_EN_Y}, //61
{0x48, KEY_EN_U}, //62
{0x49, KEY_EN_I}, //63
{0x4A, KEY_EN_O}, //64
{0x4B, KEY_EN_P}, //65
{0x4C, KEY_EN_BACK_TICK}, //66
{0x61, KEY_JP_AT}, //67
{0x4D, "Key: {"}, //68
{0x62, KEY_EN_LEFT_BRACKET}, //69
{0x4E, KEY_EN_ISO_ENTER}, //70
{0x4F, KEY_EN_NUMPAD_7}, //71
{0x50, KEY_EN_NUMPAD_8}, //72
{0x51, KEY_EN_NUMPAD_9}, //73
{0x67, KEY_EN_NUMPAD_PLUS}, //74
//row 5
{0x55, KEY_EN_CAPS_LOCK}, //75
{0x56, KEY_EN_CAPS_LOCK}, //76
{0x57, KEY_EN_CAPS_LOCK}, //77
{0x6D, KEY_EN_A}, //78
{0x6E, KEY_EN_S}, //79
{0x58, KEY_EN_D}, //80
{0x59, KEY_EN_F}, //81
{0x5A, KEY_EN_G}, //82
{0x71, KEY_EN_H}, //83
{0x72, KEY_EN_J}, //84
{0x5B, KEY_EN_K}, //85
{0x5C, KEY_EN_L}, //86
{0x5D, "Key: +"}, //87
{0x5E, KEY_EN_SEMICOLON}, //88
{0x5F, "Key: *"}, //89
{0x60, KEY_JP_COLON}, //90
{0x77, "Key: }"}, //91
{0x78, KEY_EN_RIGHT_BRACKET}, //92
{0x63, KEY_EN_ISO_ENTER}, //93
{0x64, "Key: Number Pad Home"}, //94
{0x65, "Key: Number Pad Up Arrow"}, //95
{0x66, "Key: Number Pad Page Up"}, //96
{0x68, KEY_EN_NUMPAD_PLUS}, //97
//row 6
{0x6A, KEY_EN_LEFT_SHIFT}, //98
{0x6B, KEY_EN_LEFT_SHIFT}, //99
{0x82, KEY_EN_Z}, //100
{0x83, KEY_EN_X}, //101
{0x6F, KEY_EN_C}, //102
{0x70, KEY_EN_V}, //103
{0x87, KEY_EN_B}, //104
{0x88, KEY_EN_N}, //105
{0x73, KEY_EN_M}, //106
{0x74, "Key: <"}, //107
{0x89, KEY_EN_COMMA}, //108
{0x75, "Key: >"}, //109
{0x8A, KEY_EN_PERIOD}, //110
{0x76, "Key: ?"}, //111
{0x8B, KEY_EN_FORWARD_SLASH}, //112
{0x8C, KEY_JP_RO}, //113
{0x8D, KEY_EN_RIGHT_SHIFT}, //114
{0xA2, KEY_EN_RIGHT_SHIFT}, //115
{0x79, KEY_EN_NUMPAD_4}, //116
{0x7A, "Key: Number Pad Right Arrow"}, //117
{0x7B, KEY_EN_NUMPAD_5}, //118
{0x7C, KEY_EN_NUMPAD_6}, //119
{0x7D, "Key: Number Pad Left Arrow"}, //120
//row 7
{0x8E, KEY_EN_NUMPAD_1}, //121
{0x8F, "Key: Number Pad End"}, //122
{0x90, KEY_EN_NUMPAD_2}, //123
{0x91, "Key: Number Pad Down Arrow"}, //124
{0x92, KEY_EN_NUMPAD_3}, //125
{0x93, "Key: Number Pad Page Down"}, //126
{0xA7, KEY_EN_NUMPAD_ENTER}, //127
//row 8
{0x7F, KEY_EN_LEFT_CONTROL}, //128
{0x80, KEY_EN_LEFT_FUNCTION}, //129
{0x96, KEY_EN_LEFT_WINDOWS}, //130
{0x97, KEY_EN_LEFT_ALT}, //131
{0x98, KEY_JP_MUHENKAN}, //132
{0x85, KEY_EN_SPACE}, //133
{0x86, KEY_EN_SPACE}, //134
{0x99, KEY_JP_HENKAN}, //135
{0x9A, KEY_JP_KANA}, //136
{0x9B, KEY_EN_RIGHT_CONTROL}, //137
{0x9C, KEY_EN_LEFT_ARROW}, //138
{0x9D, KEY_EN_UP_ARROW}, //139
{0x9E, "Key: Brightness +"}, //140
{0x9F, KEY_EN_DOWN_ARROW}, //141
{0xA0, "Key: Brightness -"}, //142
{0xA1, KEY_EN_RIGHT_ARROW}, //143
{0xA3, KEY_EN_NUMPAD_0}, //144
{0xA4, "Key: Number Pad Insert"}, //145
{0xA5, KEY_EN_NUMPAD_PERIOD}, //146
{0xA6, "Key: Number Pad Delete"}, //147
{0xA8, KEY_EN_NUMPAD_ENTER}, //148
};
/*----------------*\
| zone 2, logo |
\*----------------*/
const lenovo_led legion_Y760_logo[]
{
{0x01, "Logo Bottom Left"},//0
{0x02, "Logo LED 2"},
{0x03, "Logo LED 3"},
{0x04, "Logo LED 4"},
{0x05, "Logo LED Top Left"},
{0x06, "Logo LED 6"},
{0x07, "Logo LED 7"},
{0x08, "Logo LED 8"},
{0x09, "Logo LED Top Right"},
{0x0A, "Logo LED 10"},
{0x0B, "Logo LED 11"},
{0x0C, "Logo LED 12"},
{0x0D, "Logo Bottom Right"},//12
};
/*----------------*\
| zone 3, vents |
\*----------------*/
const lenovo_led legion_Y760_vents[]
{
//left
{0x01, "Left Vent Front"},//0
{0x02, "Left Vent LED 2"},
{0x03, "Left Vent LED 3"},
{0x04, "Left Vent LED 4"},
{0x05, "Left Vent LED 5"},
{0x06, "Left Vent LED 6"},
{0x07, "Left Vent LED 7"},
{0x08, "Left Vent LED 8"},
{0x09, "Left Vent LED 9"},
{0x0A, "Left Vent LED 10"},
{0x0B, "Left Vent LED 11"},
{0x0C, "Left Vent LED 12"},
{0x0D, "Left Vent LED 13"},
{0x0E, "Left Vent LED 14"},
{0x0F, "Left Vent LED 15"},
{0x10, "Left Vent LED 16"},
{0x11, "Left Vent LED 17"},
{0x12, "Left Vent LED 18"},
{0x13, "Left Vent LED 19"},
{0x14, "Left Vent LED 20"},
{0x15, "Left Vent LED 21"},
{0x16, "Left Vent LED 22"},
{0x17, "Left Vent LED 23"},
{0x18, "Left Vent LED 24"},
{0x19, "Left Vent LED 25"},
{0x1A, "Left Vent LED 26"},
{0x1B, "Left Vent Back"},//26
//right
{0x1C, "Right Vent Front"},//27
{0x1D, "Right Vent LED 2"},
{0x1E, "Right Vent LED 3"},
{0x1F, "Right Vent LED 4"},
{0x20, "Right Vent LED 5"},
{0x21, "Right Vent LED 6"},
{0x22, "Right Vent LED 7"},
{0x23, "Right Vent LED 8"},
{0x24, "Right Vent LED 9"},
{0x25, "Right Vent LED 10"},
{0x26, "Right Vent LED 11"},
{0x27, "Right Vent LED 12"},
{0x28, "Right Vent LED 13"},
{0x29, "Right Vent LED 14"},
{0x2A, "Right Vent LED 15"},
{0x2B, "Right Vent LED 16"},
{0x2C, "Right Vent LED 17"},
{0x2D, "Right Vent LED 18"},
{0x2E, "Right Vent LED 19"},
{0x2F, "Right Vent LED 20"},
{0x30, "Right Vent LED 21"},
{0x31, "Right Vent LED 22"},
{0x32, "Right Vent LED 23"},
{0x33, "Right Vent LED 24"},
{0x34, "Right Vent LED 25"},
{0x35, "Right Vent LED 26"},
{0x36, "Right Vent Back"},//53
//back right vent
{0x37, "Back Right Vent Left"},//54
{0x38, "Back Right Vent 2"},
{0x39, "Back Right Vent 3"},
{0x3A, "Back Right Vent 4"},
{0x3B, "Back Right Vent 5"},
{0x3C, "Back Right Vent 6"},
{0x3D, "Back Right Vent 7"},
{0x3E, "Back Right Vent 8"},
{0x3F, "Back Right Vent 10"},
{0x40, "Back Right Vent 11"},
{0x41, "Back Right Vent 12"},
{0x42, "Back Right Vent 13"},
{0x43, "Back Right Vent 14"},
{0x44, "Back Right Vent 15"},
{0x45, "Back Right Vent 16"},
{0x46, "Back Right Vent 17"},
{0x47, "Back Right Vent 18"},
{0x48, "Back Right Vent 19"},
{0x49, "Back Right Vent 20"},
{0x4A, "Back Right Vent 21"},
{0x4B, "Back Right Vent 22"},
{0x4C, "Back Right Vent 23"},
{0x4D, "Back Right Vent 24"},
{0x4E, "Back Right Vent 25"},
{0x4F, "Back Right Vent 26"},
{0x50, "Back Right Vent Right"},//79
//back left vent
{0x51, "Back Left Vent Right"},//80
{0x52, "Back Left Vent 2"},
{0x53, "Back Left Vent 3"},
{0x54, "Back Left Vent 4"},
{0x55, "Back Left Vent 5"},
{0x56, "Back Left Vent 6"},
{0x57, "Back Left Vent 7"},
{0x58, "Back Left Vent 8"},
{0x59, "Back Left Vent 10"},
{0x5A, "Back Left Vent 11"},
{0x5B, "Back Left Vent 12"},
{0x5C, "Back Left Vent 13"},
{0x5D, "Back Left Vent 14"},
{0x5E, "Back Left Vent 15"},
{0x5F, "Back Left Vent 16"},
{0x60, "Back Left Vent 17"},
{0x61, "Back Left Vent 18"},
{0x62, "Back Left Vent 19"},
{0x63, "Back Left Vent 20"},
{0x64, "Back Left Vent 21"},
{0x65, "Back Left Vent 22"},
{0x66, "Back Left Vent 23"},
{0x67, "Back Left Vent 24"},
{0x68, "Back Left Vent 25"},
{0x69, "Back Left Vent 26"},
{0x6A, "Back Left Vent Left"},//105
};
/*-----------------*\
| zone 4, neon |
\*-----------------*/
const lenovo_led legion_Y760_neon[]
{
//left side
{0x01, "Neon LED 1 Top Left"},//0
{0x02, "Neon LED 2"},
{0x03, "Neon LED 3"},
{0x04, "Neon LED 4"},
{0x05, "Neon LED 5"},
{0x06, "Neon LED 6"},
{0x07, "Neon LED 7"},
{0x08, "Neon LED 8"},
{0x09, "Neon LED 9"},
{0x0A, "Neon LED 10"},
{0x0B, "Neon LED 11"},
{0x0C, "Neon LED 12"},
{0x0D, "Neon LED 13"},
{0x0E, "Neon LED 14"},
{0x0F, "Neon LED 15"},
{0x10, "Neon LED 16"},
{0x11, "Neon LED 17"},
{0x12, "Neon LED 18"},
{0x13, "Neon LED 19"},
{0x14, "Neon LED 20"},
{0x15, "Neon LED 21 Left Corner"},//20
//front
{0x16, "Neon LED 22 Left Corner"},//21
{0x17, "Neon LED 23"},
{0x18, "Neon LED 24"},
{0x19, "Neon LED 25"},
{0x1A, "Neon LED 26"},
{0x1B, "Neon LED 27"},
{0x1C, "Neon LED 28"},
{0x1D, "Neon LED 29"},
{0x1E, "Neon LED 30"},
{0x1F, "Neon LED 31"},
{0x20, "Neon LED 32"},
{0x21, "Neon LED 33"},
{0x22, "Neon LED 34"},
{0x23, "Neon LED 35"},
{0x24, "Neon LED 36"},
{0x25, "Neon LED 37"},
{0x26, "Neon LED 38"},
{0x27, "Neon LED 39"},
{0x28, "Neon LED 40"},
{0x29, "Neon LED 41"},
{0x2A, "Neon LED 42"},
{0x2B, "Neon LED 43"},
{0x2C, "Neon LED 44"},
{0x2D, "Neon LED 45"},
{0x2E, "Neon LED 46"},
{0x2F, "Neon LED 47"},
{0x30, "Neon LED 48"},
{0x31, "Neon LED 49"},
{0x32, "Neon LED 50"},
{0x33, "Neon LED 51"},
{0x34, "Neon LED 52"},
{0x35, "Neon LED 53"},
{0x36, "Neon LED 54"},
{0x37, "Neon LED 55"},
{0x38, "Neon LED 56"},
{0x39, "Neon LED 57"},
{0x3A, "Neon LED 58"},
{0x3B, "Neon LED 59"},
{0x3C, "Neon LED 60"},
{0x3D, "Neon LED 61"},
{0x3E, "Neon LED 62"},
{0x3F, "Neon LED 63"},
{0x40, "Neon LED 64"},
{0x41, "Neon LED 65"},
{0x42, "Neon LED 66"},
{0x43, "Neon LED 67"},
{0x44, "Neon LED 68"},
{0x45, "Neon LED 69"},
{0x46, "Neon LED 70"},
{0x47, "Neon LED 71"},
{0x48, "Neon LED 72"},
{0x49, "Neon LED 73"},
{0x4A, "Neon LED 74"},
{0x4B, "Neon LED 75"},
{0x4C, "Neon LED 76"},
{0x4D, "Neon LED 77"},
{0x4E, "Neon LED 78 Right Corner"},//77
//right side
{0x4F, "Neon LED 79 Right Corner"},//78
{0x50, "Neon LED 80"},
{0x51, "Neon LED 81"},
{0x52, "Neon LED 82"},
{0x53, "Neon LED 83"},
{0x54, "Neon LED 84"},
{0x55, "Neon LED 85"},
{0x56, "Neon LED 86"},
{0x57, "Neon LED 87"},
{0x58, "Neon LED 88"},
{0x59, "Neon LED 89"},
{0x5A, "Neon LED 90"},
{0x5B, "Neon LED 91"},
{0x5C, "Neon LED 92"},
{0x5D, "Neon LED 93"},
{0x5E, "Neon LED 94"},
{0x5F, "Neon LED 95"},
{0x60, "Neon LED 96"},
{0x61, "Neon LED 97"},
{0x62, "Neon LED 98"},
{0x63, "Neon LED 99 Top Right"},//98
};
/*--------------------------------------------------------*\
| Additional LEDs for Legion Y750, Y750S and Y760S |
\*--------------------------------------------------------*/
const lenovo_led legion_legion_Y750_additional_leds[]
{
{0xAA, "Logo"},
{0xAD, "Vents"},
{0xAC, "Neon"}
};
/*--------------------------------------------------------*\
| LEDs for Legion Y740 17" |
\*--------------------------------------------------------*/
const lenovo_led legion_Y740_17_ansi_leds[]
{
//Row 1
{0x6E, KEY_EN_ESCAPE}, //0
{0x70, KEY_EN_F1}, //1
{0x71, KEY_EN_F2}, //2
{0x72, KEY_EN_F3}, //3
{0x73, KEY_EN_F4}, //4
{0x74, KEY_EN_F5}, //5
{0x75, KEY_EN_F6}, //6
{0x76, KEY_EN_F7}, //7
{0x77, KEY_EN_F8}, //8
{0x78, KEY_EN_F9}, //9
{0x79, KEY_EN_F10}, //10
{0x7A, KEY_EN_F11}, //11
{0x7B, KEY_EN_F12}, //12
{0x7D, KEY_EN_DELETE}, //13
{0x5B, KEY_EN_NUMPAD_7}, //14
{0x60, KEY_EN_NUMPAD_8}, //15
{0x65, KEY_EN_NUMPAD_9}, //16
{0x5F, KEY_EN_NUMPAD_DIVIDE}, //17
//Row 2
{0x01, KEY_EN_BACK_TICK}, //18
{0x02, KEY_EN_1}, //19
{0x03, KEY_EN_2}, //20
{0x04, KEY_EN_3}, //21
{0x05, KEY_EN_4}, //22
{0x06, KEY_EN_5}, //23
{0x07, KEY_EN_6}, //24
{0x08, KEY_EN_7}, //25
{0x09, KEY_EN_8}, //26
{0x0A, KEY_EN_9}, //27
{0x0B, KEY_EN_0}, //28
{0x0C, KEY_EN_MINUS}, //29
{0x0D, KEY_EN_EQUALS}, //30
{0x0F, KEY_EN_BACKSPACE}, //31 left led
{0x8C, KEY_EN_BACKSPACE}, //32 right led
{0x5C, KEY_EN_NUMPAD_4}, //33
{0x61, KEY_EN_NUMPAD_5}, //34
{0x66, KEY_EN_NUMPAD_6}, //35
{0x64, KEY_EN_NUMPAD_TIMES}, //36
//Row 3
{0x10, KEY_EN_TAB}, //37
{0x11, KEY_EN_Q}, //38
{0x12, KEY_EN_W}, //39
{0x13, KEY_EN_E}, //40
{0x14, KEY_EN_R}, //41
{0x15, KEY_EN_T}, //42
{0x16, KEY_EN_Y}, //43
{0x17, KEY_EN_U}, //44
{0x18, KEY_EN_I}, //45
{0x19, KEY_EN_O}, //46
{0x1A, KEY_EN_P}, //47
{0x1B, KEY_EN_LEFT_BRACKET}, //48
{0x1C, KEY_EN_RIGHT_BRACKET}, //49
{0x1D, KEY_EN_ANSI_BACK_SLASH}, //50
{0x5D, KEY_EN_NUMPAD_1}, //51
{0x62, KEY_EN_NUMPAD_2}, //52
{0x67, KEY_EN_NUMPAD_3}, //53
{0x69, KEY_EN_NUMPAD_MINUS}, //54
//Row 4
{0x1E, KEY_EN_CAPS_LOCK}, //55 left led
{0x8D, KEY_EN_CAPS_LOCK}, //56 right led
{0x1F, KEY_EN_A}, //57
{0x20, KEY_EN_S}, //58
{0x21, KEY_EN_D}, //59
{0x22, KEY_EN_F}, //60
{0x23, KEY_EN_G}, //61
{0x24, KEY_EN_H}, //62
{0x25, KEY_EN_J}, //63
{0x26, KEY_EN_K}, //64
{0x27, KEY_EN_L}, //65
{0x28, KEY_EN_SEMICOLON}, //66
{0x29, KEY_EN_QUOTE}, //67
{0x2B, KEY_EN_ANSI_ENTER}, //68 left led
{0x8F, KEY_EN_ANSI_ENTER}, //69 right led
{0x5A, KEY_EN_NUMPAD_LOCK}, //70 top led
{0x63, KEY_EN_NUMPAD_0}, //71
{0x68, KEY_EN_NUMPAD_PERIOD}, //72
{0x6A, KEY_EN_NUMPAD_PLUS}, //73
//Row 5
{0x2C, KEY_EN_LEFT_SHIFT}, //74
{0x8E, KEY_EN_LEFT_SHIFT}, //75
{0x2E, KEY_EN_Z}, //76
{0x2F, KEY_EN_X}, //77
{0x30, KEY_EN_C}, //78
{0x31, KEY_EN_V}, //79
{0x32, KEY_EN_B}, //80
{0x33, KEY_EN_N}, //81
{0x34, KEY_EN_M}, //82
{0x35, KEY_EN_COMMA}, //83
{0x36, KEY_EN_PERIOD}, //84
{0x37, KEY_EN_FORWARD_SLASH}, //85
{0x39, KEY_EN_RIGHT_SHIFT}, //86 left led
{0x90, KEY_EN_RIGHT_SHIFT}, //87 right led
{0x53, KEY_EN_UP_ARROW}, //88
{0x93, KEY_EN_NUMPAD_LOCK}, //89 bottom led
//Row 6
{0x3A, KEY_EN_LEFT_CONTROL}, //90
{0x3B, KEY_EN_LEFT_FUNCTION}, //91
{0x7F, KEY_EN_LEFT_WINDOWS}, //92
{0x3C, KEY_EN_LEFT_ALT}, //93
{0x3D, KEY_EN_SPACE}, //94 left led
{0x91, KEY_EN_SPACE}, //95 right led
{0x3E, KEY_EN_RIGHT_ALT}, //96
{0x40, KEY_EN_PRINT_SCREEN}, //97 left led
{0x92, KEY_EN_PRINT_SCREEN}, //98 left led
{0x86, "Record"}, //99
{0x81, KEY_EN_RIGHT_CONTROL}, //100
{0x4F, KEY_EN_LEFT_ARROW}, //101
{0x54, KEY_EN_DOWN_ARROW}, //102
{0x59, KEY_EN_RIGHT_ARROW}, //103
};
const lenovo_led legion_Y740_17_iso_leds[]
{
//Row 1
{0x6E, KEY_EN_ESCAPE}, //0
{0x70, KEY_EN_F1}, //1
{0x71, KEY_EN_F2}, //2
{0x72, KEY_EN_F3}, //3
{0x73, KEY_EN_F4}, //4
{0x74, KEY_EN_F5}, //5
{0x75, KEY_EN_F6}, //6
{0x76, KEY_EN_F7}, //7
{0x77, KEY_EN_F8}, //8
{0x78, KEY_EN_F9}, //9
{0x79, KEY_EN_F10}, //10
{0x7A, KEY_EN_F11}, //11
{0x7B, KEY_EN_F12}, //12
{0x7D, KEY_EN_DELETE}, //13
{0x5B, KEY_EN_NUMPAD_7}, //14
{0x60, KEY_EN_NUMPAD_8}, //15
{0x65, KEY_EN_NUMPAD_9}, //16
{0x5F, KEY_EN_NUMPAD_DIVIDE}, //17
//Row 2
{0x01, KEY_EN_BACK_TICK}, //18
{0x02, KEY_EN_1}, //19
{0x03, KEY_EN_2}, //20
{0x04, KEY_EN_3}, //21
{0x05, KEY_EN_4}, //22
{0x06, KEY_EN_5}, //23
{0x07, KEY_EN_6}, //24
{0x08, KEY_EN_7}, //25
{0x09, KEY_EN_8}, //26
{0x0A, KEY_EN_9}, //27
{0x0B, KEY_EN_0}, //28
{0x0C, KEY_EN_MINUS}, //29
{0x0D, KEY_EN_EQUALS}, //30
{0x0F, KEY_EN_BACKSPACE}, //31 left led
{0x8C, KEY_EN_BACKSPACE}, //32 right led
{0x5C, KEY_EN_NUMPAD_4}, //33
{0x61, KEY_EN_NUMPAD_5}, //34
{0x66, KEY_EN_NUMPAD_6}, //35
{0x64, KEY_EN_NUMPAD_TIMES}, //36
//Row 3
{0x10, KEY_EN_TAB}, //37
{0x11, KEY_EN_Q}, //38
{0x12, KEY_EN_W}, //39
{0x13, KEY_EN_E}, //40
{0x14, KEY_EN_R}, //41
{0x15, KEY_EN_T}, //42
{0x16, KEY_EN_Y}, //43
{0x17, KEY_EN_U}, //44
{0x18, KEY_EN_I}, //45
{0x19, KEY_EN_O}, //46
{0x1A, KEY_EN_P}, //47
{0x1B, KEY_EN_LEFT_BRACKET}, //48
{0x1C, KEY_EN_RIGHT_BRACKET}, //49
{0x94, KEY_EN_ISO_ENTER}, //50
{0x5D, KEY_EN_NUMPAD_1}, //51
{0x62, KEY_EN_NUMPAD_2}, //52
{0x67, KEY_EN_NUMPAD_3}, //53
{0x69, KEY_EN_NUMPAD_MINUS}, //54
//Row 4
{0x1E, KEY_EN_CAPS_LOCK}, //55 left led
{0x8D, KEY_EN_CAPS_LOCK}, //56 right led
{0x1F, KEY_EN_A}, //57
{0x20, KEY_EN_S}, //58
{0x21, KEY_EN_D}, //59
{0x22, KEY_EN_F}, //60
{0x23, KEY_EN_G}, //61
{0x24, KEY_EN_H}, //62
{0x25, KEY_EN_J}, //63
{0x26, KEY_EN_K}, //64
{0x27, KEY_EN_L}, //65
{0x28, KEY_EN_SEMICOLON}, //66
{0x29, KEY_EN_QUOTE}, //67
{0x2B, KEY_EN_POUND}, //68
{0x5A, KEY_EN_NUMPAD_LOCK}, //69 top led
{0x63, KEY_EN_NUMPAD_0}, //70
{0x68, KEY_EN_NUMPAD_PERIOD}, //71
{0x6A, KEY_EN_NUMPAD_PLUS}, //72
//Row 5
{0x2C, KEY_EN_LEFT_SHIFT}, //73
{0x2D, KEY_EN_ISO_BACK_SLASH}, //74
{0x2E, KEY_EN_Z}, //75
{0x2F, KEY_EN_X}, //76
{0x30, KEY_EN_C}, //77
{0x31, KEY_EN_V}, //78
{0x32, KEY_EN_B}, //79
{0x33, KEY_EN_N}, //80
{0x34, KEY_EN_M}, //81
{0x35, KEY_EN_COMMA}, //82
{0x36, KEY_EN_PERIOD}, //83
{0x37, KEY_EN_FORWARD_SLASH}, //84
{0x39, KEY_EN_RIGHT_SHIFT}, //85 left led
{0x90, KEY_EN_RIGHT_SHIFT}, //86 right led
{0x53, KEY_EN_UP_ARROW}, //87
{0x93, KEY_EN_NUMPAD_LOCK}, //88 bottom led
//Row 6
{0x3A, KEY_EN_LEFT_CONTROL}, //89
{0x3B, KEY_EN_LEFT_FUNCTION}, //90
{0x7F, KEY_EN_LEFT_WINDOWS}, //91
{0x3C, KEY_EN_LEFT_ALT}, //92
{0x3D, KEY_EN_SPACE}, //93 left led
{0x91, KEY_EN_SPACE}, //94 right led
{0x3E, KEY_EN_RIGHT_ALT}, //95
{0x40, KEY_EN_PRINT_SCREEN}, //96 left led
{0x92, KEY_EN_PRINT_SCREEN}, //97 left led
{0x86, "Record"}, //98
{0x81, KEY_EN_RIGHT_CONTROL}, //99
{0x4F, KEY_EN_LEFT_ARROW}, //100
{0x54, KEY_EN_DOWN_ARROW}, //101
{0x59, KEY_EN_RIGHT_ARROW}, //102
};
/*--------------------------------------------------------*\
| LEDs for Legion Y740 15" |
\*--------------------------------------------------------*/
const lenovo_led legion_Y740_15_ansi_leds[]
{
{0x6E, KEY_EN_ESCAPE}, //0
{0x70, KEY_EN_F1}, //1
{0x71, KEY_EN_F2}, //2
{0x72, KEY_EN_F3}, //3
{0x73, KEY_EN_F4}, //4
{0x74, KEY_EN_F5}, //5
{0x75, KEY_EN_F6}, //6
{0x76, KEY_EN_F7}, //7
{0x77, KEY_EN_F8}, //8
{0x78, KEY_EN_F9}, //9
{0x79, KEY_EN_F10}, //10
{0x7A, KEY_EN_F11}, //11
{0x7B, KEY_EN_F12}, //12
{0x4C, KEY_EN_DELETE}, //13
//Row 2
{0x01, KEY_EN_BACK_TICK}, //14
{0x02, KEY_EN_1}, //15
{0x03, KEY_EN_2}, //16
{0x04, KEY_EN_3}, //17
{0x05, KEY_EN_4}, //18
{0x06, KEY_EN_5}, //19
{0x07, KEY_EN_6}, //20
{0x08, KEY_EN_7}, //21
{0x09, KEY_EN_8}, //22
{0x0A, KEY_EN_9}, //23
{0x0B, KEY_EN_0}, //24
{0x0C, KEY_EN_MINUS}, //25
{0x0D, KEY_EN_EQUALS}, //26
{0x0F, KEY_EN_BACKSPACE}, //27
{0x8C, KEY_EN_BACKSPACE}, //28
//Row 3
{0x10, KEY_EN_TAB}, //29
{0x11, KEY_EN_Q}, //30
{0x12, KEY_EN_W}, //31
{0x13, KEY_EN_E}, //32
{0x14, KEY_EN_R}, //33
{0x15, KEY_EN_T}, //34
{0x16, KEY_EN_Y}, //35
{0x17, KEY_EN_U}, //36
{0x18, KEY_EN_I}, //37
{0x19, KEY_EN_O}, //38
{0x1A, KEY_EN_P}, //39
{0x1B, KEY_EN_LEFT_BRACKET}, //40
{0x1C, KEY_EN_RIGHT_BRACKET}, //41
{0x1D, KEY_EN_ANSI_BACK_SLASH}, //42
//Row 4
{0x1E, KEY_EN_CAPS_LOCK}, //43
{0x8D, KEY_EN_CAPS_LOCK}, //44
{0x1F, KEY_EN_A}, //45
{0x20, KEY_EN_S}, //46
{0x21, KEY_EN_D}, //47
{0x22, KEY_EN_F}, //48
{0x23, KEY_EN_G}, //49
{0x24, KEY_EN_H}, //50
{0x25, KEY_EN_J}, //51
{0x26, KEY_EN_K}, //52
{0x27, KEY_EN_L}, //53
{0x28, KEY_EN_SEMICOLON}, //54
{0x29, KEY_EN_QUOTE}, //55
{0x2B, KEY_EN_ANSI_ENTER}, //56
{0x8F, KEY_EN_ANSI_ENTER}, //57
//Row 5
{0x2C, KEY_EN_LEFT_SHIFT}, //58
{0x8E, KEY_EN_LEFT_SHIFT}, //59
{0x2E, KEY_EN_Z}, //60
{0x2F, KEY_EN_X}, //61
{0x30, KEY_EN_C}, //62
{0x31, KEY_EN_V}, //63
{0x32, KEY_EN_B}, //64
{0x33, KEY_EN_N}, //65
{0x34, KEY_EN_M}, //66
{0x35, KEY_EN_COMMA}, //67
{0x36, KEY_EN_PERIOD}, //68
{0x37, KEY_EN_FORWARD_SLASH}, //69
{0x39, KEY_EN_RIGHT_SHIFT}, //70
{0x90, KEY_EN_RIGHT_SHIFT}, //71
//Row 6
{0x3A, KEY_EN_LEFT_CONTROL}, //72
{0x3B, KEY_EN_LEFT_FUNCTION}, //73
{0x7F, KEY_EN_LEFT_WINDOWS}, //74
{0x3C, KEY_EN_LEFT_ALT}, //75
{0x3D, KEY_EN_SPACE}, //76
{0x91, KEY_EN_SPACE}, //77
{0x3E, KEY_EN_RIGHT_ALT}, //78
{0x40, KEY_EN_RIGHT_CONTROL}, //79
{0x53, KEY_EN_UP_ARROW}, //80
//Row 7
{0x4F, KEY_EN_LEFT_ARROW}, //81
{0x54, KEY_EN_DOWN_ARROW}, //82
{0x59, KEY_EN_RIGHT_ARROW}, //83
//Left Column
{0xC1, "Key: Vantage"}, //84
{0xC2, "Key: Capture"}, //85
{0xC3, "Key: M1"}, //86
{0xC4, "Key: M2"}, //87
{0xC5, "Key: Kb Brightness Up"}, //88
{0xC6, "Key: Kb Brightness Down"}, //89
};
const lenovo_led legion_Y740_15_iso_leds[]
{
{0x6E, KEY_EN_ESCAPE}, //0
{0x70, KEY_EN_F1}, //1
{0x71, KEY_EN_F2}, //2
{0x72, KEY_EN_F3}, //3
{0x73, KEY_EN_F4}, //4
{0x74, KEY_EN_F5}, //5
{0x75, KEY_EN_F6}, //6
{0x76, KEY_EN_F7}, //7
{0x77, KEY_EN_F8}, //8
{0x78, KEY_EN_F9}, //9
{0x79, KEY_EN_F10}, //10
{0x7A, KEY_EN_F11}, //11
{0x7B, KEY_EN_F12}, //12
{0x7D, KEY_EN_DELETE}, //13
//Row 2
{0x01, KEY_EN_BACK_TICK}, //14
{0x02, KEY_EN_1}, //15
{0x03, KEY_EN_2}, //16
{0x04, KEY_EN_3}, //17
{0x05, KEY_EN_4}, //18
{0x06, KEY_EN_5}, //19
{0x07, KEY_EN_6}, //20
{0x08, KEY_EN_7}, //21
{0x09, KEY_EN_8}, //22
{0x0A, KEY_EN_9}, //23
{0x0B, KEY_EN_0}, //24
{0x0C, KEY_EN_MINUS}, //25
{0x0D, KEY_EN_EQUALS}, //26
{0x0F, KEY_EN_BACKSPACE}, //27
{0x8C, KEY_EN_BACKSPACE}, //28
//Row 3
{0x10, KEY_EN_TAB}, //29
{0x11, KEY_EN_Q}, //30
{0x12, KEY_EN_W}, //31
{0x13, KEY_EN_E}, //32
{0x14, KEY_EN_R}, //33
{0x15, KEY_EN_T}, //34
{0x16, KEY_EN_Y}, //35
{0x17, KEY_EN_U}, //36
{0x18, KEY_EN_I}, //37
{0x19, KEY_EN_O}, //38
{0x1A, KEY_EN_P}, //39
{0x1B, KEY_EN_LEFT_BRACKET}, //40
{0x1C, KEY_EN_RIGHT_BRACKET}, //41
{0x94, KEY_EN_ISO_ENTER}, //42
//Row 4
{0x1E, KEY_EN_CAPS_LOCK}, //43
{0x8D, KEY_EN_CAPS_LOCK}, //44
{0x1F, KEY_EN_A}, //45
{0x20, KEY_EN_S}, //46
{0x21, KEY_EN_D}, //47
{0x22, KEY_EN_F}, //48
{0x23, KEY_EN_G}, //49
{0x24, KEY_EN_H}, //50
{0x25, KEY_EN_J}, //51
{0x26, KEY_EN_K}, //52
{0x27, KEY_EN_L}, //53
{0x28, KEY_EN_SEMICOLON}, //54
{0x29, KEY_EN_QUOTE}, //55
{0x2B, KEY_EN_POUND}, //56
//Row 5
{0x2C, KEY_EN_LEFT_SHIFT}, //57
{0x2D, KEY_EN_ISO_BACK_SLASH}, //58
{0x2E, KEY_EN_Z}, //59
{0x2F, KEY_EN_X}, //60
{0x30, KEY_EN_C}, //61
{0x31, KEY_EN_V}, //62
{0x32, KEY_EN_B}, //63
{0x33, KEY_EN_N}, //64
{0x34, KEY_EN_M}, //65
{0x35, KEY_EN_COMMA}, //66
{0x36, KEY_EN_PERIOD}, //67
{0x37, KEY_EN_FORWARD_SLASH}, //68
{0x39, KEY_EN_RIGHT_SHIFT}, //69
{0x90, KEY_EN_RIGHT_SHIFT}, //70
//Row 6
{0x3A, KEY_EN_LEFT_CONTROL}, //71
{0x3B, KEY_EN_LEFT_FUNCTION}, //72
{0x7F, KEY_EN_LEFT_WINDOWS}, //73
{0x3C, KEY_EN_LEFT_ALT}, //74
{0x3D, KEY_EN_SPACE}, //75
{0x91, KEY_EN_SPACE}, //76
{0x3E, KEY_EN_RIGHT_ALT}, //77
{0x40, KEY_EN_RIGHT_CONTROL}, //78
{0x53, KEY_EN_UP_ARROW}, //79
//Row 7
{0x4F, KEY_EN_LEFT_ARROW}, //80
{0x54, KEY_EN_DOWN_ARROW}, //81
{0x59, KEY_EN_RIGHT_ARROW}, //82
//Left Column
{0xC1, "Key: Vantage"}, //83
{0xC2, "Key: Capture"}, //84
{0xC3, "Key: M1"}, //85
{0xC4, "Key: M2"}, //86
{0xC5, "Key: Kb Brightness Up"}, //87
{0xC6, "Key: Kb Brightness Down"}, //88
};
/*--------------------------------------------------------*\
| Additional LEDs for Legion Y740 |
\*--------------------------------------------------------*/
const lenovo_led legion_legion_Y740_additional_leds[]
{
{0x97, "Power button"}, //104
{0x99, "Vents"}, //105
{0x98, "USB ports"}, //106
{0x96, "Legion Y Logo"} //107
};
/*--------------------------------------------------------*\
| Legion 7 gen 6: 7 zones |
| |
|Note: the device has 4 zones in the protocol however, the |
|vent lights have been split into 4 zones to improve ease |
|of use |
\*--------------------------------------------------------*/
/*------*\
|keyboard|
\*------*/
static lenovo_zone lenovo_legion_Y760_kbd_ansi
{
"Keyboard",
ZONE_TYPE_MATRIX,
1,
13,
21,
legion_Y760_ansi_leds_map,
legion_Y760_ansi_leds,
0,
144,
};
static lenovo_zone lenovo_legion_Y760_kbd_iso
{
"Keyboard",
ZONE_TYPE_MATRIX,
1,
13,
21,
legion_Y760_iso_leds_map,
legion_Y760_iso_leds,
0,
142,
};
static lenovo_zone lenovo_legion_Y760_kbd_jp
{
"Keyboard",
ZONE_TYPE_MATRIX,
1,
13,
21,
legion_Y760_jp_leds_map,
legion_Y760_jp_leds,
0,
148,
};
/*------*\
|logo |
\*------*/
static lenovo_zone lenovo_legion_Y760_logo
{
"Logo",
ZONE_TYPE_LINEAR,
2,
1,
13,
NULL,
legion_Y760_logo,
0,
12,
};
/*------*\
|vents |
\*------*/
static lenovo_zone lenovo_legion_Y760_vent_left
{
"Left vent",
ZONE_TYPE_LINEAR,
3,
1,
26,
NULL,
legion_Y760_vents,
0,
26,
};
static lenovo_zone lenovo_legion_Y760_vent_right
{
"Right vent",
ZONE_TYPE_LINEAR,
3,
1,
26,
NULL,
legion_Y760_vents,
27,
53,
};
static lenovo_zone lenovo_legion_Y760_vent_back_right
{
"Back Right vent",
ZONE_TYPE_LINEAR,
3,
1,
25,
NULL,
legion_Y760_vents,
54,
79,
};
static lenovo_zone lenovo_legion_Y760_vent_back_left
{
"Back Left vent",
ZONE_TYPE_LINEAR,
3,
1,
25,
NULL,
legion_Y760_vents,
80,
105,
};
/*------*\
|neon |
\*------*/
static lenovo_zone lenovo_legion_Y760_neon
{
"Neon",
ZONE_TYPE_LINEAR,
4,
1,
99,
NULL,
legion_Y760_neon,
0,
98,
};
/*--------------------------------------------------------*\
| Legion Y750, Y750S and Y760S: 4 zones |
\*--------------------------------------------------------*/
/*----------------------------------*\
|keyboard |
| |
| Note: keyboard is shared with Y760 |
\*----------------------------------*/
/*------*\
|logo |
\*------*/
static lenovo_zone lenovo_legion_Y750_logo
{
"Logo",
ZONE_TYPE_SINGLE,
1,
1,
1,
NULL,
legion_legion_Y750_additional_leds,
0,
0,
};
/*------*\
|vents |
\*------*/
static lenovo_zone lenovo_legion_Y750_vents
{
"Vents",
ZONE_TYPE_SINGLE,
1,
1,
1,
NULL,
legion_legion_Y750_additional_leds,
1,
1,
};
/*------*\
|neon |
\*------*/
static lenovo_zone lenovo_legion_Y750_neon
{
"Neon",
ZONE_TYPE_SINGLE,
1,
1,
1,
NULL,
legion_legion_Y750_additional_leds,
2,
2,
};
/*--------------------------------------------------------*\
| Legion Y740 17": 5 zones |
\*--------------------------------------------------------*/
/*------*\
|keyboard|
\*------*/
static lenovo_zone lenovo_legion_Y740_17_kbd_ansi
{
"Keyboard",
ZONE_TYPE_MATRIX,
1,
6,
19,
legion_Y740_17_ansi_leds_map,
legion_Y740_17_ansi_leds,
0,
103,
};
static lenovo_zone lenovo_legion_Y740_17_kbd_iso
{
"Keyboard",
ZONE_TYPE_MATRIX,
1,
6,
19,
legion_Y740_17_iso_leds_map,
legion_Y740_17_iso_leds,
0,
102,
};
/*------*\
|logo |
\*------*/
static lenovo_zone lenovo_legion_Y740_logo
{
"Logo",
ZONE_TYPE_SINGLE,
1,
1,
1,
NULL,
legion_legion_Y740_additional_leds,
3,
3,
};
/*-----------*\
|Power button |
\*-----------*/
static lenovo_zone lenovo_legion_Y740_pwrbtn
{
"Power Button",
ZONE_TYPE_SINGLE,
1,
1,
1,
NULL,
legion_legion_Y740_additional_leds,
0,
0,
};
/*------*\
|vents |
\*------*/
static lenovo_zone lenovo_legion_Y740_vents
{
"Vents",
ZONE_TYPE_SINGLE,
1,
1,
1,
NULL,
legion_legion_Y740_additional_leds,
1,
1,
};
/*--------*\
|USB Ports |
\*--------*/
static lenovo_zone lenovo_legion_Y740_ports
{
"USB Ports",
ZONE_TYPE_SINGLE,
1,
1,
1,
NULL,
legion_legion_Y740_additional_leds,
2,
2,
};
/*--------------------------------------------------------*\
| Legion Y740 15": 5 zones |
\*--------------------------------------------------------*/
/*------*\
|keyboard|
\*------*/
static lenovo_zone lenovo_legion_Y740_15_kbd_ansi
{
"Keyboard",
ZONE_TYPE_MATRIX,
1,
7,
16,
legion_Y740_15_ansi_leds_map,
legion_Y740_15_ansi_leds,
0,
89,
};
static lenovo_zone lenovo_legion_Y740_15_kbd_iso
{
"Keyboard",
ZONE_TYPE_MATRIX,
1,
7,
16,
legion_Y740_15_iso_leds_map,
legion_Y740_15_iso_leds,
0,
88,
};
/*--------------------------------------------------------*\
| Legion 7 gen7: 4 zones |
\*--------------------------------------------------------*/
static const unsigned int legion7_gen7and8_ansi_leds_map[] =
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, NA, 30, 31, 32, 33, NA, 34, 35, 36, 37,
38, 39, 40, 41, NA, 42, 43, 44, 45, 46, 47, 48, 49, 50, NA, 51, 52, 53, 54, NA,
55, 56, NA, 57, 58, 59, 60, 61, 62, 63, 64, 65, NA, 66, 67, NA, 68, 69, 70, 71,
72, NA, 73, 74, 75, NA, 76, 77, 78, 79, 80, 81, 82, NA, 83, NA, 84, 85, 86, NA,
87, 88, 89, 90, 91, NA, NA, NA, NA, NA, 92, 93, NA, 94, NA, NA, 95, NA, 96, 97,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 98, 99, NA, 100, NA, NA, NA, NA};
/*---------------------*\
| zone 1, keyboard ANSI |
\*---------------------*/
const lenovo_led legion7_gen7and8_ansi_leds[]
{
//row 1
{0x01, KEY_EN_ESCAPE},//0
{0x02, KEY_EN_F1},//1
{0x03, KEY_EN_F2},//2
{0x04, KEY_EN_F3},//3
{0x05, KEY_EN_F4},//4
{0x06, KEY_EN_F5},//5
{0x07, KEY_EN_F6},//6
{0x08, KEY_EN_F7},//7
{0x09, KEY_EN_F8},//8
{0x0A, KEY_EN_F9},//9
{0x0B, KEY_EN_F10},//10
{0x0C, KEY_EN_F11},//11
{0x0D, KEY_EN_F12},//12
{0x0E, KEY_EN_INSERT},//13
{0x0F, KEY_EN_PRINT_SCREEN},//14
{0x10, KEY_EN_DELETE},//15
{0x11, KEY_EN_HOME},//16
{0x12, KEY_EN_END},//17
{0x13, KEY_EN_PAGE_UP},//18
{0x14, KEY_EN_PAGE_DOWN},//19
//row 2
{0x16, KEY_EN_BACK_TICK},//20
{0x17, KEY_EN_1},//21
{0x18, KEY_EN_2},//22
{0x19, KEY_EN_3},//23
{0x1A, KEY_EN_4},//24
{0x1B, KEY_EN_5},//25
{0x1C, KEY_EN_6},//26
{0x1D, KEY_EN_7},//27
{0x1E, KEY_EN_8},//28
{0x1F, KEY_EN_9},//29
{0x20, KEY_EN_0},//30
{0x21, KEY_EN_MINUS},//31
{0x22, KEY_EN_EQUALS},//32
{0x38, KEY_EN_BACKSPACE},//33
{0x26, KEY_EN_NUMPAD_LOCK},//34
{0x27, KEY_EN_NUMPAD_DIVIDE},//35
{0x28, KEY_EN_NUMPAD_TIMES},//36
{0x29, KEY_EN_NUMPAD_MINUS},//37
//row 3
{0x40, KEY_EN_TAB},//38
{0x42, KEY_EN_Q},//39
{0x43, KEY_EN_W},//40
{0x44, KEY_EN_E},//41
{0x45, KEY_EN_R},//42
{0x46, KEY_EN_T},//43
{0x47, KEY_EN_Y},//44
{0x48, KEY_EN_U},//45
{0x49, KEY_EN_I},//46
{0x4A, KEY_EN_O},//47
{0x4B, KEY_EN_P},//48
{0x4C, KEY_EN_LEFT_BRACKET},//49
{0x4D, KEY_EN_RIGHT_BRACKET},//50
{0x4E, KEY_EN_ANSI_BACK_SLASH},//51
{0x4F, KEY_EN_NUMPAD_7},//52
{0x50, KEY_EN_NUMPAD_8},//53
{0x51, KEY_EN_NUMPAD_9},//54
//row 4
{0x55, KEY_EN_CAPS_LOCK},//55
{0x6D, KEY_EN_A},//56
{0x6E, KEY_EN_S},//57
{0x58, KEY_EN_D},//58
{0x59, KEY_EN_F},//59
{0x5A, KEY_EN_G},//60
{0x71, KEY_EN_H},//61
{0x72, KEY_EN_J},//62
{0x5B, KEY_EN_K},//63
{0x5C, KEY_EN_L},//64
{0x5D, KEY_EN_SEMICOLON},//65
{0x5F, KEY_EN_QUOTE},//66
{0x77, KEY_EN_ANSI_ENTER},//67
{0x79, KEY_EN_NUMPAD_4},//68
{0x7B, KEY_EN_NUMPAD_5},//69
{0x7C, KEY_EN_NUMPAD_6},//70
{0x68, KEY_EN_NUMPAD_PLUS},//71
//row 5
{0x6A, KEY_EN_LEFT_SHIFT},//72
{0x82, KEY_EN_Z},//73
{0x83, KEY_EN_X},//74
{0x6F, KEY_EN_C},//75
{0x70, KEY_EN_V},//76
{0x87, KEY_EN_B},//77
{0x88, KEY_EN_N},//78
{0x73, KEY_EN_M},//79
{0x74, KEY_EN_COMMA},//80
{0x75, KEY_EN_PERIOD},//81
{0x76, KEY_EN_FORWARD_SLASH},//82
{0x8D, KEY_EN_RIGHT_SHIFT},//83
{0x8E, KEY_EN_NUMPAD_1},//84
{0x90, KEY_EN_NUMPAD_2},//85
{0x92, KEY_EN_NUMPAD_3},//86
//row 6
{0x7F, KEY_EN_LEFT_CONTROL},//87
{0x80, KEY_EN_LEFT_FUNCTION},//88
{0x96, KEY_EN_LEFT_WINDOWS},//89
{0x97, KEY_EN_LEFT_ALT},//90
{0x98, KEY_EN_SPACE},//91
{0x9A, KEY_EN_RIGHT_ALT},//92
{0x9B, KEY_EN_RIGHT_CONTROL},//93
{0x9D, KEY_EN_UP_ARROW},//94
{0xA3, KEY_EN_NUMPAD_0},//95
{0xA5, KEY_EN_NUMPAD_PERIOD},//96
{0xA7, KEY_EN_NUMPAD_ENTER},//97
//row 7
{0x9C, KEY_EN_LEFT_ARROW},//98
{0x9F, KEY_EN_DOWN_ARROW},//99
{0xA1, KEY_EN_RIGHT_ARROW},//100
};
const lenovo_led legion7_gen7and8_neon_leds[]
{
{0xF5, "Neon group 1"},//0
{0xF6, "Neon group 2"},//1
{0xF7, "Neon group 3"},//2
{0xF8, "Neon group 4"},//3
{0xF9, "Neon group 5"},//4
{0xFA, "Neon group 6"},//5
{0xFB, "Neon group 7"},//6
{0xFC, "Neon group 8"},//7
{0xFD, "Neon group 9"},//8
{0xFE, "Neon group 10"},//9
};
const lenovo_led legion_7gen7_vents_leds[]
{
{0xE9, "Vent group 1"},//0
{0xEA, "Vent group 2"},//1
{0xEB, "Vent group 3"},//2
{0xEC, "Vent group 4"},//3
{0xED, "Vent group 5"},//4
{0xEE, "Vent group 6"},//5
{0xEF, "Vent group 7"},//6
{0xF0, "Vent group 8"},//7
};
const lenovo_led legion_7gen10_vents_leds[]
{
{0xE9, "Vent group 1"},//0
{0xEA, "Vent group 2"},//1
{0xEB, "Vent group 3"},//2
{0xEC, "Vent group 4"},//3
{0xED, "Vent group 5"},//4
{0xEE, "Vent group 6"},//5
{0xEF, "Vent group 7"},//6
{0xF0, "Vent group 8"},//7
{0xF1, "Vent group 9"},//8
{0xF2, "Vent group 10"},//9
{0xF3, "Vent group 11"},//10
{0xF4, "Vent group 12"},//11
{0xF5, "Vent group 13"},//12
{0xF6, "Vent group 14"},//13
{0xF7, "Vent group 15"},//14
{0xF8, "Vent group 16"},//15
{0xF9, "Vent group 17"},//16
{0xFA, "Vent group 18"},//17
};
const lenovo_led legion_7gen7_logo_leds[]
{
{0xDD, "Logo"},//0
};
/*------*\
|keyboard|
\*------*/
static lenovo_zone legion7_gen7and8_kbd_ansi
{
"Keyboard",
ZONE_TYPE_MATRIX,
0,
7,
20,
legion7_gen7and8_ansi_leds_map,
legion7_gen7and8_ansi_leds,
0,
100,
};
/*------*\
|logo |
\*------*/
static lenovo_zone lenovo_legion_7gen7_logo
{
"Logo",
ZONE_TYPE_LINEAR,
5,
1,
1,
NULL,
legion_7gen7_logo_leds,
0,
0,
};
/*------*\
|vents |
\*------*/
static lenovo_zone lenovo_legion_7gen7_vents
{
"Vents",
ZONE_TYPE_LINEAR,
3,
1,
8,
NULL,
legion_7gen7_vents_leds,
0,
7,
};
static lenovo_zone lenovo_legion_7gen10_vents
{
"Vents",
ZONE_TYPE_LINEAR,
3,
1,
18,
NULL,
legion_7gen10_vents_leds,
0,
17,
};
/*------*\
|neon |
\*------*/
static lenovo_zone legion7_gen7and8_neon
{
"Neon",
ZONE_TYPE_LINEAR,
1,
1,
10,
NULL,
legion7_gen7and8_neon_leds,
0,
9,
};