As an addendum I should add that Steam weren't able to store the calibration string with the Classic Controller in a way that survives a Steam restart. So you can end up with setting all controllers up in Steam, game with them and have everything as it should be, but then the config will end up resetted the next time you start up Steam.
I think the reason is that you with a Wii Classic Controller connect, you end up with two controllers in Steam with the same name and ID - the Wiimote and the connected Classic Controller itself. They both end up with the same name/ID.
The workaround here is that you should edit ~/.local/share/Steam/config/config.vdf with the correct gamepad mapping string (e.g. find all entries with "Nintendo Wii Remote" and set the rest of the config string as the mapping string mentioned above).
For posterity I'll post the whole "SDL_GamepadBind" from my .local/share/Steam/config/config.vdf as it is now, where I have (among other things) two Wii Classic Controllers working.
"SDL_GamepadBind" "03000000010000000100000001000000,MoltenGamepad,platform:Linux,a:b0,b:b1,x:b2,y:b3,back:b6,start:b7,guide:b8,leftshoulder:b4,rightshoulder:b5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,dpup:b11,dpleft:b13,dpdown:b12,dpright:b14,
030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux,
050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,platform:Linux,
050000007e0500000603000014860000,Nintendo Wii Remote,crc:60be,platform:Linux,a:b0,b:b1,x:b2,y:b3,dpleft:b12,dpright:b13,dpup:b11,dpdown:b14,leftx:a0,lefty:a1~,leftstick:b6,rightx:a2,righty:a3~,rightstick:b7,leftshoulder:b4,lefttrigger:+a5,rightshoulder:b5,righttrigger:+a4,back:b10,start:b9,guide:b8,steam:1,
050000007e0500000920000001800000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,platform:Linux,
000000004e696e74656e646f20537700,Nintendo Switch Pro Controller,a:b0,b:b1,x:b2,y:b3,back:b9,guide:b11,start:b10,leftstick:b12,rightstick:b13,leftshoulder:b5,rightshoulder:b6,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b7,righttrigger:b8,platform:Linux
000000004e696e74656e646f20576900,Nintendo Wii Remote,crc:60be,platform:Linux,a:b0,b:b1,x:b2,y:b3,dpleft:b12,dpright:b13,dpup:b11,dpdown:b14,leftx:a0,lefty:a1~,leftstick:b6,rightx:a2,righty:a3~,rightstick:b7,leftshoulder:b4,lefttrigger:+a5,rightshoulder:b5,righttrigger:+a4,back:b10,start:b9,guide:b8,steam:1,
05008a0d7e0500000603000000060000,Nintendo Wii Remote,crc:0d8a,platform:Linux,a:b0,b:b1,x:b2,y:b3,dpleft:b12,dpright:b13,dpup:b11,dpdown:b14,leftx:a0,lefty:a1~,leftstick:b6,rightx:a2,righty:a3~,rightstick:b7,leftshoulder:b4,lefttrigger:+a5,rightshoulder:b5,righttrigger:+a4,back:b10,start:b9,guide:b8,steam:1,
050000007e0500000603000000060000,Nintendo Wii Remote,crc:60be,platform:Linux,a:b0,b:b1,x:b2,y:b3,dpleft:b12,dpright:b13,dpup:b11,dpdown:b14,leftx:a0,lefty:a1~,leftstick:b6,rightx:a2,righty:a3~,rightstick:b7,leftshoulder:b4,lefttrigger:+a5,rightshoulder:b5,righttrigger:+a4,back:b10,start:b9,guide:b8,steam:1,"
I found out later that this config.vdf looks a bit weird because it's set up with the kernel module hid-nintendo loaded. So the name and such might be a little bit different if you do it the correct way, e.g. with hid-nintendo blacklisted, but the mapping itself should be the same.
With hid-nintendo blacklisted and the resulting SDL_Gamepadbind set up with the correct mapping, everything seems to work. But I do get another bug if I connect two Wii Classic Controllers.
When two are connected at the same time, it makes Steam report the other one as a "Generic Gamepad" under Controller settings, and at the same time input from all gamepads stops working. Steam won't exit cleanly afterwards either, I have to reboot the computer before I'm able to start Steam again after a shutdown.
A bit yelling into the void, but thought I should mention that the latest Steam beta fixes the several controllers-issue, so having more than one works again! So if you're prepared to edit config.vdf with the correct SDL mapping, the Wii Classic controllers works perfectly again.
SDL_Gx2 2024-09SDL_GAMECONTROLLER_USE_BUTTON_LABELSx1 2023-08
Steam client version: 1691193224
Gentoo Linux amd64.
When you in Steam create a manual mapping for a gamepad that has an inverted y-axis (example: Wii Classic Controller), the resulting mapping ends up with a string like e.g. "...lefty:~a1,righty:~a3..." - that is, Steam creates a mapping with the invertion operator ~ before the button, like "~a3". Correct SDL syntax is after the button like so: "a3~", e.g. "lefty:a1~,righty:a3~". In effect this makes it so if you try to calibrate a gamepad with inverted axis, it's impossible to actually get the inverted axis to work.
You can workaround this issue by fixing the SDL gamepad string yourself in a text editor, placing the ~ operator behind the button.
After a lot of fiddling, I found a pretty good SDL Gamepad mapping string for use in Steam for the Wii Classic Controller, with working analogue shoulder buttons:
05008a0d7e0500000603000000060000,Nintendo Wii Remote,crc:0d8a,platform:Linux,a:b0,b:b1,x:b2,y:b3,dpleft:b12,dpright:b13,dpup:b11,dpdown:b14,leftx:a0,lefty:a1~,leftstick:b6,rightx:a2,righty:a3~,rightstick:b7,leftshoulder:b4,lefttrigger:+a5,rightshoulder:b5,righttrigger:+a4,back:b10,start:b9,guide:b8,steam:1,Hope it'll be useful for other too. With this gamepad mapping you can finally use those analog buttons in-game (since they don't work properly with e.g. MoltenGamepad).