J2Kbr / TitanTwo

Titan Two - Device firmware bug report.
http://www.consoletuner.com
26 stars 3 forks source link

X52 Input mapping refinement request #297

Open phillowAT opened 3 years ago

phillowAT commented 3 years ago

Hi there!

Dear J2KBR, fantastic work with the new HID for the X52! As i understand, it seems to be hard to add all physical Inputs, so i would like to request a change of the HID to maximise the usage. Please find table underneath. Reason for: we have 3 rotary/slider which are not really much useful, as XB/PS does have limited analogs, which are in use already in favour of other functions (also to be as close to the gamepad mapping as possible). Also, as far as my knowledge goes, i haven´t found any script for the X52 where those analog channels are used.

Therefore it would make sense to switch over and refine it to: (Naming according to: LINK)

Name old HID new HID
Mouse Click 1 BUTTON_14 BUTTON_14
Mouse Click 2 POINT_2_Y POINT_2_Y
Mouse UP/DOWN Paddle_4 POINT_1_X
Mouse LEFT/RIGHT Paddle_3 POINT_1_Y
Mouse Scroll UP   ACCEL_1_X
Mouse Scroll DOWN   ACCEL_1_Y
POV HAT 3 UP BUTTON_5 BUTTON_5
POV HAT 3 RIGHT BUTTON_4 BUTTON_4
POV HAT 3 DOWN BUTTON_8 BUTTON_8
POV HAT 3 LEFT BUTTON_7 BUTTON_7
POV HAT 2 UP ACCEL_1_X PADDLE_2
POV HAT 2 RIGHT ACCEL_2_X PADDLE_1
POV HAT 2 DOWN ACCEL_1_Y PADDLE_4
POV HAT 2 LEFT ACCEL_1_Z PADDLE_3
POV Hat 1 UP BUTTON_10 BUTTON_10
POV Hat 1 RIGHT BUTTON_13 BUTTON_13
POV Hat 1 DOWN BUTTON_11 BUTTON_11
POV Hat 1 LEFT BUTTON_12 BUTTON_12
Trigger 1 BUTTON_6 BUTTON_6
Trigger2 Paddle_1  
Pinky Switch   POINT_2_X
Fire A GYRO_1_Y GYRO_1_Y
Fire B GYRO_1_X GYRO_1_X
Fire C BUTTON_9 BUTTON_9
Fire BUTTON_21 BUTTON_21
Button E BUTTON_17 BUTTON_17
Rotary 2 POINT_1_Y  
Button D BUTTON_15 BUTTON_16
Button I BUTTON_16 BUTTON_15
Rotary 1 POINT_1_X  
Precision Slider POINT_2_X  
Function BUTTON_2 BUTTON_2
Start/Stop BUTTON_1 BUTTON_1
Reset BUTTON_3 BUTTON_3
Joystick X Axis STICK_1_X STICK_1_X
Joystick Y Axis STICK_1_Y STICK_1_Y
Joystick Z Axis STICK_2_X STICK_2_X
Throttle Axis STICK_2_Y STICK_2_Y
Toggle 1 GYRO_1_Z GYRO_1_Z
Toggle 2 ACCEL_2_Z ACCEL_2_X
Toggle 3 BUTTON_18 ACCEL_2_Y
Toggle 4 BUTTON_19 BUTTON_18
Toggle 5 ACCEL_2_Y BUTTON_19
Toggle 6 BUTTON_20 BUTTON_20
Mode Switch 1 PADDLE_2 ACCEL_1_Z
Mode Switch 2   ACCEL_2_Z
Mode Switch 3   (calulated by Switch1+2)

for the new physical inputs coming in:

As you also saw, i did some changes in PADDLE´s and some random to get a more consistent HID for the joystick (optional). Also the change of Button 15/16, would then reflect the Thrustmaster T-Flight layout.

EDIT: as GYRO/ACCEL/POINT channels does give us issues (e.g. using POINT_2_Y as button, while having POINT_2_X mapped to the Slider atm, PS/DS is backfiring values, causing issues with those channels, even when "zeroed" in script by:

    if(get_val(POINT_2_X)) {
        set_val(POINT_2_X, 0);
    }

Therefore, obviously new Button channels for (where there are buttons) would come in really handy

Many thanks in advance!!!

phillowAT commented 3 years ago

check forum entry

phillowAT commented 3 years ago

here´s a filter on only changing channels:

Name old HID new HID
Mouse UP/DOWN Paddle_4 POINT_1_X
Mouse LEFT/RIGHT Paddle_3 POINT_1_Y
Mouse Scroll UP unused ACCEL_1_X
Mouse Scroll DOWN unused ACCEL_1_Y
POV HAT 2 UP ACCEL_1_X Paddle_1
POV HAT 2 RIGHT ACCEL_2_X Paddle_2
POV HAT 2 DOWN ACCEL_1_Y Paddle_3
POV HAT 2 LEFT ACCEL_1_Z Paddle_4
Trigger2 Paddle_1 unused
Pinky Switch unused POINT_2_X
Rotary 2 POINT_1_Y unused
Button D BUTTON_15 BUTTON_16
Button I BUTTON_16 BUTTON_15
Rotary 1 POINT_1_X unused
Precision Slider POINT_2_X unused
Toggle 2 ACCEL_2_Z ACCEL_2_X
Toggle 3 BUTTON_18 ACCEL_2_Y
Toggle 4 BUTTON_19 BUTTON_18
Toggle 5 ACCEL_2_Y BUTTON_19
Toggle 6 BUTTON_20 BUTTON_20
Mode Switch 1 PADDLE_2 ACCEL_1_Z
Mode Switch 2 unused ACCEL_2_Z
Mode Switch 3 (calculated by: Switch 1+2)
phillowAT commented 3 years ago

today, i tried to remap (prepare) my proposal based on the existing channel offering and failed miserably. There seem to be more dependencies between ACCEL/GYRO/POINT channels as i thought. Pls find my remap attempt here:

Name old HID new HID  
Function BUTTON_1 BUTTON_1  
Start/Stop BUTTON_2 BUTTON_2  
Reset BUTTON_3 BUTTON_3  
POV HAT 3 RIGHT BUTTON_4 BUTTON_4  
POV HAT 3 UP BUTTON_5 BUTTON_5  
Trigger 1 BUTTON_6 BUTTON_6  
POV HAT 3 LEFT BUTTON_7 BUTTON_7  
POV HAT 3 DOWN BUTTON_8 BUTTON_8  
Fire C BUTTON_9 BUTTON_9  
POV Hat 1 UP BUTTON_10 BUTTON_10  
POV Hat 1 DOWN BUTTON_11 BUTTON_11  
POV Hat 1 LEFT BUTTON_12 BUTTON_12  
POV Hat 1 RIGHT BUTTON_13 BUTTON_13  
Mouse Click 1 BUTTON_14 BUTTON_14  
Button D BUTTON_15 BUTTON_16  
Button I BUTTON_16 BUTTON_15  
Button E BUTTON_17 BUTTON_17  
Toggle 3 BUTTON_18 ACCEL_1_X  
Toggle 4 BUTTON_19 ACCEL_1_Y  
Toggle 6 BUTTON_20 ACCEL_1_Z  
Fire BUTTON_21 BUTTON_21  
Joystick X Axis STICK_1_X STICK_1_X  
Joystick Y Axis STICK_1_Y STICK_1_Y  
Jouytick Z Axis STICK_2_X STICK_2_X  
Throttle Axis STICK_2_Y STICK_2_Y  
Rotary 1 POINT_1_X BUTTON_18 disabled
Rotary 2 POINT_1_Y BUTTON_19 disabled
Precision Slider POINT_2_X POINT_2_Y disabled
Mouse Click 2 POINT_2_Y ACCEL_2_X  
POV HAT 2 UP ACCEL_1_X Paddle_1  
POV HAT 2 DOWN ACCEL_1_Y Paddle_3  
POV HAT 2 LEFT ACCEL_1_Z Paddle_4  
POV HAT 2 RIGHT ACCEL_2_X Paddle_2  
Toggle 5 ACCEL_2_Y ACCEL_2_Y  
Toggle 2 ACCEL_2_Z ACCEL_2_Z  
B GYRO_1_X GYRO_1_X  
A GYRO_1_Y GYRO_1_Y  
Toggle 1 GYRO_1_Z POINT_2_X  
Trigger2 Paddle_1 GYRO_1_Z disabled
Mode Switch 1 PADDLE_2 BUTTON_20 disabled
Mode Switch 2      
Mouse UP/DOWN Paddle_4 POINT_1_X  
Mouse LEFT/RIGHT Paddle_3 POINT_1_Y  
Mouse Scroll UP      
Mouse Scroll DOWN    
Pinky Switch      
const uint8 X52buttonSwap[43] = {
    RMP_USB_A, 
    BUTTON_1,  BUTTON_2,  BUTTON_3,  BUTTON_4,  BUTTON_5,  BUTTON_6,  BUTTON_7, 
    BUTTON_8,  BUTTON_9,  BUTTON_10, BUTTON_11, BUTTON_12, BUTTON_13, BUTTON_14, 
    BUTTON_16, BUTTON_15, BUTTON_17, ACCEL_1_X, ACCEL_1_Y, ACCEL_1_Z,  BUTTON_21, 
    STICK_1_X, STICK_1_Y, STICK_2_X, STICK_2_Y, 
    BUTTON_18, BUTTON_19, POINT_2_Y,
    ACCEL_2_X, PADDLE_1,  PADDLE_3,  PADDLE_4,  PADDLE_2,
    ACCEL_2_Y, ACCEL_2_Z, GYRO_1_X,  GYRO_1_Y,
    POINT_2_X, GYRO_1_Z, BUTTON_20, POINT_1_X, POINT_1_Y, 
};
init {
    // swap buttons 15 and 16
    remapper(X52buttonSwap);
    remapper_disable(BUTTON_18);
    remapper_disable(BUTTON_19);
    remapper_disable(BUTTON_20);
    remapper_disable(POINT_2_Y);
    remapper_disable(GYRO_1_Z);

In the end, all "BUTTON_*" are doing fine, but others are only partly working, therefore i call it a fail.

phillowAT commented 3 years ago

with a colleague, we figured out a remapping/re-asignment that should work out for both version (and hopefully all platforms). Please find the proposal here: https://www.consoletuner.com/forum/download/file.php?id=4242

based on the collaboration work done here: https://www.consoletuner.com/forum/viewtopic.php?f=27&t=17720&p=111857&hilit=X52#p111546

It would be great to test the behavior upfront without putting it into the next update right away for a POC.

Many thanks in advance!