Jump to content

Control Volume with Keyboard?


Hackintosher1
 Share

7 posts in this topic

Recommended Posts

Hi

 

I made this topic to get help on controlling volume with the internal keyboard. The slider at top right on menu bar works and audio works with patched  AppleHDA. But seems like somethings missing.. I think I need to assign the keys to volume up/volume down. The closest I can get is by enabling accessibility settings to enable on-screen control - still not able to adjust with keyboard.

 

These controls appear:

https://www.dropbox.com/s/bis3qa2ro1goyfd/Skjermbilde%202014-07-15%20kl.%2001.11.08.png?m=

 

The kext Im using for keyboard is Rehabman's VoodooPS2Controller.kext

Link to comment
Share on other sites

Hi

 

I made this topic to get help on controlling volume with the internal keyboard. The slider at top right on menu bar works and audio works with patched  AppleHDA. But seems like somethings missing.. I think I need to assign the keys to volume up/volume down. The closest I can get is by enabling accessibility settings to enable on-screen control - still not able to adjust with keyboard.

 

These controls appear:

https://www.dropbox.com/s/bis3qa2ro1goyfd/Skjermbilde%202014-07-15%20kl.%2001.11.08.png?m=

 

The kext Im using for keyboard is Rehabman's VoodooPS2Controller.kext

Okay, so I found this guide which explains how one can assign keys to different actions (bottom of page):

https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller/wiki/How-to-Use-Custom-Keyboard-Mapping

 

In my case I need to assign:

F10 to Mute

F11 to Volume Down

F12 to Volume Up

 

Stil I need to know the ADB code of these actions, any ideas?

Link to comment
Share on other sites

Assuming you are using the latest Voodoo from Rehab's you would need to patch you DSDT in order to pass proper scan codes to the PS/2 driver and not WMI codes that don't work on OSX unless you install special driver.. Open your DSDT and find EC queries (_QXX) that notify ATKD or AMW0 or other WMI device with the codes, mine are the following 3:

                        Method (_Q16, 0, NotSerialized) // Mute
                        {
                            ATKN (0x13)
                            \AMW0.AMWN (0x32)
                        }

                        Method (_Q17, 0, NotSerialized) // Vol Down
                        {
                            ATKN (0x14)
                            \AMW0.AMWN (0x31)
                        }

                        Method (_Q19, 0, NotSerialized) // Vol Up
                        {
                            ATKN (0x15)
                            \AMW0.AMWN (0x30)
                        }

Edit the contents of the queries to be like this:

                        Method (_Q16, 0, NotSerialized)
                        {
                            Notify (PS2K, 0x0220)
                            Notify (PS2K, 0x02A0)
                        }

                        Method (_Q17, 0, NotSerialized)
                        {
                            Notify (PS2K, 0x022E)
                            Notify (PS2K, 0x02AE)
                        }

                        Method (_Q19, 0, NotSerialized)
                        {
                            Notify (PS2K, 0x0230)
                            Notify (PS2K, 0x02B0)
                        }

Link to comment
Share on other sites

 

Assuming you are using the latest Voodoo from Rehab's you would need to patch you DSDT in order to pass proper scan codes to the PS/2 driver and not WMI codes that don't work on OSX unless you install special driver.. Open your DSDT and find EC queries (_QXX) that notify ATKD or AMW0 or other WMI device with the codes, mine are the following 3:

                        Method (_Q16, 0, NotSerialized) // Mute
                        {
                            ATKN (0x13)
                            \AMW0.AMWN (0x32)
                        }

                        Method (_Q17, 0, NotSerialized) // Vol Down
                        {
                            ATKN (0x14)
                            \AMW0.AMWN (0x31)
                        }

                        Method (_Q19, 0, NotSerialized) // Vol Up
                        {
                            ATKN (0x15)
                            \AMW0.AMWN (0x30)
                        }

Edit the contents of the queries to be like this:

                        Method (_Q16, 0, NotSerialized)
                        {
                            Notify (PS2K, 0x0220)
                            Notify (PS2K, 0x02A0)
                        }

                        Method (_Q17, 0, NotSerialized)
                        {
                            Notify (PS2K, 0x022E)
                            Notify (PS2K, 0x02AE)
                        }

                        Method (_Q19, 0, NotSerialized)
                        {
                            Notify (PS2K, 0x0230)
                            Notify (PS2K, 0x02B0)
                        }

Im not sure where that part is, because I can't find it in my DSDT. Thanks

(Accidently, I clicked solved button. I didn't mean to.)

Link to comment
Share on other sites

You won't find an exact match of this, you need to look for \AMW0.AMWN (xxx) codes that match the ones I showed and edit respective EC Query numbers with the edited queriy contents that I have posted.

So you have to find a _Qxx method (xx being a random number) that passed codes 0x32 0x31 and 0x30 to \AMW0.AMWN  or some other device (it can be \ATKD. or \WMI0. or some other device).

Link to comment
Share on other sites

 Share

×
×
  • Create New...