Jump to content

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


6 posts 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
  • 4 years later...

Hi @daemon17 I had stopped messing with this and started using BrightnessKeys.kext from acidanthera team.

Have a look here at my now locked repo, I had to give the laptop to my kid so re-installed Windoze... no longer maintaining it.

6 hours ago, daemon17 said:

Hi. @MacKonsti
Did you solve your problem? I have the same problem. Scan codes are not displayed. Can you tell me how to see them?

 

The issue is that ioio does no longer work in macOS Big Sur and newer. So if you want to map keys with it, you need to use macOS Catalina or older (more)

  • Like 1
×
×
  • Create New...