Jump to content

VoodooPS2Keyboard: Keys combined with Fn do not return PS2 or ADB code (F11/F12) on Lenovo for BRIGHTNESS


1 post in this topic

Recommended Posts

Hi everyone, I am trying to contact the developers of the excellent (thank you again) VoodooPS2Controller and VoodooPS2Keyboard found on acidanthera's GitHub: https://github.com/acidanthera/VoodooPS2 with my hack:

 

  • Lenovo S145-14iWL a 14" laptop with (latest) Catalina
  • Keyboard has F1-F12 keys only (no F13/F14) and is AZERTY layout
  • Clover r5119 with kexts injected via /kext/Other/ only (no /L/E/ as I have no CSR enabled)
  • Using VoodooPS2Controller and VoodooPS2Keyboard plugin, removed others as they don't support my "ELAN0629" HID.
  • MacBook15,4 SMBIOS and I admit not having tested other MacBookPro15,x
  • N.B. I do not get in System Preferences > Keyboard > Shortcuts : No reference in Brightness Control at all (not sure this is indicative?)

 

After my exchange with @MaLd0n my system runs smooth but for the life of me, I cannot enable the F11/F12 keys via Fn that would allow Brightness Control. I have been trying with Rehabman's ioio Terminal tool find out the key-codes for PS2 and ADB, mapping each F1-F12 key with Fn pressed as well:

./ioio -s ApplePS2Keyboard LogScanCodes 1

I was planning to use this guide for PS2 Keyboard mapping, as I thought that the keys sent were wrong.

 

To my surprise, F11/F12 send the normal expected codes but Fn+F11 and Fn+F12 send no codes at all. All other F1-F10 codes, match both PS2 and ADB codes as found in ApplePS2ToADBMap.h

 

Also, I have run Rehabman's ACPIDebug.kext and confirmed that the code when pressing F11/F12 passes through _Q11 and _Q12 Methods of \_SB.PCI0.LPCB.EC0 so I did add the needed Notify (in edited DSDT) but still nothing happens.

 

Tried some Notify (\_SB.PCI0.LPCB.PS2K, 0x????) values found around (like here or here) with the hope to produce some result... Nothing.

 

  • Is this a kext problem or my hardware, you think?
  • Is it related to MacBookPro15,4 that may impact this?
  • Is this some action or ACPI event that talks directly to the panel and is totally transparent/ignored by macOS ?

 

Can I get please your comment @syscl and @vit9696 as I can't find other developers' nickname, to help please? There is no specific thread URL in the GitHub README.md page of VoodooPS2 to address my issue...

 

Many thanks, I appreciate your feedback.

 

Spoiler

Here is the part of the code _Q11 and _Q12 in case you are interested:


            Method (_Q11, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                If (_OSI ("Darwin"))
                {
                    Notify (^^PS2K, 0x0405)
                }
                Else
                {
                    If (IGDS)
                    {
                        If (((^^^GFX0.CBLV & 0x7F) == One))
                        {
                            BKLT = One
                        }
                    }

                    P80B = 0x11
                    Notify (^^^GFX0.DD1F, 0x87) // Device-Specific
                    Notify (VPC0, 0x80) // Status Change
                }
            }

            Method (_Q12, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                If (_OSI ("Darwin"))
                {
                    Notify (^^PS2K, 0x0406)
                }
                Else
                {
                    If (IGDS)
                    {
                        If ((BKLT == One))
                        {
                            BKLT = Zero
                        }
                        Else
                        {
                            P80B = 0x12
                            Notify (^^^GFX0.DD1F, 0x86) // Device-Specific
                            Notify (VPC0, 0x80) // Status Change
                        }
                    }
                    Else
                    {
                        P80B = 0x12
                        Notify (^^^GFX0.DD1F, 0x86) // Device-Specific
                        Notify (VPC0, 0x80) // Status Change
                    }
                }
            }

 

 

Update: With Notify (^^PS2K, 0x0405) and Notify (^^PS2K, 0x0406) I do get eventually a code when pressing Fn+F11 and Fn+12:

F11=    default    22:52:30.780256+0200    kernel    ApplePS2Keyboard: sending key 57=67 down
F12=    default    22:52:32.356484+0200    kernel    ApplePS2Keyboard: sending key 58=6f down
Fn+F11= default    22:52:34.321340+0200    kernel    ApplePS2Keyboard: sending key e005=6b down
Fn+F12= default    22:52:36.048654+0200    kernel    ApplePS2Keyboard: sending key e006=71 down

Can you also kindly confirm that the method described here to do PS2 Keyboard Mapping via injection of a proper SSDT and proper Name (RMCF, Package() [...] without ever needing to edit/touch the VoodooPS2Keyboard's Info.plist does produce results? Is this method still valid? Is RMCF taken into consideration?

 

I see that PS2 codes e005 and e006 found in ApplePS2ToADBMap.h map to:

    BRIGHTNESS_DOWN,    // e0 05 dell down
    BRIGHTNESS_UP,      // e0 06 dell up 

But 0x6b and 0x71 as ADB codes are referenced in:

// These ADB codes are for F14/F15 (works in 10.12)
#define BRIGHTNESS_DOWN      0x6b
#define BRIGHTNESS_UP        0x71

0x6b,   // 65  = F14
0x71,   // 66  = F15
0x6b,   // 46  Scroll Lock
0x71,   // e0 4 5* Pause

How is the value in Notify (^^PS2K, 0x0405) and Notify (^^PS2K, 0x0406) derived? How is the value 0x0405 ending up as e005=6b for example? What is the definitive value for BRIGHTNESS_DOWN and BRIGHTNESS_UP?

 

Many thanks

Edited by MacKonsti
Link to comment
Share on other sites

 Share

×
×
  • Create New...