controller_patcher icon indicating copy to clipboard operation
controller_patcher copied to clipboard

Logitech F510 D-Pad/Directional Movement Sticking & Workaround

Open CeruleanSky opened this issue 8 years ago • 0 comments

The Logitech F510 works fine in HidTest and Hid-to-VPAD wii u app.

But in Wii U games pressing in a direction on the dpad/sticks gets the controller stuck in that direction, as though it was a toggle.

This is not unique to myself as another person in the gbatemp forums had the same issue.

Work Around: Map the Logitech F510 to a Wii U Gamepad and also have a real Wii U Gamepad nearby and turned on. This will continuously flush the buttons preventing it from sticking.


Perhaps the problem lies in the "//! Special DPAD treatment." for CONTRPDM_Hat or it needs to be more aggressive checking of the d-pad/direction sticks state in the button-hold/trigger/release code.

Here is my config if it might help, the dpad is a DPAD_HAT:

[vid=0x046d,pid=0xc218]
VPAD_BUTTON_A               = 0x04,0x40 // B on Logitech Controller
VPAD_BUTTON_B               = 0x04,0x20 // A on Logitech Controller
VPAD_BUTTON_X               = 0x04,0x80 // Y on Logitech Controller
VPAD_BUTTON_Y               = 0x04,0x10 // X on Logitech Controller

VPAD_BUTTON_L               = 0x05,0x01
VPAD_BUTTON_R               = 0x05,0x02

VPAD_BUTTON_ZL              = 0x05,0x04
VPAD_BUTTON_ZR              = 0x05,0x08

VPAD_BUTTON_PLUS            = 0x05,0x20
VPAD_BUTTON_MINUS           = 0x05,0x10
//VPAD_BUTTON_HOME          = 0x01,0x10

VPAD_BUTTON_STICK_L         = 0x05,0x40
VPAD_BUTTON_STICK_R         = 0x05,0x80

DPAD_MODE = DPAD_HAT
DPad_MASK = 0x0F
VPAD_BUTTON_DPAD_N          = 0x04,0x00 // postion: 0x05, value: 0x00
VPAD_BUTTON_DPAD_NE         = 0x04,0x01 // postion: 0x05, value: 0x01
VPAD_BUTTON_DPAD_E          = 0x04,0x02 // postion: 0x05, value: 0x02
VPAD_BUTTON_DPAD_SE         = 0x04,0x03 // postion: 0x05, value: 0x03
VPAD_BUTTON_DPAD_S          = 0x04,0x04 // postion: 0x05, value: 0x04
VPAD_BUTTON_DPAD_SW         = 0x04,0x05 // postion: 0x05, value: 0x05
VPAD_BUTTON_DPAD_W          = 0x04,0x06 // postion: 0x05, value: 0x06
VPAD_BUTTON_DPAD_NW         = 0x04,0x07 // postion: 0x05, value: 0x07
VPAD_BUTTON_DPAD_Neutral    = 0x04,0x08 // postion: 0x05, value: 0x08

VPAD_L_STICK_X              = 0x00,0x80
VPAD_L_STICK_X_MINMAX       = 0x00,0xFF
VPAD_L_STICK_X_DEADZONE     = 0x02


VPAD_L_STICK_Y              = 0x01,0x7F
VPAD_L_STICK_Y_MINMAX       = 0x00,0xFF
VPAD_L_STICK_Y_DEADZONE     = 0x01
VPad_L_Stick_Y_Invert       = true

VPAD_R_STICK_X              = 0x02,0x80
VPAD_R_STICK_X_MINMAX       = 0x00,0xFF
VPAD_R_STICK_X_DEADZONE     = 0x01

VPAD_R_STICK_Y              = 0x03,0x7F
VPAD_R_STICK_Y_MINMAX       = 0x00,0xFF
VPAD_R_STICK_Y_DEADZONE     = 0x01
VPad_R_Stick_Y_Invert       = true

//This device is no adapter that can't have more than 1 pads.
PAD_COUNT                   = 0x01

CeruleanSky avatar Jul 09 '17 16:07 CeruleanSky