Thanks to CRK suggestion I made a better AutoIt3 script https://www.autoitscript.com/site/autoit/downloads/ which would continue with all New Hardware Wizard windows accepting non signed drivers, Cancelling WinXP CD prompts and skipping multiple options (connect to internet, etc), so as to get Mouse and Keyboard detected and installed. The compiled autoit script EXE should be copied to the "Start" (within "Start Menu") folder to be automatically executed. The script strings MUST be adapted to the local windows language. And probably some Alt-LETTER combinations too. My sample works in SPANISH WinXP. Hope it helps somebody else, after having mouse and keyboard functioning, script must be deleted (or moved to other folder):
 
	$asistente= "Asistente para hardware nuevo encontrado" ;"Found New Hardware Wizard" 
	$instalacion= "Instalación de hardware" 
	$archivos= "Archivos necesarios" 
	$cambio= "Cambio de configuración del sistema"
 
	while 1 
	sleep(200)
 
	if WinExists( $cambio) then 
	   WinActivate( $cambio) 
	   sleep(200) 
	   Send("!n")        ; (press Alt-n) 
	endif
 
	if WinExists( $instalacion) then 
	   WinActivate( $instalacion) 
	   sleep(200) 
	   $text=WinGetText( $instalacion) 
	   if StringInStr( $text, "El software que está instalando para este hardware") then ;"The software..." 
	     Send("!c") 
	    endIf 
	;  MsgBox($MB_OK, "Autoit Status", $text & stringinstr( $text, "está"), 2 )  ;  sleep(2000) 
	endif
 
	if WinExists($archivos) then 
	   WinActivate($archivos) 
	   sleep(200) 
	   $text=WinGetText( $archivos) 
	   if StringInStr( $text, "Se necesita el archivo") then 
	       ControlClick( "Archivos necesarios", "", "[ID:2]" ) 
	    endIf 
	endif
 
	if WinExists( $asistente) then 
	   WinActivate( $asistente) 
	   sleep( 200) 
	   $text=WinGetText( $asistente)
 
	   if StringInStr( $text, "Desea que Windows se conecte a Windows Update") then ;"Can Windows connect to Windows Update to search for software?" 
	;     ControlCommand( $asistente, "", "[ID:8104]", "Check", "") 
	     sleep(150) 
	;     ControlClick( $asistente, "", "[ID:12324]") 
	     Send("!n") 
	     sleep(100) 
	     Send("!t") 
	     sleep(250) 
	   endif
 
	   $text=WinGetText( $asistente) 
	   if StringInStr( $text, "Este asistente le ayudará a instalar software para:") then ;"This wizard" 
	     sleep(150) 
	     Send("!t") 
	     sleep(250) 
	   endif
 
	   $text=WinGetText( $asistente) 
	   if StringInStr( $text, "No se puede instalar este hardware") then ;"Cannot Install this Hardware" 
	     ControlCommand( $asistente, "", "[ID:1030]", "UnCheck", "") 
	     sleep(200) 
	     ;ControlClick( $asistente, "", "[ID:12325]") 
	      Send("{ENTER}") 
	     sleep(200) 
	   endif
 
	   $text=WinGetText( $asistente) 
	   if StringInStr( $text, "desea que haga el asistente?") then ;"What do you want the wizard to do?" 
	   ControlCommand( $asistente, "", "[ID:1049]", "Check", "") 
	   sleep(200) 
	   ControlClick( $asistente, "", "[ID:12324]") 
	   sleep(200) 
	   endif
 
	   $text=WinGetText( $asistente) 
	   if StringInStr( $text, "Se recomienda que se conecte a Internet para que el asistente") then 
	   ControlCommand( $asistente, "", "[ID:1065]", "Check", "") 
	   sleep(200) 
	   ControlClick( $asistente, "", "[ID:12324]") 
	   sleep(200) 
	   endif
 
	   $text=WinGetText( $asistente) 
	   if StringInStr( $text, "Finalizar para cerrar") then ;"Click Finish to close the wizard." 
	   ControlClick( $asistente, "", "[ID:12325]") 
	   sleep(250) 
	   endif 
	endif
 
	wend