There's a chat command called "/remap". Writing it as-is shows names of inputs. Doing "/remap <name>" shows what the current mapping is. Doing like "/remap attack S" changes mapping. Supports some basic expression operators (e.g. "S|D" to accept either of two, or "gp1x<-0.5" for custom deadzones on gamepad).