Logitech F510 D-Pad/Directional Movement Sticking & Workaround
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