left stick has segments (dr,d,dl,ul,u,ur) on axes 0 and 1 offset by 0 degrees
right stick has segments (dr,d,dl,ul,u,ur) on axes 3 and 4 offset by 0 degrees

trigger on axis 2 is lefttrigger
trigger on axis 5 is righttrigger

button 0 is a
button 1 is b
button 2 is x
button 3 is y
button 4 is leftshoulder
button 5 is rightshoulder
button 6 is back
button 7 is start
button 8 is guide
button 9 is leftstick
button 10 is rightstick
button 11 is paddle1
button 12 is paddle2
button 13 is paddle3
button 14 is paddle4

a -> -S
b -> -Z
x -> -T
y -> -D
back -> *
// guide ->
start -> #
leftstick -> S-
rightstick -> *
lefttrigger -> A-
leftshoulder -> O-
rightshoulder -> -E
righttrigger -> -U
// dpup ->
// dpdown ->
// dpleft ->
// dpright ->
// misc1 ->
paddle1 -> -E
paddle2 -> -U
paddle3 -> O-
paddle4 -> A-
// touchpad ->
leftdr -> R-
leftd -> W-
leftdl -> K-
leftul -> T-
leftu -> P-
leftur -> H-
rightdr -> -G
rightd -> -B
rightdl -> -R
rightul -> -F
rightu -> -P
rightur -> -L

left(d,dl,ul,dl) -> TW-
left(d,dl,ul,u,ul) -> KPW-
left(d,dl,ul,u,ul,dl,d) -> PW-
left(d,dl,ul,u,ul,dl) -> TPW-
left(d,dl,ul,u,ur,dr,ur,u,ul) -> KPWHR-
left(d,dl,ul,u,ur,dr,ur,u,ul,dl,d) -> WR-
left(d,dl,ul,u,ur,dr,ur) -> TKPWR-
left(d,dl,ul,u,ur,u,ul) -> KPWH-
left(d,dl,ul,u,ur,u,ul,dl,d) -> WH-
left(d,dl,ul,u,ur,u,ul,dl) -> TWH-
left(d,dl,ul,u,ur,u) -> TKWH-
left(d,dl,ul,u) -> PW-
left(d,dl,ul) -> TW-
left(d,dr,ur,dr) -> WH-
left(d,dr,ur,u,ul,dl) -> KW-
left(d,dr,ur,u,ul,dl,ul) -> KPWHR-
left(d,dr,ur,u,ul,dl,ul,u,ur,dr,d) -> KW-
left(d,dr,ur,u,ul,dl,ul,u,ur) -> TKPWR-
left(d,dr,ur,u,ul,u,ur,dr,d) -> TW-
left(d,dr,ur,u,ul,u,ur,dr) -> TWH-
left(d,dr,ur,u,ul,u,ur) -> TPWR-
left(d,dr,ur,u,ul,u) -> TWHR-
left(d,dr,ur,u,ul) -> TW-
left(d,dr,ur,u,ur,dr,d) -> PW-
left(d,dr,ur,u,ur,dr) -> PWH-
left(d,dr,ur,u,ur) -> PWR-
left(d,dr,ur,u) -> PW-
left(dl,d,dr,d) -> KR-
left(dl,d,dr,ur,dr) -> KWH-
left(dl,d,dr,ur,dr,d) -> KHR-
left(dl,d,dr,ur,dr,d,dl) -> KH-
left(dl,d,dr,ur,u,ul,u,ur,dr,d,dl) -> TK-
left(dl,d,dr,ur,u,ul,u,ur,dr) -> TKPWH-
left(dl,d,dr,ur,u,ul,u) -> TKWHR-
left(dl,d,dr,ur,u,ul) -> TK-
left(dl,d,dr,ur,u,ur) -> KPWR-
left(dl,d,dr,ur,u,ur,dr) -> KPWH-
left(dl,d,dr,ur,u,ur,dr,d) -> KPR-
left(dl,d,dr,ur,u,ur,dr,d,dl) -> KP-
left(dl,ul,u,ul) -> KP-
left(dl,ul,u,ur,dr,d,dr,ur,u,ul,dl) -> KW-
left(dl,ul,u,ur,dr,d,dr,ur,u) -> TKWHR-
left(dl,ul,u,ur,dr,d,dr) -> TKPWH-
left(dl,ul,u,ur,dr,ur,u,ul) -> KPR-
left(dl,ul,u,ur,dr,ur,u,ul,dl) -> KR-
left(dl,ul,u,ur,dr,ur,u) -> TKHR-
left(dl,ul,u,ur,dr,ur) -> TKPR-
left(dl,ul,u,ur,u,ul) -> KPH-
left(dl,ul,u,ur,u,ul,dl) -> KH-
left(dl,ul,u,ur,u) -> TKH-
left(dr,d,dl) -> KR-
left(dr,d,dl,d) -> KR-
left(dr,d,dl,ul,dl,d,dr) -> TR-
left(dr,d,dl,ul,dl,d) -> TKR-
left(dr,d,dl,ul,dl) -> TWR-
left(dr,d,dl,ul,u,ul) -> KPWR-
left(dr,d,dl,ul,u,ul,dl,d) -> KPR-
left(dr,d,dl,ul,u,ul,dl,d,dr) -> PR-
left(dr,d,dl,ul,u,ul,dl) -> TPWR-
left(dr,d,dl,ul,u,ur) -> HR-
left(dr,d,dl,ul,u,ur,u,ul,dl,d,dr) -> HR-
left(dr,d,dl,ul,u,ur,u,ul,dl) -> TPWHR-
left(dr,d,dl,ul,u,ur,u) -> TKWHR-
left(dr,d,dl,ul,u) -> PR-
left(dr,d,dl,ul) -> TR-
left(dr,ur,u,ul,dl) -> KR-
left(dr,ur,u,ul,dl,d,dl,ul,u,ur,dr) -> WR-
left(dr,ur,u,ul,dl,d,dl,ul,u) -> TKWHR-
left(dr,ur,u,ul,dl,d,dl) -> TPWHR-
left(dr,ur,u,ul,dl,d) -> WR-
left(dr,ur,u,ul,dl,ul) -> KPHR-
left(dr,ur,u,ul,dl,ul,u,ur) -> KPR-
left(dr,ur,u,ul,dl,ul,u,ur,dr) -> KR-
left(dr,ur,u,ul,dl,ul,u) -> TKHR-
left(dr,ur,u,ul,u,ur,dr) -> TR-
left(dr,ur,u,ul,u,ur) -> TPR-
left(dr,ur,u,ul,u) -> THR-
left(dr,ur,u,ul) -> TR-
left(dr,ur,u,ur) -> PR-
left(dr,ur,u) -> PR-
left(u,ul,dl) -> KP-
left(u,ul,dl,d,dl,ul) -> KPW-
left(u,ul,dl,d,dl,ul,u) -> PW-
left(u,ul,dl,d,dl) -> TPW-
left(u,ul,dl,d,dr,d,dl,ul) -> KPR-
left(u,ul,dl,d,dr,d,dl,ul,u) -> PR-
left(u,ul,dl,d,dr,d,dl) -> TPWR-
left(u,ul,dl,d,dr,d) -> TKPR-
left(u,ul,dl,d,dr,ur,dr,d,dl,ul,u) -> PH-
left(u,ul,dl,d,dr,ur,dr,d,dl) -> TPWHR-
left(u,ul,dl,d,dr,ur,dr) -> TKPWH-
left(u,ul,dl,ul) -> KP-
left(u,ur,dr,d,dl) -> KP-
left(u,ur,dr,d,dl,d) -> KPHR-
left(u,ur,dr,d,dl,d,dr) -> KPWH-
left(u,ur,dr,d,dl,d,dr,ur) -> KPR-
left(u,ur,dr,d,dl,d,dr,ur,u) -> KP-
left(u,ur,dr,d,dl,ul,dl,d,dr,ur,u) -> TP-
left(u,ur,dr,d,dl,ul,dl,d,dr) -> TKPWH-
left(u,ur,dr,d,dl,ul,dl) -> TPWHR-
left(u,ur,dr,d,dl,ul) -> TP-
left(u,ur,dr,d,dr,ur,u) -> PW-
left(u,ur,dr,d,dr,ur) -> PWR-
left(u,ur,dr,d,dr) -> PWH-
left(u,ur,dr,ur) -> PR-
left(ul,dl,d,dl) -> TW-
left(ul,dl,d,dr,d,dl,ul) -> TR-
left(ul,dl,d,dr,d,dl) -> TWR-
left(ul,dl,d,dr,d) -> TKR-
left(ul,dl,d,dr,ur,dr,d,dl,ul) -> TH-
left(ul,dl,d,dr,ur,dr,d,dl) -> TWH-
left(ul,dl,d,dr,ur,dr,d) -> TKHR-
left(ul,dl,d,dr,ur,dr) -> TKWH-
left(ul,dl,d,dr,ur,u,ur,dr,d,dl,ul) -> TP-
left(ul,dl,d,dr,ur,u,ur,dr,d) -> TKPHR-
left(ul,dl,d,dr,ur,u,ur) -> TKPWR-
left(ul,u,ur,dr,d,dl,d,dr,ur,u,ul) -> TK-
left(ul,u,ur,dr,d,dl,d,dr,ur) -> TKPWR-
left(ul,u,ur,dr,d,dl,d) -> TKPHR-
left(ul,u,ur,dr,d,dr,ur,u,ul) -> TW-
left(ul,u,ur,dr,d,dr,ur,u) -> TWH-
left(ul,u,ur,dr,d,dr,ur) -> TPWR-
left(ul,u,ur,dr,d,dr) -> TPWH-
left(ul,u,ur,dr,ur,u,ul) -> TR-
left(ul,u,ur,dr,ur,u) -> THR-
left(ul,u,ur,dr,ur) -> TPR-
left(ul,u,ur,u) -> TH-
left(ur,dr,d,dl) -> KH-
left(ur,dr,d,dl,d) -> KHR-
left(ur,dr,d,dl,d,dr) -> KWH-
left(ur,dr,d,dl,d,dr,ur) -> KH-
left(ur,dr,d,dl,ul,dl,d,dr,ur) -> TH-
left(ur,dr,d,dl,ul,dl,d,dr) -> TWH-
left(ur,dr,d,dl,ul,dl,d) -> TKHR-
left(ur,dr,d,dl,ul,dl) -> TWHR-
left(ur,dr,d,dl,ul,u,ul) -> KPWHR-
left(ur,dr,d,dl,ul,u,ul,dl,d,dr,ur) -> PH-
left(ur,dr,d,dl,ul,u,ul,dl,d) -> TKPHR-
left(ur,dr,d,dl,ul,u) -> PH-
left(ur,dr,d,dl,ul) -> TH-
left(ur,dr,d,dr) -> WH-
left(ur,dr,d) -> WH-
left(ur,u,ul,dl) -> KH-
left(ur,u,ul,dl,d,dl,ul) -> KPWH-
left(ur,u,ul,dl,d,dl,ul,u,ur) -> WH-
left(ur,u,ul,dl,d,dl,ul,u) -> TWH-
left(ur,u,ul,dl,d,dl) -> TPWH-
left(ur,u,ul,dl,d,dr,d,dl,ul) -> KPWHR-
left(ur,u,ul,dl,d,dr,d,dl,ul,u,ur) -> HR-
left(ur,u,ul,dl,d,dr,d) -> TKPHR-
left(ur,u,ul,dl,d) -> WH-
left(ur,u,ul,dl,ul) -> KPH-
left(ur,u,ul,dl,ul,u,ur) -> KH-
left(ur,u,ul,dl,ul,u) -> TKH-
left(ur,u,ul,u) -> TH-
left(ur,u,ul) -> TH-

right(dl,d,dr,d) -> -RG
right(dl,d,dr,ur,dr) -> -RBL
right(dl,d,dr,ur,dr,d,dl) -> -RL
right(dl,d,dr,ur,dr,d) -> -RLG
right(dl,d,dr,ur,u,ul) -> -FR
right(dl,d,dr,ur,u,ul,u) -> -FRBLG
right(dl,d,dr,ur,u,ul,u,ur,dr) -> -FRPBL
right(dl,d,dr,ur,u,ul,u,ur,dr,d,dl) -> -FR
right(dl,d,dr,ur,u,ur,dr,d,dl) -> -RP
right(dl,d,dr,ur,u,ur,dr,d) -> -RPG
right(dl,d,dr,ur,u,ur,dr) -> -RPBL
right(dl,d,dr,ur,u,ur) -> -RPBG
right(dl,ul,u,ul) -> -RP
right(dl,ul,u,ur,dr,d,dr) -> -FRPBL
right(dl,ul,u,ur,dr,d,dr,ur,u) -> -FRBLG
right(dl,ul,u,ur,dr,d,dr,ur,u,ul,dl) -> -RB
right(dl,ul,u,ur,dr,ur) -> -FRPG
right(dl,ul,u,ur,dr,ur,u) -> -FRLG
right(dl,ul,u,ur,dr,ur,u,ul,dl) -> -RG
right(dl,ul,u,ur,dr,ur,u,ul) -> -RPG
right(dl,ul,u,ur,u) -> -FRL
right(dl,ul,u,ur,u,ul,dl) -> -RL
right(dl,ul,u,ur,u,ul) -> -RPL
right(d,dl,ul) -> -FB
right(d,dl,ul,dl) -> -FB
right(d,dl,ul,u) -> -PB
right(d,dl,ul,u,ul,dl) -> -FPB
right(d,dl,ul,u,ul,dl,d) -> -PB
right(d,dl,ul,u,ul) -> -RPB
right(d,dl,ul,u,ur,dr,ur) -> -FRPBG
right(d,dl,ul,u,ur,dr,ur,u,ul,dl,d) -> -BG
right(d,dl,ul,u,ur,dr,ur,u,ul) -> -RPBLG
right(d,dl,ul,u,ur,u) -> -FRBL
right(d,dl,ul,u,ur,u,ul,dl) -> -FBL
right(d,dl,ul,u,ur,u,ul,dl,d) -> -BL
right(d,dl,ul,u,ur,u,ul) -> -RPBL
right(d,dr,ur,dr) -> -BL
right(d,dr,ur,u) -> -PB
right(d,dr,ur,u,ul) -> -FB
right(d,dr,ur,u,ul,dl) -> -RB
right(d,dr,ur,u,ul,dl,ul,u,ur) -> -FRPBG
right(d,dr,ur,u,ul,dl,ul,u,ur,dr,d) -> -RB
right(d,dr,ur,u,ul,dl,ul) -> -RPBLG
right(d,dr,ur,u,ul,u) -> -FBLG
right(d,dr,ur,u,ul,u,ur) -> -FPBG
right(d,dr,ur,u,ul,u,ur,dr) -> -FBL
right(d,dr,ur,u,ul,u,ur,dr,d) -> -FB
right(d,dr,ur,u,ur) -> -PBG
right(d,dr,ur,u,ur,dr) -> -PBL
right(d,dr,ur,u,ur,dr,d) -> -PB
right(dr,d,dl) -> -RG
right(dr,d,dl,d) -> -RG
right(dr,d,dl,ul) -> -FG
right(dr,d,dl,ul,dl) -> -FBG
right(dr,d,dl,ul,dl,d) -> -FRG
right(dr,d,dl,ul,dl,d,dr) -> -FG
right(dr,d,dl,ul,u) -> -PG
right(dr,d,dl,ul,u,ul,dl) -> -FPBG
right(dr,d,dl,ul,u,ul,dl,d,dr) -> -PG
right(dr,d,dl,ul,u,ul,dl,d) -> -RPG
right(dr,d,dl,ul,u,ul) -> -RPBG
right(dr,d,dl,ul,u,ur) -> -LG
right(dr,d,dl,ul,u,ur,u) -> -FRBLG
right(dr,d,dl,ul,u,ur,u,ul,dl) -> -FPBLG
right(dr,d,dl,ul,u,ur,u,ul,dl,d,dr) -> -LG
right(dr,ur,u) -> -PG
right(dr,ur,u,ul) -> -FG
right(dr,ur,u,ul,dl) -> -RG
right(dr,ur,u,ul,dl,d) -> -BG
right(dr,ur,u,ul,dl,d,dl) -> -FPBLG
right(dr,ur,u,ul,dl,d,dl,ul,u) -> -FRBLG
right(dr,ur,u,ul,dl,d,dl,ul,u,ur,dr) -> -BG
right(dr,ur,u,ul,dl,ul,u) -> -FRLG
right(dr,ur,u,ul,dl,ul,u,ur,dr) -> -RG
right(dr,ur,u,ul,dl,ul,u,ur) -> -RPG
right(dr,ur,u,ul,dl,ul) -> -RPLG
right(dr,ur,u,ul,u) -> -FLG
right(dr,ur,u,ul,u,ur) -> -FPG
right(dr,ur,u,ul,u,ur,dr) -> -FG
right(dr,ur,u,ur) -> -PG
right(ul,dl,d,dl) -> -FB
right(ul,dl,d,dr,d) -> -FRG
right(ul,dl,d,dr,d,dl) -> -FBG
right(ul,dl,d,dr,d,dl,ul) -> -FG
right(ul,dl,d,dr,ur,dr) -> -FRBL
right(ul,dl,d,dr,ur,dr,d) -> -FRLG
right(ul,dl,d,dr,ur,dr,d,dl) -> -FBL
right(ul,dl,d,dr,ur,dr,d,dl,ul) -> -FL
right(ul,dl,d,dr,ur,u,ur) -> -FRPBG
right(ul,dl,d,dr,ur,u,ur,dr,d) -> -FRPLG
right(ul,dl,d,dr,ur,u,ur,dr,d,dl,ul) -> -FP
right(ul,u,ur,dr,d,dl,d) -> -FRPLG
right(ul,u,ur,dr,d,dl,d,dr,ur) -> -FRPBG
right(ul,u,ur,dr,d,dl,d,dr,ur,u,ul) -> -FR
right(ul,u,ur,dr,d,dr) -> -FPBL
right(ul,u,ur,dr,d,dr,ur) -> -FPBG
right(ul,u,ur,dr,d,dr,ur,u) -> -FBL
right(ul,u,ur,dr,d,dr,ur,u,ul) -> -FB
right(ul,u,ur,dr,ur) -> -FPG
right(ul,u,ur,dr,ur,u) -> -FLG
right(ul,u,ur,dr,ur,u,ul) -> -FG
right(ul,u,ur,u) -> -FL
right(u,ul,dl,d,dl) -> -FPB
right(u,ul,dl,d,dl,ul,u) -> -PB
right(u,ul,dl,d,dl,ul) -> -RPB
right(u,ul,dl,d,dr,d) -> -FRPG
right(u,ul,dl,d,dr,d,dl) -> -FPBG
right(u,ul,dl,d,dr,d,dl,ul,u) -> -PG
right(u,ul,dl,d,dr,d,dl,ul) -> -RPG
right(u,ul,dl,d,dr,ur,dr) -> -FRPBL
right(u,ul,dl,d,dr,ur,dr,d,dl) -> -FPBLG
right(u,ul,dl,d,dr,ur,dr,d,dl,ul,u) -> -PL
right(u,ul,dl,ul) -> -RP
right(u,ul,dl) -> -RP
right(u,ur,dr,d,dl,d,dr,ur,u) -> -RP
right(u,ur,dr,d,dl,d,dr,ur) -> -RPG
right(u,ur,dr,d,dl,d,dr) -> -RPBL
right(u,ur,dr,d,dl,d) -> -RPLG
right(u,ur,dr,d,dl,ul) -> -FP
right(u,ur,dr,d,dl,ul,dl) -> -FPBLG
right(u,ur,dr,d,dl,ul,dl,d,dr) -> -FRPBL
right(u,ur,dr,d,dl,ul,dl,d,dr,ur,u) -> -FP
right(u,ur,dr,d,dl) -> -RP
right(u,ur,dr,d,dr) -> -PBL
right(u,ur,dr,d,dr,ur) -> -PBG
right(u,ur,dr,d,dr,ur,u) -> -PB
right(u,ur,dr,ur) -> -PG
right(ur,dr,d) -> -BL
right(ur,dr,d,dl,d,dr) -> -RBL
right(ur,dr,d,dl,d,dr,ur) -> -RL
right(ur,dr,d,dl,d) -> -RLG
right(ur,dr,d,dl,ul) -> -FL
right(ur,dr,d,dl,ul,dl) -> -FBLG
right(ur,dr,d,dl,ul,dl,d) -> -FRLG
right(ur,dr,d,dl,ul,dl,d,dr) -> -FBL
right(ur,dr,d,dl,ul,dl,d,dr,ur) -> -FL
right(ur,dr,d,dl,ul,u) -> -PL
right(ur,dr,d,dl,ul,u,ul,dl,d) -> -FRPLG
right(ur,dr,d,dl,ul,u,ul,dl,d,dr,ur) -> -PL
right(ur,dr,d,dl,ul,u,ul) -> -RPBLG
right(ur,dr,d,dl) -> -RL
right(ur,dr,d,dr) -> -BL
right(ur,u,ul) -> -FL
right(ur,u,ul,dl,d) -> -BL
right(ur,u,ul,dl,d,dl) -> -FPBL
right(ur,u,ul,dl,d,dl,ul,u) -> -FBL
right(ur,u,ul,dl,d,dl,ul,u,ur) -> -BL
right(ur,u,ul,dl,d,dl,ul) -> -RPBL
right(ur,u,ul,dl,d,dr,d) -> -FRPLG
right(ur,u,ul,dl,d,dr,d,dl,ul,u,ur) -> -LG
right(ur,u,ul,dl,d,dr,d,dl,ul) -> -RPBLG
right(ur,u,ul,dl,ul,u) -> -FRL
right(ur,u,ul,dl,ul,u,ur) -> -RL
right(ur,u,ul,dl,ul) -> -RPL
right(ur,u,ul,dl) -> -RL
right(ur,u,ul,u) -> -FL
