Play Path of Exile with a controller!
- Features
- Requirements
- Installation
- Setup
- FAQ & Troubleshooting
- Help, the application froze! Or: The application is not responding as expected!
- Mappings are not working as expected when playing PoE.
- 'java' is not recognized as an internal or external command, operable program or batch file
- The mouse is moving on its own!
- How can I change a setting without the user interface?
- What happens to my data?
- How do I retrieve a detailed log?
- The log file is very large!
- I would like to report a bug!
- How can I contact you?
- Development setup
- Gameplay and sample mapping
- License
- Open source software and attributions
- Map controller joysticks to character and mouse movement
- Map controller buttons to keyboard keys and mouse clicks
- Health: Reduce the risk of RSI by using a more ergonomic method of playing PoE!
- Java 64-bit (minimum version 8): Make sure you chose the 64-bit version
- A controller
- Download the latest release here
- Unpack
poe-controller-{version}.zip
to your folder of choice - Execute the file
poe-controller-{version}.jar
This section describes how to map controller inputs to keyboard/mouse outputs. See here for an example of a full mapping.
- Click on (2):
Map character movement
- Move the joystick in a circle.
- Two mappings should be assigned with the output
MacroCharacterMovement
(6)
- Click on (3):
Map mouse movement
.- Move the joystick in a circle.
- Two mappings should be assigned with the output
MacroMouseMovement
(7)
- Click on (8):
Save config
. - Note: poe-controller will do its best to automatically recognize which events belong to which controller axis. However: If the automatic mapping fails please retry. If it still fails please try manually changing settings.
Repeat for each controller button you want to map:
- Click on (1):
Add new mapping
- Click on (4):
Map input
- Hit a button on your controller.
- Click on (5):
Map output
- Click your mouse or hit a key.
- Click on (8):
Save config
.
Suggestions:
- Map
L1
orR1
toShift
: This gives you access to the second skill bar - Map
L2
orR2
toControl
: Useful forControl+Click
on items - Map
A
(XBox One) orX
(PS4) to your movement skill for the full console experience
Please try restarting the application.
Important: Steam has two places where you can enable/disable controller remappings
- Globally: Steam -> Settings -> Controller -> General Controller Settings -> Uncheck needed boxes. I also unchecked
Guide Button Focuses Steam
- Per-game: Try turning it off for PoE. See here for a guide
- Make sure you don't have any other remapping software running
- This programm should only be running once
Make sure you have installed Java (minimum version 8). I have tested the program with Java 8 and Java 11. You can use java -version
in a command line to check your installed Java version.
Try increasing the mouse movement stick threshold. The threshold can be set in the input field on the bottom right.
Note: Having knowledge of JSON is probably required for these steps.
- Close the application.
- The application settings are stored under
poe-controller-files/settings.json
. - Each row in the UI is an object in the
configs[0].mapping
array - A mapping consists of a
mappingKey
and anaction
. - Change mapping input: You will need to change the
mappingKey
.- For digital buttons on the controller you will require the fields
componentName
,id
andvalueWhenPressed
.analog
should be set tofalse
(no quotes). See (9) in the UI screenshot for an example. - For analog joysticks you will require the fields
componentName
andid
.valueWhenPressed
should be set tonull
andanalog
should be set totrue
(no quotes). See (10) in the UI screenshot for an example.
- For digital buttons on the controller you will require the fields
- Change mapping output: You will need to change the
action
.- Mouse click:
mouseAction
should be set to"LEFT_CLICK"
,"MIDDLE_CLICK"
or"RIGHT_CLICK"
. - Keyboard key:
key
should be set to the uppercase key, for exampleA
orSHIFT
. - Character/mouse movement: These structures are more complex. I would recommend checking the default settings file. You are looking for a
macro
where thename
is set to"MacroCharacterMovement"
or"MacroMouseMovement"
.
- Mouse click:
All of your data stays local.
- Start the file
start-poe-controller-with-log.cmd
. - (Optional: The application can be started with different levels of verbosity. You can change the verbosity by opening the
.cmd
file and changing the number in-Dverbosity=3
.) - Reproduce the bug.
- The log can be found in your installation folder under
poe-controller-files/poe-controller.log
.
The log file poe-controller-files/poe-controller.log
can be deleted safely.
Sure! Feel free to contact me, but please
- check the list of existing issues
- prepare a log file which was recorded when the bug occured
You can reach me on discord under Zhadok#3311. If you would like to report a bug, please prepare and send me the detailed log file.
Run the following command once if you want to run the application via an IDE. This will unpack the neccessary native files (.dll) from the Maven dependency.
mvn nativedependencies:copy
Then, run the class org.zhadok.poe.controller.App
.
Run the following commands to package and start the jar file (remember to insert the correct version):
mvn clean nativedependencies:copy package
cd target/
java -jar target/poe-controller-{version}.jar
You can set a parameter when starting the jar file:
-D"{parameter}"="{value}"
For example, you can increase the verbosity by starting the jar file with -Dverbosity=2
.
Available parameters:
verbosity
(Default 0): Increase or decrease the logging output. A higher verbosity means more output.java.library.path
: Required for locating the native files
This is the mapping I play PoE with.
Sample gameplay
Gameplay 1 | Gameplay 2 |
---|---|
![]() |
![]() |
Apache License Version 2.0
- JInput: Copyright 2019 jinput
- Controller icon made by Good Ware from Flaticon
- Other icons are from material design