Motion evdev: Difference between revisions

From Dolphin Emulator Wiki
Jump to navigation Jump to search
m (Add 2 missing lines at the top)
(Add dualsense axis based on discussion on discord)
Line 28: Line 28:
!Dolphin motion
!Dolphin motion
!Evdev axis HID Nintendo
!Evdev axis HID Nintendo
!Evdev axis Sony DualSense
|-
|-
|Accel Up
|Accel Up
|Accel Z+
|Accel Z+
|Accel Y+
|-
|-
|Accel Down
|Accel Down
|Accel Z-
|Accel Z-
|Accel Y-
|-
|-
|Accel Left
|Accel Left
|Accel Y+
|Accel Y+
|Accel X-
|-
|-
|Accel Right
|Accel Right
|Accel Y-
|Accel Y-
|Accel X+
|-
|-
|Accel Forward
|Accel Forward
|Accel X+
|Accel X+
|Accel Z-
|-
|-
|Accel Backward
|Accel Backward
|Accel X-
|Accel X-
|Accel Z+
|-
|-
|Pitch Up
|Pitch Up
|Gyro Y-
|Gyro Y-
|Gyro X+
|-
|-
|Pitch Down
|Pitch Down
|Gyro Y+
|Gyro Y+
|Gyro X-
|-
|-
|Roll Left
|Roll Left
|Gyro X-
|Gyro X-
|Gyro Z+
|-
|-
|Roll Right
|Roll Right
|Gyro X+
|Gyro X+
|Gyro Z-
|-
|-
|Yaw Left
|Yaw Left
|Gyro Z+
|Gyro Z+
|Gyro Y+
|-
|-
|Yaw Right
|Yaw Right
|Gyro Z-
|Gyro Z-
|Gyro Y-
|}
|}



Revision as of 02:33, 23 November 2021

These instruction are made with a Nintendo Pro controller and Joy-Cons. While the overall process will be the same the motion axis may not match those found on a Sony DualShock 4.

The HID Nintendo kernel driver exposes 2 evdev devices, one for the buttons and another (IMU) for the accelerators/gyroscopes. Do note that Joy-Cons will have 2 devices each (4 in total).

The IMU input device does not automatically get tagged with `uaccess` while the "regular" device is. If you do not see an IMU device listed in Dolphin's devicelist add the following udev rule to /etc/udev/rules.f/99-hidnintendo.rules. reload udev rules with "udevadm control --reload-rules" and reconnect the device(s).

ACTION!="add", GOTO="imuend"
SUBSYSTEM!="input", GOTO="imuend"
KERNEL!="event*", GOTO="imuend"

ATTRS{id/vendor}=="057e", ATTRS{id/product}=="2009", ATTRS{name}=="*IMU*", TAG+="uaccess"
ATTRS{id/vendor}=="057e", ATTRS{id/product}=="2006", ATTRS{name}=="*IMU*", TAG+="uaccess"
ATTRS{id/vendor}=="057e", ATTRS{id/product}=="2007", ATTRS{name}=="*IMU*", TAG+="uaccess"
ATTRS{id/vendor}=="057e", ATTRS{id/product}=="200e", ATTRS{name}=="*IMU*", TAG+="uaccess"
ATTRS{id/vendor}=="057e", ATTRS{id/product}=="2017", ATTRS{name}=="*IMU*", TAG+="uaccess"

LABEL="imuend"

It took me a bit of time figuring out which axis corresponds with the right motion control in dolphin. These axis might change in the future when evdev standardizes them.

Dolphin motion Evdev axis HID Nintendo Evdev axis Sony DualSense
Accel Up Accel Z+ Accel Y+
Accel Down Accel Z- Accel Y-
Accel Left Accel Y+ Accel X-
Accel Right Accel Y- Accel X+
Accel Forward Accel X+ Accel Z-
Accel Backward Accel X- Accel Z+
Pitch Up Gyro Y- Gyro X+
Pitch Down Gyro Y+ Gyro X-
Roll Left Gyro X- Gyro Z+
Roll Right Gyro X+ Gyro Z-
Yaw Left Gyro Z+ Gyro Y+
Yaw Right Gyro Z- Gyro Y-

As the default buttons are all wrong reset all buttons in the Wii Remote configuration. To configure the motion controls you have to use the advanced config window. Right click on each motion button in the Wii Remote configure window. Select the appropriate IMU device at the top in the device selection.

Select imu device.png

Select the corresponding Accel or Gyro axis, select it and click ok. For example for "Accel Up" in dolphin you need to select "Accel Z+". The end result should look like below.

Advanced config result.png

Repeat this for every motion.