sábado, 28 de mayo de 2011

Turbo Sheller con corazón de AutoHotkey

Hasta ahora, la combinación de teclas que lanzaban TS eran Ctrl-X, con esta mejora podréis lanzarlo con la que queráis e incluso con el joystick.

Lo que voy a hacer es substituir tstart.exe, por un ejecutable que lance un script de AHK, que siempre este cargado (1 MB de ram), permitiéndonos ahorrar incluso memoria al no arrancar el SO con TS cargado en segundo plano, que son 20 mb de ram (Dichoso .NET).
Directamente lo lanzará el script al pulsar las teclas Ctrl-T y si se queda en 2º plano lo pondrá en primero.

Editando el script con un simple bloc de notas podremos poner todos los atajos de teclado, que nos podamos imaginar, volumen, ejecutar aplicaciones y lo mas importante, se puede incluir cualquier botón o palanca de control del joystick, basta con deciros que hay scrpts de AHK, que permiten manejar el puntero con el joystick. El limite sera solo la imaginación. El código fuente lo tengo preparado, comentado a tope, para que no os liéis y podáis editarlo a voluntad. ademas en http://www.autohotkey.com, teneis una referencia, con la que podréis hacer prácticamente cualquier cosa, es casi un lenguaje de programación.

Además esta la novedad del salvapantallas, como os dije con minlogin dejaba de funcionar, pero la rutina que he creado en el script, usando los mismos parámetros de Windows y su salvapantallas en propiedades de pantalla, la reactiva añadiéndole la gran ventaja de que ahora reconoce en el tiempo inactivo, los botones y palancas de control. Lo que permite poner cualquier salvapantallas y que solo moviendo una palanca o pulsado un boton del panel de control, se quite. Mismamente "Mame Screensaver", que permite que mame lanze un juego aletoriamente, cada lapso de tiempo indicado, independientemente de que frontend usemos, se puede poner de manera fácil y vendrá en la próxima versión de RetrOS.

Os pongo lo que llevo de código, sacaré una actualización a parte para los que tenéis versiones antiguas de RetrOS, lo podáis disfrutar.

Aún quiero añadir un par de entradas para subir y bajar el volumen:




;Solo se ejecuta al arrancar, lee del registro y ejecuta el Frontend.

RegRead, FrontEnd, HKEY_LOCAL_MACHINE, SOFTWARE\TurboSheller, FrontEnd

run, %FrontEnd%

#MaxHotkeysPerInterval 500
#Persistent ;Se ejecuta constantemente.
inicio:
RegRead, ScreenSCR, HKEY_CURRENT_USER, Control Panel\Desktop, SCRNSAVE.EXE, ;Comprueba si Windows tiene configurado algun salvapantallas y lo pasa a una variable.
if (ErrorLevel = 0)
{
RegRead, ScreenTMT, HKEY_CURRENT_USER, Control Panel\Desktop, ScreenSaveTimeOut        ;Si es asi, Inicia el temporizador del salvapantallas
Timeout := ScreenTMT * 1000
SetTimer, screensaver, %Timeout%
Settimer, check, 250
}
else
{
sleep 1000 ; Si no es asi, hace una pausa de 1 seg. y reinicia la lectura del registro.
SetTimer, screensaver, off
goto inicio
}

check: ;Comprueba la posicion del raton, para abortar la ejecucion del salvapantallas.
mousegetpos, cx, cy
if (cx != sx or cy != sy)
{
  if (cx > (sx+1) or cx < (sx-1) or cy > (sy+1) or cy < (sy-1))
  {
 SetTimer, screensaver, on
 mousegetpos, sx, sy
 goto inicio
  }
}
;Joystick 1

GetKeyState, JoyX, JoyX
GetKeyState, JoyY, JoyY
if JoyX > 70
goto evento
else if JoyX < 30
goto evento
else if JoyY > 70
goto evento
else if JoyY < 30
goto evento

;Joystick 2

GetKeyState, 2JoyX, 2JoyX
GetKeyState, 2JoyY, 2JoyY
if 2JoyX > 70
goto evento
else if 2JoyX < 30
goto evento
else if 2JoyY > 70
goto evento
else if 2JoyY < 30
goto evento

;Joystick 3

GetKeyState, 3JoyX, 3JoyX
GetKeyState, 3JoyY, 3JoyY
if 3JoyX > 70
goto evento
else if 3JoyX < 30
goto evento
else if 3JoyY > 70
goto evento
else if 3JoyY < 30
goto evento

;En caso de ser pulsado uno de los botones, aborta la ejecucion del salvapantallas.

~Joy1::
~Joy2::
~Joy3::
~Joy4::
~Joy5::
~Joy6::
~Joy7::
~Joy8::
~Joy9::
~Joy10::
~Joy11::
~Joy12::
~Joy13::
~Joy14::
~Joy15::
~Joy16::
~Joy17::
~Joy18::
~Joy19::
~Joy20::
~Joy21::
~Joy22::
~Joy23::
~Joy24::
~Joy25::
~Joy26::
~Joy27::
~Joy28::
~Joy29::
~Joy30::
~2Joy1::
~2Joy2::
~2Joy3::
~2Joy4::
~2Joy5::
~2Joy6::
~2Joy7::
~2Joy8::
~2Joy9::
~2Joy10::
~2Joy11::
~2Joy12::
~2Joy13::
~2Joy14::
~2Joy15::
~2Joy16::
~2Joy17::
~2Joy18::
~2Joy19::
~2Joy20::
~2Joy21::
~2Joy22::
~2Joy23::
~2Joy24::
~2Joy25::
~2Joy26::
~2Joy27::
~2Joy28::
~2Joy29::
~2Joy30::
~3Joy1::
~3Joy2::
~3Joy3::
~3Joy4::
~3Joy5::
~3Joy6::
~3Joy7::
~3Joy8::
~3Joy9::
~3Joy10::
~3Joy11::
~3Joy12::
~3Joy13::
~3Joy14::
~3Joy15::
~3Joy16::
~3Joy17::
~3Joy18::
~3Joy19::
~3Joy20::
~3Joy21::
~3Joy22::
~3Joy23::
~3Joy24::
~3Joy25::
~3Joy26::
~3Joy27::
~3Joy28::
~3Joy29::
~3Joy30::
goto evento


screensaver:

IfWinActive, MAME

goto inicio    ;evita que se cargue el salvapantallas cuando un juego esta en pausa

else

Process, Exist, %OutputVarPID%    ;Se comprueba si se ha ejecutado ya el salvapantallas, por si las moscas
If ErrorLevel = %OutputVarPID%
{
goto inicio    ;Si no se vuelve a reiniciar todo el proceso
}
else
{
RegRead, ScreenSCR, HKEY_CURRENT_USER, Control Panel\Desktop, SCRNSAVE.EXE
SetTimer, screensaver, off
run, %ScreenSCR% /s ,,, OutputVarPID    ;Si no es asi, se detiene el contador y se inicia guardando el PID
sleep 2000
WinHide, MaLa
WinHide, MAME
}
goto inicio

evento: ;Proceso que se realiza al detectar una entrada de las hotkeys

Process, Exist, %OutputVarPID%    ;Se comprueba si se ha ejecutado ya el salvapantallas, por si las moscas
If ErrorLevel = %OutputVarPID%
{
  Send {f12}
WinShow MaLa    ;Se trae el frontend al frente para ocultar la ventana de MAME al minimizarse en el cierre.
SetTimer, screensaver, on
}
else
{
SetTimer, screensaver, on
}
goto inicio


;A partir de aqui se ponen los atajos para ejecutar aplicaciones, subir y bajar volumen...

^t:: ; Lanza TurboSheller, pulsando Ctr+T
IfWinExist, Turbo Sheller
    WinActivate
else
    run, tsheller.exe
goto inicio

6 comentarios:

ramon dijo...

que gande eres nickeloo!!!

Anónimo dijo...

Muchas gracias!!! se hace lo que se puede... ;-)

Anónimo dijo...

If you experience some emotional or physical problems in your life it can soon be seen in the condition of
your hair, using natural and organic products aids in the recovery of your hair.
As far as medical treatment is concerned, it's often suggested to consult your doctor before any further proceeding. It is designed for professionals so you know you're getting top performance.


Also visit my web-site; hair products

Anónimo dijo...

Make sure you only use clean balls for playing on indoor
simulator.
Solution Options: It was decided to use a web services simulator to simulate the exact functions of a web services backend.
At this time, and in a good location, the leader should set up a few anchors and belay the second climber so he can climb up and hand off the equipment he has been recovering.
Hardness is less then quartz, or ca 6 on Mohs scale.
Usually, would need to follow the entire startup sequence to start any of the airplanes, but FSP also
has the auto start feature, to make it easier for newbie’s.

Anónimo dijo...

With a 60 day maturity, turnips need to be in the ground by August
15. Wood chips: This material contains bark, and wood of various sizes.

Sure, you had your occasional exception that stupidly
borrowed from the local loan shark, but most learned to live on
less.

My web site :: mulching

Anónimo dijo...

In this case, it might be better to start an organic vegetable garden in a raised bed.
In addition, fertilizer restores to the soil nutrients that are absorbed by years of growing
the same vegetable plants in the same location. Try these
top five organic garden weed controls that actually work.


Here is my homepage: composer

Publicar un comentario