I just spend yesterday doing this, It seems the ASLDR Service turn on after the user logs on, but not before login. I created a Scheduled task using task Scheduler to start Hcontrol.exe from Program Files (x86)\ASUS\ATK Package\ATK Hotkey folder to run at system startup. Have the task ran by SYSTEM account by clicking change user or group. Add a check in Run with highest privileges box. This made the backlight keyboard to turn on at login screen with a 3-5 sec delay. Yet the light will stay on for 1 min (enough time to login, right?), I'm guessing because it not having help from the ASLDR service, which turns on as you logon. By me already having the Hcontrol.exe running, ASLDR service started another one, as that was its job. This made the keyboard functions unstable. So I had to stop/kill the two Hcontrol.exe processes and restart the ASLDR service. I then remember about using batch files (I used powershell instead, because it had one command to restart a service, while CMD only had start and stop commands. If you don't about batch or powershell, please research it), so I researched the commands to stop the Hcontrol.exe and then to restart the ASLDR service, and scheduled a task to run it after the user login. It took about 1 min for the command to complete, but I think that is because windows is also starting other startups and tasks. The command window that shows up was annoying and found out I can make a .vbs script (again please research it) to run the batch (or powershell), to have the command run invisible. You can use notepad to create the bat, vbs or ps1 files. Also, set the ASLDR service from auto to manual by opening task manager, click on service tab, click on open services, and find the ASLDR service to change it (you may not need to do this, but I did).
This is the vbs script I used to run a powershell script:
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "powershell.exe -file "(Place your script file path here)""", 0, True
This is the vbs script to run a batch:
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "(Place your batch file path here)", 0, True
I think ", 0, True" is to run the command window invisible. Search your windows\system32 or sysWoW64 diractory for wscript.exe, copy and paste it in your batch/script folder (you don't have to do this). Create a scheduled task using task Scheduler and in the actions tab create start a program. Have it set to start wscript.exe and in the Add arguments, type the path to you vbs script. Have the task ran by your user account (default) or andministators. Add a check in Run with highest privileges box. Restart pc and see if it works.