PS5 controller not working on MacOS
I recently bought a PS5 controller. I connected it to my M1 MacBook Air via Bluetooth and it works fine. I can navigate Steam in big picture mode. However, for some reason, I can't get it to work in-game. The game that I tested it on is Hollow Knight and it seems to support controllers fine as it has a section for it in the settings. So, my question is, How do I get the controller to be used instead of my keyboard and mouse in-game?

Something went wrong while displaying this content. Refresh

Error Reference: Community_9708323_
Loading CSS chunk 7561 failed.
(error: https://community.fastly.steamstatic.com/public/css/applications/community/communityawardsapp.css?contenthash=789dd1fbdb6c6b5c773d)
< 1 2 3 4 >
Showing 1-15 of 56 comments
tintingaroo May 27, 2021 @ 4:23pm 
We're trying to troubleshoot controllers + M1's + Hollow Knight over in the HK forum.
One user has PS5 controller working (wired not Bluetooth):
https://steamcommunity.com/app/367520/discussions/0/3108025660984901686/?ctp=2#c3085508296751296652
Devil May Cry May 27, 2021 @ 5:25pm 
Originally posted by UsmanError_:
I recently bought a PS5 controller. I connected it to my M1 MacBook Air via Bluetooth and it works fine. I can navigate Steam in big picture mode. However, for some reason, I can't get it to work in-game. The game that I tested it on is Hollow Knight and it seems to support controllers fine as it has a section for it in the settings. So, my question is, How do I get the controller to be used instead of my keyboard and mouse in-game?
76561198997776927 May 28, 2021 @ 2:28am 
Thank you tintingaroo. it worked for me!

Originally posted by tintingaroo:
We're trying to troubleshoot controllers + M1's + Hollow Knight over in the HK forum.
One user has PS5 controller working (wired not Bluetooth):
https://steamcommunity.com/app/367520/discussions/0/3108025660984901686/?ctp=2#c3085508296751296652
11nwm11 May 28, 2021 @ 1:07pm 
sadge
76561198997776927 May 29, 2021 @ 8:03am 
Originally posted by 11nwm11:
sadge
indeed. but it works now lol
NorrinMark Jul 2, 2021 @ 4:41pm 
Hi I'm trying to play Tomb Raider (2013) with the PS5 controller but doesn't work for me and I'm using a M1 MacBook Pro
tintingaroo Jul 4, 2021 @ 12:41pm 
Originally posted by Serch:
Hi I'm trying to play Tomb Raider (2013) with the PS5 controller but doesn't work for me and I'm using a M1 MacBook Pro

I've read on Feral's site that their port uses SDL. Looking at a file list for the game on Mac, I think you want to edit these files:

File 1
Tomb Raider.app/Contents/Resources/InputDevices/AnalogTriggers/PS4Dualshock.plist

File 2
Tomb Raider.app/Contents/Resources/InputDevices/Digital/PS4Dualshock[Digital].plist

(Another key file could possibly be this one:
Tomb Raider.app/Contents/Resources/inputdevices.json
I think that comes into play if trying to add a new controller mapping.)

I don't have the game downloaded so I don't actually know what the files look like...

To locate the files:
Right-click the game in Steam Library > Properties > Local Files > Browse...

Then right-click on Tomb Raider(.app) > Show Package Contents

Then navigate to those files.

Make a backup copy of them.

Open them with a text editor and see if they contain something like (part in bold may be different):
030000004c050000c405000000010000

If so, overwrite it with:
050000004c050000e60c000000010000

Save changes, and test the game. Test wired & Bluetooth.

If you don't see anything like that, and the 2 files are in text, paste their contents here.
PhenYeuChip Jul 5, 2021 @ 4:41am 
same :(((
Originally posted by Serch:
Hi I'm trying to play Tomb Raider (2013) with the PS5 controller but doesn't work for me and I'm using a M1 MacBook Pro
If you're using bluetooth, STOP RIGHT NOW. Bluetooth doesn't work at all.
If that doesn't work, make sure steam's built-in ps5 controller support is turned on. If it's already on, turn it off and see if it works that way. (Some games are weird like that)
Lastly if that doesn't work, try @tintingaroo 's method. He is an absolute wizard when it comes to this sort of stuff.
Originally posted by ★IAM﹏❣CHOCOLATE♥:
same :(((
refer to my reply above ^^ :)
Originally posted by ★IAM﹏❣CHOCOLATE♥:
same :(((
"Two things you could try:
(1)
Go back to version 1.4.3.2.
In Steam Library, right-click Hollow Knight > Properties > Betas > select 1.4.3.2 from the drop-down.
I don't know if you'll find your save to be compatible though & at least one user had black screen issues when going back (some have had it going up :/).

(2)
Try the file I edited.
I added
new InputDeviceMatcher
{
NamePattern = "."
}

to the profile of a DS4 controller. This results in all controllers using the DS4 mapping. I think the DS5 matches the DS4, but if not, as long as the controller results in some action, with trial-and-error we should be able to get to the correct mapping.

In Steam Library, right-click Hollow Knight > Local Files > Browse...

Right-click hollow_knight(.app) > Show Package Contents

Contents > Resources > Data > Managed

Rename Assembly-CSharp.dll to Assembly-CSharp.dll.BAK

Download and paste in the edited Assembly-CSharp.dll: {LINK REMOVED}

(Steam Input shouldn't affect things on an M1, but it's best disabled for HK in this case.)

I used a program called dnSpy, so if you have Windows (I tried a while back to get it to work on a Mac but wasn't successful) and prefer to make the edit yourself, I can show you what I did."
All credit goes to @tintingaroo. He told me all of this and it worked like a charm.
nathanlau07 Jul 4, 2022 @ 11:37am 
Attempted to follow your instructions but couldn't find the line of code you suggested changing. The code that pulls up in text edit for file Raider.app/Contents/Resources/InputDevices/Digital/PS4Dualshock is below. Any suggestions?

<?xml version="1.0" encoding="050000004c050000e60c000000010000>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CGPDeviceCategory</key>
<string>GamePad</string>
<key>CGPDisplayNameOvr</key>
<string>PS4 Digital</string>
<key>CGPDeviceType</key>
<string>PSDigital</string>
<key>VendorID</key>
<integer>1356</integer>
<key>ProductID</key>
<integer>1476</integer>
<key>LeftAxisX</key>
<string>1:48</string>
<key>LeftAxisY</key>
<string>1:49</string>
<key>LeftTrigger</key>
<string>9:7</string>
<key>RightAxisX</key>
<string>1:50</string>
<key>RightAxisY</key>
<string>1:53</string>
<key>RightTrigger</key>
<string>9:8</string>
<key>ButtonA</key>
<string>9:2</string>
<key>ButtonB</key>
<string>9:3</string>
<key>ButtonX</key>
<string>9:1</string>
<key>ButtonY</key>
<string>9:4</string>
<key>LeftShoulder</key>
<string>9:5</string>
<key>RightShoulder</key>
<string>9:6</string>
<key>LeftThumb</key>
<string>9:11</string>
<key>RightThumb</key>
<string>9:12</string>
<key>ButtonStart</key>
<string>9:10</string>
<key>ButtonBack</key>
<string>9:14</string>
<key>ButtonDevice</key>
<string>0</string>
<key>DPadUp</key>
<string>0</string>
<key>DPadDown</key>
<string>0</string>
<key>DPadLeft</key>
<string>0</string>
<key>DPadRight</key>
<string>0</string>
<key>Hatswitch</key>
<string>1:57</string>
<key>HSValueRest</key>
<integer>8</integer>
<key>HSValueUp</key>
<integer>0</integer>
<key>HSValueUpRight</key>
<integer>1</integer>
<key>HSValueRight</key>
<integer>2</integer>
<key>HSValueDownRight</key>
<integer>3</integer>
<key>HSValueDown</key>
<integer>4</integer>
<key>HSValueDownLeft</key>
<integer>5</integer>
<key>HSValueLeft</key>
<integer>6</integer>
<key>HSValueUpLeft</key>
<integer>7</integer>
<key>XAxisInitValue</key>
<integer>127</integer>
<key>YAxisInitValue</key>
<integer>127</integer>
</dict>
</plist>


Originally posted by tintingaroo:
Originally posted by Serch:
Hi I'm trying to play Tomb Raider (2013) with the PS5 controller but doesn't work for me and I'm using a M1 MacBook Pro

I've read on Feral's site that their port uses SDL. Looking at a file list for the game on Mac, I think you want to edit these files:

File 1
Tomb Raider.app/Contents/Resources/InputDevices/AnalogTriggers/PS4Dualshock.plist

File 2
Tomb Raider.app/Contents/Resources/InputDevices/Digital/PS4Dualshock[Digital].plist

(Another key file could possibly be this one:
Tomb Raider.app/Contents/Resources/inputdevices.json
I think that comes into play if trying to add a new controller mapping.)

I don't have the game downloaded so I don't actually know what the files look like...

To locate the files:
Right-click the game in Steam Library > Properties > Local Files > Browse...

Then right-click on Tomb Raider(.app) > Show Package Contents

Then navigate to those files.

Make a backup copy of them.

Open them with a text editor and see if they contain something like (part in bold may be different):
030000004c050000c405000000010000

If so, overwrite it with:
050000004c050000e60c000000010000

Save changes, and test the game. Test wired & Bluetooth.

If you don't see anything like that, and the 2 files are in text, paste their contents here.
tintingaroo Jul 4, 2022 @ 1:03pm 
Nice. :steamthumbsup:
Change Product ID from 1476 to 3302, then we see what happens...

(Product ID of a DS4 is 5C4 (or 0x05C4). Convert that hexadecimal to decimal and you get 1476.
DS5 Product ID is CE6, converted to decimal -> 3302.)

You added the encoding variable?
<?xml version="1.0" encoding="050000004c050000e60c000000010000>
If so try with that removed if there are still issues.
nathanlau07 Jul 5, 2022 @ 8:57am 
This worked! I did add the encoding variable - rookie mistake. If I can even earn the title of rookie, I was just skrewing about at that point. But I reverted it to the original state and added the product ID and it worked. Thank you!

Originally posted by tintingaroo:
Nice. :steamthumbsup:
Change Product ID from 1476 to 3302, then we see what happens...

(Product ID of a DS4 is 5C4 (or 0x05C4). Convert that hexadecimal to decimal and you get 1476.
DS5 Product ID is CE6, converted to decimal -> 3302.)

You added the encoding variable?
<?xml version="1.0" encoding="050000004c050000e60c000000010000>
If so try with that removed if there are still issues.
nathanlau07 Jul 5, 2022 @ 9:12am 
Ok, I spoke too soon. When I run the game it has a little pop up that says the controller is connected and available but then doesn't actually work when I try to use it. Anything I may have missed? This is what I have now...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CGPDeviceCategory</key>
<string>GamePad</string>
<key>CGPDisplayNameOvr</key>
<string>PS4 Digital</string>
<key>CGPDeviceType</key>
<string>PSDigital</string>
<key>VendorID</key>
<integer>1356</integer>
<key>ProductID</key>
<integer>3302</integer>
<key>LeftAxisX</key>
<string>1:48</string>
<key>LeftAxisY</key>
<string>1:49</string>
<key>LeftTrigger</key>
<string>9:7</string>
<key>RightAxisX</key>
<string>1:50</string>
<key>RightAxisY</key>
<string>1:53</string>
<key>RightTrigger</key>
<string>9:8</string>
<key>ButtonA</key>
<string>9:2</string>
<key>ButtonB</key>
<string>9:3</string>
<key>ButtonX</key>
<string>9:1</string>
<key>ButtonY</key>
<string>9:4</string>
<key>LeftShoulder</key>
<string>9:5</string>
<key>RightShoulder</key>
<string>9:6</string>
<key>LeftThumb</key>
<string>9:11</string>
<key>RightThumb</key>
<string>9:12</string>
<key>ButtonStart</key>
<string>9:10</string>
<key>ButtonBack</key>
<string>9:14</string>
<key>ButtonDevice</key>
<string>0</string>
<key>DPadUp</key>
<string>0</string>
<key>DPadDown</key>
<string>0</string>
<key>DPadLeft</key>
<string>0</string>
<key>DPadRight</key>
<string>0</string>
<key>Hatswitch</key>
<string>1:57</string>
<key>HSValueRest</key>
<integer>8</integer>
<key>HSValueUp</key>
<integer>0</integer>
<key>HSValueUpRight</key>
<integer>1</integer>
<key>HSValueRight</key>
<integer>2</integer>
<key>HSValueDownRight</key>
<integer>3</integer>
<key>HSValueDown</key>
<integer>4</integer>
<key>HSValueDownLeft</key>
<integer>5</integer>
<key>HSValueLeft</key>
<integer>6</integer>
<key>HSValueUpLeft</key>
<integer>7</integer>
<key>XAxisInitValue</key>
<integer>127</integer>
<key>YAxisInitValue</key>
<integer>127</integer>
</dict>
</plist>


Originally posted by nathanlau07:
This worked! I did add the encoding variable - rookie mistake. If I can even earn the title of rookie, I was just skrewing about at that point. But I reverted it to the original state and added the product ID and it worked. Thank you!

Originally posted by tintingaroo:
Nice. :steamthumbsup:
Change Product ID from 1476 to 3302, then we see what happens...

(Product ID of a DS4 is 5C4 (or 0x05C4). Convert that hexadecimal to decimal and you get 1476.
DS5 Product ID is CE6, converted to decimal -> 3302.)

You added the encoding variable?
<?xml version="1.0" encoding="050000004c050000e60c000000010000>
If so try with that removed if there are still issues.


Originally posted by nathanlau07:
This worked! I did add the encoding variable - rookie mistake. If I can even earn the title of rookie, I was just skrewing about at that point. But I reverted it to the original state and added the product ID and it worked. Thank you!

Originally posted by tintingaroo:
Nice. :steamthumbsup:
Change Product ID from 1476 to 3302, then we see what happens...

(Product ID of a DS4 is 5C4 (or 0x05C4). Convert that hexadecimal to decimal and you get 1476.
DS5 Product ID is CE6, converted to decimal -> 3302.)

You added the encoding variable?
<?xml version="1.0" encoding="050000004c050000e60c000000010000>
If so try with that removed if there are still issues.
< 1 2 3 4 >
Showing 1-15 of 56 comments
Per page: 1530 50

Date Posted: May 27, 2021 @ 6:40am
Posts: 56