//***************************************************************************** // // Copyright (c) 2012 - 2019, Hefei LCFC Information Technology Co.Ltd. // And/or its affiliates. All rights reserved. // Hefei LCFC Information Technology Co.Ltd. PROPRIETARY/CONFIDENTIAL. // Use is subject to license terms. // //****************************************************************************** /*++ Abstract: LCFC Super Key feature common asl code definition. History: Date Name Version Change Notes 2019.05.14 Heisenberg Li V0.20 Initial Release. 2019.08.27 Ru.Xu V0.37 Support LSK 2.0. 2019.09.24 Ru.Xu V0.40 Lenovo Utility 3.1 Feature Specification 2020.05.19 Ru.Xu V0.70 Lenovo Utility 3.2 Feature Specification 2020.06.11 Ru.Xu V0.90 Lenovo Utility 3.2 Feature Specification Module Name: SuperKeyWmi.asl Note: You must take care about the prompt string "LCFCTODO:" and customize your project. --*/ //PressTypeDataVal Output parameter #define NO_KEY_PRESSED 0 #define CHG_SUPER_KEY 1 #define CHG_FNLK_ON 2 #define CHG_FNLK_OFF 3 #define CHG_SNAP_TOOL 4 #define CHG_VOIP_ANSWER 5 #define CHG_VOIP_END 6 #define CHG_SERVICE_KEY 7 #define CHG_SUPER_KEY_MAKE 8 #define CHG_VOICE_KEY 9 #define CHG_VOICE_KEY_MAKE 10 #define CHG_VOICE_KEY_BREAK 11 #define CHG_CAMERA_SWITCH_ON 12 //only for S950 project #define CHG_CAMERA_SWITCH_OFF 13 //only for S950 project #define CHG_VOIP_ANSWER_2 14 #define CHG_VOIP_END_2 15 #define CHG_PANEL_REFESHRATE 16 //only for S750-Pro project //GetIfSupportOrVersion Input parameter #define GET_SUPER_KEY_VER 1 #define GET_VOIP_VER 2 #define GET_FNLK_VER 3 #define GET_SNAP_TOOL_VER 4 #define GET_SERVICE_KEY_VER 5 #define GET_VOICE_KEY_VER 6 #define GET_CAMERA_BTN_VER 7 //GetIfSupportOrVersion Output parameter #define VER_NOT_SUPPORT 0 //not support #define VER_1 1 #define VER_2 2 #define VER_3 3 External (LSKD) //LSK BIOS PNP ID device,Launch PCM & Vantage by superkey 2.0 APP by Hardware device ID Device (HKDV) { Name(_HID, "LHK2019") Name(_UID, 0) Method(_STA, 0, NOTSerialized) { return (0x0F) } } Device(WMIU) { Name(_HID, "PNP0C14") // PNP0C14 is Plug and Play ID assigned to WMI mapper Name(_UID, "LSK20") // LSK (Lenovo Super Key2.0) //_WDG evaluates to a data structure that specifies the data blocks supported by the ACPI device. Name(_WDG, Buffer () { // Method Guids (ce6c0974-0407-4f50-88ba-4fc3b6559ad8) 0x74, 0x09, 0x6C, 0xCE, 0x07, 0x04, 0x50, 0x4F, 0x88, 0xBA, 0x4F, 0xC3, 0xB6, 0x55, 0x9A, 0xD8, 83, 75, // Object Id (SK) 1, // Instance Count 0x02, // Flags (WMIACPI_REGFLAG_METHOD) // Event Guids (8fc0de0c-b4e4-43fd-b0f3-8871711c1294) 0x0C, 0xDE, 0xC0, 0x8F, 0xE4, 0xB4, 0xFD, 0x43, 0xB0, 0xF3, 0x88, 0x71, 0x71, 0x1C, 0x12, 0x94, 0xd0, 0, // NotificationValue (0xd0) 1, // Instance Count 0x08, // Flags (WMIACPI_REGFLAG_EVENT) // The GUID for returning the MOF data, DO NOT CHANGE!!!!! 0x21, 0x12, 0x90, 0x05, 0x66, 0xD5, 0xD1, 0x11, 0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10, 68, 65, // Object Id (DA) DA should same as WQDA 1, // Instance Count 0x00, // Flags }) Method (WMSK, 3, NotSerialized) { // MethodId 1 - GetIfSupportOrVersion // LCFCTODO: If the the PC product is not support the function . SUPER_KEY. VOIP_KEY , FNLK_KEY_ON, SNAP_TOOL_KEY make sure return VER_NOT_SUPPORT If (LEqual(Arg1, 1)) { If(LEqual(ToInteger(Arg2), GET_SUPER_KEY_VER)) { Return (VER_2) // Super key version is 2.0 } ElseIf(LEqual(ToInteger(Arg2), GET_VOIP_VER)) { //LCFCTODO:if EC handle the answer/decline VoIP call with Skype for business,need return ver1, //if Utility full controlles Skype for business and Teams answer/decline functions,need return ver2. Return (VER_NOT_SUPPORT) // VOIP version is not support } ElseIf(LEqual(ToInteger(Arg2), GET_FNLK_VER)) { Return (VER_1) // FNLK version is 1.0 } ElseIf(LEqual(ToInteger(Arg2), GET_SNAP_TOOL_VER)) { Return (VER_1) // SNAP TOOL version is 1.0 } ElseIf(LEqual(ToInteger(Arg2), GET_SERVICE_KEY_VER)) { Return (VER_NOT_SUPPORT) // Service key version is not support } ElseIf(LEqual(ToInteger(Arg2), GET_VOICE_KEY_VER)) { Return (VER_NOT_SUPPORT) // Voice key version is not support } ElseIf(LEqual(ToInteger(Arg2), GET_CAMERA_BTN_VER)) { Return (VER_NOT_SUPPORT) // Camera button key version is not support , only for S950 project } Else { Return (VER_NOT_SUPPORT) } } } Method(_WED, 1) //LENOVO_UTILITY_EVENT PressTypeDataVal { If(LEqual(Arg0, 0xd0)) { //LSKD Value: 00:no key ,01:Super key ,02:VOIP answer ,03:VOIP end ,04:FNLK ,05:Snap tool. If(LEqual(LSKD, 1)) //Super key pressed { Return(CHG_SUPER_KEY) } ElseIf(LEqual(LSKD, 2)) //VOIP answer pressed { Return(CHG_VOIP_ANSWER) } ElseIf(LEqual(LSKD, 3)) //VOIP end pressed { Return(CHG_VOIP_END) } ElseIf(LEqual(LSKD, 4)) //FNLK pressed { //LCFCTODO:if your project support FNLK, please implement this and double check "HKDB" status with EC Owner. If(LEqual(\_SB.PCI0.LPCB.EC0.HKDB,1)) //FNLK Status { Return (CHG_FNLK_ON) // FNLK On } Else { Return (CHG_FNLK_OFF) // FNLK Off } } ElseIf(LEqual(LSKD, 5)) //Snap tool pressed { Return(CHG_SNAP_TOOL) } ElseIf(LEqual(LSKD, 6)) //Service key pressed { Return(CHG_SERVICE_KEY) } ElseIf(LEqual(LSKD, 7)) //Super key make { Return(CHG_SUPER_KEY_MAKE) } ElseIf(LEqual(LSKD, 8)) //Voice key pressed { Return(CHG_VOICE_KEY) } ElseIf(LEqual(LSKD, 9)) //Voice key make { Return(CHG_VOICE_KEY_MAKE) } ElseIf(LEqual(LSKD, 10)) //Voice key break { Return(CHG_VOICE_KEY_BREAK) } ElseIf(LEqual(LSKD, 11)) //Camera button on , only for S950 project { Return(CHG_CAMERA_SWITCH_ON) } ElseIf(LEqual(LSKD, 12)) //Camera button off , only for S950 project { Return(CHG_CAMERA_SWITCH_OFF) } ElseIf(LEqual(LSKD, 13)) //VOIP answer key(Utility solution) { Return(CHG_VOIP_ANSWER_2) } ElseIf(LEqual(LSKD, 14)) //VOIP end key(Utility solution) { Return(CHG_VOIP_END_2) } ElseIf(LEqual(LSKD, 15)) //Intenal panel screen refresh rate , only for S750-Pro project { Return(CHG_PANEL_REFESHRATE) } Else //No key pressed { Return(NO_KEY_PRESSED) } } } Name (WQDA, Buffer () { 0x46, 0x4f, 0x4d, 0x42, 0x01, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x5e, 0x0c, 0x00, 0x00, 0x44, 0x53, 0x00, 0x01, 0x1a, 0x7d, 0xda, 0x54, 0xa8, 0x40, 0x86, 0x00, 0x01, 0x06, 0x18, 0x42, 0x10, 0x05, 0x10, 0x8a, 0x28, 0x81, 0x42, 0x04, 0x8a, 0x40, 0xa4, 0x50, 0x30, 0x28, 0x0d, 0x20, 0x92, 0x03, 0x21, 0x17, 0x4c, 0x4c, 0x80, 0x08, 0x08, 0x79, 0x15, 0x60, 0x53, 0x80, 0x49, 0x10, 0xf5, 0xef, 0x0f, 0x51, 0x12, 0x1c, 0x4a, 0x08, 0x84, 0x24, 0x0a, 0x30, 0x2f, 0x40, 0xb7, 0x00, 0xc3, 0x02, 0x6c, 0x0b, 0x30, 0x2d, 0xc0, 0x31, 0x24, 0x95, 0x06, 0x4e, 0x09, 0x2c, 0x05, 0x42, 0x42, 0x05, 0x28, 0x17, 0xe0, 0x5b, 0x80, 0x76, 0x44, 0x49, 0x16, 0x60, 0x19, 0x46, 0x04, 0x1e, 0x45, 0x64, 0xa3, 0x71, 0x68, 0xec, 0x30, 0x2c, 0x13, 0x4c, 0x83, 0x38, 0x8c, 0xb2, 0x91, 0x45, 0xe0, 0x09, 0x75, 0x2a, 0x40, 0xae, 0x00, 0x61, 0x02, 0xc4, 0xa3, 0x0a, 0xa3, 0x39, 0x28, 0x22, 0x1a, 0x1a, 0x25, 0x66, 0x4c, 0x04, 0xb6, 0x73, 0x6c, 0x8d, 0xe2, 0x34, 0x0a, 0x17, 0x20, 0x1d, 0x43, 0x23, 0x38, 0xae, 0x63, 0x30, 0x58, 0x90, 0x43, 0x31, 0x44, 0x41, 0x02, 0xac, 0xa2, 0x91, 0x61, 0x84, 0x08, 0x72, 0x7c, 0x81, 0xba, 0xc4, 0x13, 0x88, 0xc7, 0xe4, 0x01, 0x18, 0x21, 0x4c, 0x8b, 0xb0, 0x82, 0x36, 0x62, 0x02, 0xc3, 0x1e, 0x0a, 0xe6, 0x07, 0x20, 0x01, 0x9e, 0x05, 0x58, 0x1f, 0x23, 0x21, 0xb0, 0x7b, 0x01, 0xe2, 0x04, 0x68, 0x1e, 0x8d, 0x46, 0x75, 0x9c, 0xc6, 0x88, 0xd2, 0x96, 0x00, 0xc5, 0x23, 0x13, 0x4c, 0x88, 0x28, 0x21, 0x3a, 0xc3, 0x13, 0x5a, 0x28, 0xc3, 0x45, 0x89, 0x13, 0x25, 0x70, 0x84, 0xde, 0x04, 0x18, 0x83, 0x20, 0x08, 0x81, 0x43, 0x54, 0x36, 0x48, 0xa1, 0xb6, 0x3f, 0x08, 0x22, 0xc9, 0xc1, 0x89, 0x80, 0x45, 0x1a, 0x0d, 0xea, 0x14, 0x90, 0xe0, 0xa9, 0xc0, 0x27, 0x82, 0x93, 0x3a, 0xaf, 0xa3, 0x3a, 0xeb, 0x20, 0xc1, 0x4f, 0xa4, 0xce, 0xe3, 0x00, 0x19, 0x38, 0x9b, 0x9a, 0xd9, 0x75, 0x3e, 0x80, 0xe0, 0x1a, 0x50, 0xff, 0xff, 0x79, 0x3e, 0x16, 0xb0, 0x61, 0x86, 0xc3, 0x0c, 0xd1, 0x83, 0xf5, 0x04, 0x0e, 0x91, 0x01, 0x7a, 0x62, 0x4f, 0x04, 0x58, 0x87, 0x93, 0xd1, 0x71, 0xa0, 0x54, 0x01, 0x66, 0xc7, 0xad, 0x49, 0x27, 0x38, 0x1e, 0x9f, 0x03, 0x3c, 0x9f, 0x13, 0x4e, 0x60, 0xf9, 0x83, 0x40, 0x8d, 0xcc, 0xd0, 0x36, 0x38, 0x2d, 0x1d, 0x04, 0x7c, 0x00, 0x30, 0x81, 0xc5, 0x1e, 0x26, 0xe8, 0x78, 0xc0, 0x7f, 0x00, 0x78, 0x3e, 0x88, 0xf0, 0xce, 0xe0, 0xf9, 0x7a, 0x10, 0x3a, 0x5b, 0xc8, 0xc9, 0x78, 0x50, 0xc7, 0x0a, 0x5f, 0x10, 0x30, 0xe0, 0x47, 0xfb, 0xc2, 0x10, 0xe6, 0xa5, 0x21, 0xee, 0xc1, 0x5b, 0xeb, 0x15, 0x82, 0x10, 0x38, 0x34, 0x84, 0xfe, 0x1a, 0x16, 0x35, 0x78, 0x7a, 0xb2, 0xe0, 0x87, 0x0a, 0x06, 0xcc, 0xc7, 0x73, 0x5a, 0x3e, 0x7b, 0x78, 0x78, 0xf0, 0x4f, 0x14, 0xc0, 0xe2, 0x3c, 0x81, 0xbb, 0x1c, 0xb0, 0x13, 0x05, 0x7e, 0xe0, 0xf0, 0x2f, 0x15, 0x86, 0xf5, 0x45, 0xe2, 0x1d, 0x22, 0x81, 0xb1, 0x02, 0x63, 0xfe, 0xff, 0xc0, 0x1e, 0xb9, 0xfd, 0x0a, 0x40, 0x08, 0x7e, 0x4a, 0x4f, 0x06, 0xcf, 0x20, 0x11, 0x8e, 0xca, 0xe8, 0x4f, 0x10, 0x7d, 0xce, 0x5b, 0x10, 0xd1, 0x8e, 0xea, 0x1c, 0x8e, 0x22, 0x54, 0x88, 0xb3, 0x30, 0x50, 0xb8, 0x60, 0x01, 0x8d, 0x93, 0xc0, 0x22, 0x87, 0x8a, 0x1e, 0x04, 0x07, 0x3c, 0x87, 0x43, 0x0a, 0x7a, 0x10, 0x27, 0x13, 0xe5, 0x3c, 0x8e, 0xc9, 0xa7, 0x14, 0x23, 0x1c, 0xd3, 0xc3, 0xc9, 0x53, 0x87, 0x6f, 0x1b, 0x07, 0x7f, 0x5e, 0xc7, 0x7a, 0x88, 0x6c, 0xe0, 0x87, 0x80, 0x39, 0x5b, 0x78, 0x08, 0x7c, 0x00, 0x07, 0x74, 0x8a, 0x56, 0x3a, 0x31, 0xe4, 0x79, 0x86, 0x8f, 0x19, 0x3b, 0x00, 0xae, 0xca, 0x03, 0x08, 0x13, 0xff, 0x34, 0x90, 0xb4, 0x37, 0x02, 0x85, 0xf1, 0x09, 0x07, 0x70, 0x05, 0xf4, 0x00, 0x01, 0x9e, 0xb3, 0x01, 0x5c, 0xec, 0x93, 0x8f, 0x12, 0xe2, 0xed, 0x21, 0xfa, 0xb9, 0x9c, 0xcc, 0x2b, 0x84, 0x8f, 0x37, 0x98, 0xff, 0xff, 0xf1, 0x06, 0xd6, 0x05, 0xc6, 0xda, 0xae, 0x37, 0x64, 0x4a, 0xcf, 0x34, 0xef, 0x36, 0x46, 0x39, 0x2c, 0xc3, 0x3c, 0xde, 0xf8, 0x76, 0xd0, 0x1a, 0x8c, 0xee, 0x36, 0xec, 0x3c, 0x72, 0x12, 0xa1, 0x18, 0xee, 0x83, 0x44, 0x9c, 0xd8, 0xe1, 0x22, 0xc4, 0x7e, 0xe4, 0x30, 0xde, 0xe3, 0x0d, 0x8b, 0x77, 0x1c, 0xd0, 0x31, 0xc4, 0xc7, 0x1b, 0x80, 0x1f, 0xa7, 0x83, 0xc7, 0x12, 0xf0, 0x9f, 0x15, 0xf8, 0xa9, 0x04, 0x4c, 0xff, 0xff, 0x53, 0x09, 0xfc, 0xc4, 0x0f, 0x02, 0x9d, 0x75, 0x9c, 0x16, 0x44, 0x36, 0x16, 0x6b, 0x02, 0xc9, 0x82, 0x50, 0xce, 0x05, 0xcb, 0x23, 0xae, 0x30, 0x8f, 0x27, 0xf2, 0x39, 0x44, 0x7e, 0xa9, 0x88, 0x70, 0x06, 0xc7, 0x10, 0xe9, 0xb4, 0x62, 0x1c, 0xd8, 0x2b, 0x87, 0xef, 0x01, 0x4f, 0x16, 0x3c, 0x11, 0xb0, 0x0e, 0x72, 0x3c, 0x0b, 0x85, 0x94, 0xd1, 0x68, 0x54, 0x1e, 0x84, 0xb5, 0xc0, 0x08, 0xce, 0x20, 0x06, 0x74, 0x50, 0x08, 0x1d, 0x90, 0x70, 0x4a, 0x40, 0x34, 0xad, 0xf7, 0x21, 0x76, 0xea, 0xf1, 0xfd, 0xc8, 0x04, 0x53, 0xdd, 0x8d, 0xe8, 0x3c, 0x7d, 0x23, 0xe0, 0xf7, 0x14, 0x9f, 0x11, 0x0c, 0x6e, 0x85, 0xf7, 0x0f, 0xd0, 0x8c, 0x38, 0x88, 0x6f, 0x0c, 0x3e, 0x13, 0x78, 0xa3, 0x27, 0x82, 0x51, 0x73, 0x64, 0x42, 0x4d, 0xc3, 0x53, 0x7d, 0xb1, 0x31, 0x81, 0x75, 0x5d, 0x86, 0x40, 0xa6, 0xef, 0x98, 0x00, 0x0a, 0x20, 0x5f, 0x0a, 0x7c, 0xd2, 0x79, 0x30, 0x60, 0x63, 0x78, 0xd8, 0x31, 0x9a, 0xd1, 0xb9, 0xe0, 0xc9, 0xa3, 0x24, 0x4e, 0x9e, 0x82, 0x78, 0xf2, 0x8e, 0x3f, 0x79, 0xf4, 0x9d, 0xc2, 0x87, 0x2b, 0x4e, 0xe0, 0xb8, 0x63, 0xa7, 0x57, 0x10, 0xfc, 0x64, 0xff, 0xff, 0xa7, 0xf6, 0xa8, 0xe0, 0x59, 0xf8, 0xd2, 0x82, 0x1b, 0x3c, 0xdc, 0x5b, 0xc6, 0x91, 0x87, 0x79, 0xa7, 0xf2, 0xe9, 0xca, 0x60, 0x41, 0xc2, 0xbc, 0x2f, 0xe0, 0x80, 0xde, 0xee, 0x5e, 0x1c, 0x0e, 0x37, 0xc4, 0xf9, 0x1e, 0x7a, 0x04, 0x1f, 0x3f, 0x7c, 0x66, 0xc0, 0x0d, 0x89, 0x5d, 0x03, 0xf8, 0x68, 0x7c, 0x0d, 0xe0, 0xa3, 0xf4, 0x1d, 0x0b, 0x7c, 0x02, 0xef, 0x01, 0x20, 0x87, 0xc7, 0x84, 0x1f, 0x15, 0xbd, 0x67, 0x78, 0x5c, 0x7c, 0xc8, 0xbe, 0x22, 0x31, 0xec, 0x67, 0x0d, 0x5f, 0xd2, 0x4e, 0xf0, 0x95, 0xe2, 0x85, 0x0d, 0x03, 0xeb, 0x43, 0x00, 0x87, 0x35, 0x5a, 0xd8, 0x43, 0x7e, 0x49, 0xf1, 0x09, 0xc7, 0x33, 0x33, 0x46, 0x58, 0x1f, 0x04, 0x1c, 0xe6, 0x20, 0x00, 0x9a, 0x03, 0x1b, 0xfe, 0x06, 0xe0, 0x4b, 0x40, 0x90, 0x37, 0x91, 0xd3, 0x7d, 0xf2, 0x31, 0x2a, 0xbf, 0x11, 0xf0, 0xf3, 0x08, 0x16, 0x28, 0x88, 0x6f, 0x18, 0x1e, 0xdb, 0x81, 0xc4, 0x86, 0x73, 0x2d, 0xc1, 0xfe, 0xff, 0x09, 0x2a, 0xb4, 0xe9, 0x53, 0xa3, 0x51, 0xab, 0x06, 0x65, 0x6a, 0x94, 0x69, 0x50, 0xab, 0x4f, 0xa5, 0xc6, 0x8c, 0x99, 0xb8, 0xf0, 0xf9, 0x15, 0xa1, 0x11, 0x3b, 0x12, 0x08, 0x8d, 0x48, 0x21, 0x10, 0x07, 0xfe, 0x71, 0x08, 0xc4, 0x72, 0xef, 0x61, 0xba, 0x16, 0x11, 0x5a, 0x19, 0x01, 0x91, 0x36, 0x10, 0x01, 0x59, 0xbb, 0x0a, 0x20, 0x96, 0x04, 0x44, 0x40, 0xfe, 0xff, 0x03 }) }