# SMC pad helper: custom controller mappings (flight sticks, HOTAS, pads SDL does not know).
#
# One line per device, SDL's gamecontrollerdb format:  GUID,name,platform:Windows,<pad input>:<device input>,...
#   device inputs:  a<n> = axis n, b<n> = button n, h<hat>.<1 up|2 right|4 down|8 left>
#                   a5~ = axis 5 inverted;  +a2 / -a2 = only the positive / negative half of axis 2
#   pad inputs:     leftx lefty rightx righty (sticks; +y = down/back)  lefttrigger righttrigger
#                   a b x y (Xbox positions)  leftshoulder rightshoulder  leftstick rightstick (L3 / R3)
#                   back start  dpup dpdown dpleft dpright
#   smc_deadzone:<0..0.5> (ours, taken out before SDL sees the line): a per-axis dead band on the four stick axes,
#                   rescaled so full deflection stays full - for a stick that rests a little off centre.
#
# Find a device's GUID and which axis / button / hat moves:
#     smc_pad\smc_pad_helper.exe --probe        (live changes for 30 s; --probe 60 for longer)
# What each pad button does in game is the client's binding (smc_pad.json "bindings", the in-game controller
# settings), not this file: this file only says which stick part is which pad button.
#
# Do not edit this file to change YOUR stick: a kit update replaces it. Put your own line(s) in
# package\Documents\smc_pad.json as  "sdl_mappings": ["GUID,name,..."]  - a line there for the same GUID wins.
# The helper re-reads both files within 2 s; no restart needed.

# VKB Gladiator NXT EVO R (VKBsim Gladiator EVO R, 231d:0200), Zion's layout (2026-10-13):
#   stick X/Y = aim (right stick); twist (Rz, a5) = forward / back (left stick Y), no strafe axis (keys A/D still work)
#   HID axes in SDL order: a0 X, a1 Y, a2 Z (rests at the end - not centred, unused), a3 Rx, a4 Ry (the ministick,
#   unused - it could be leftx:a3 for strafe), a5 Rz (twist).
#   Twist sign: lefty:a5~ means twist RIGHT = forward. If twisting right walks backward, remove the ~ (lefty:a5).
#   Buttons are VKB's default numbering minus one (Windows "button 1" = b0) - guessed, confirm with --probe:
#     b0 trigger (1st stage) = RT fire        b1 trigger 2nd stage = not mapped (it always comes with b0)
#     b2 = A jump / mech jump                 b3 = RB mech dash (on foot: throw)
#     b4 = LB roll / mech skill               b5 = LT aim / mech secondary
#     b6 = X reload (hold: interact)          b7 = Y next weapon / mech: interact
#     b8 = B crouch                           b9 = Back (bag; hold: map)    b10 = Start (menu)
#     b11 = L3 sprint                         b12 = R3 mark
#     4-way hat = b16..b19 (the probe, 2026-10-13: the SDL hat never moves - it reads 'up' at rest - so the hat is
#       mapped by its buttons): b16 up, b17 right, b18 down = call the mech, b19 left (direction order guessed).
#     leftx:a3 = the thumb ministick's X (a3/a4, rests at 0): strafe. a4 (its Y) is unmapped - the twist is forward/back.
#     a2 rests at full (a wheel/slider) - unmapped. b2 and b22 are one switch (b22 = b2 released) - b22 unmapped.
#     Other buttons seen, unmapped: b13 b14 b15 b20 b23 (an encoder: rapid pulses) b24 b25 b26 b27 b28.
#   smc_deadzone 0.10: this stick rested at X +6.7%, Y -8.1% (VKBDevCfg calibration would fix that at the source).
030000001d2300000002000000000000,VKBsim Gladiator EVO R,platform:Windows,rightx:a0,righty:a1,leftx:a3,lefty:a5~,righttrigger:b0,a:b2,rightshoulder:b3,leftshoulder:b4,lefttrigger:b5,x:b6,y:b7,b:b8,back:b9,start:b10,leftstick:b11,rightstick:b12,dpup:b16,dpright:b17,dpdown:b18,dpleft:b19,smc_deadzone:0.10,

# VKB Gladiator NXT EVO L (left-hand; product id 0201 assumed, not seen on a real device): the same layout.
030000001d2300000102000000000000,VKBsim Gladiator EVO L,platform:Windows,rightx:a0,righty:a1,leftx:a3,lefty:a5~,righttrigger:b0,a:b2,rightshoulder:b3,leftshoulder:b4,lefttrigger:b5,x:b6,y:b7,b:b8,back:b9,start:b10,leftstick:b11,rightstick:b12,dpup:b16,dpright:b17,dpdown:b18,dpleft:b19,smc_deadzone:0.10,
