Con este método, se puede lograr el mismo efecto e incluso mejor, porque no hay un tiempo de espera de 1 segundo.
Código:
@Echo Off
setlocal enableextensions enabledelayedexpansion
chdir /d "%TEMP%"
if not exist "keyboard.com" call :_code[keymake]
goto:_code[%~1]
:_code[]
start "" /b "%~0" keypress
:_keypress
if exist @ (
1>nul 2>&1,set/p "k_p=" 0<@
if "!k_p!" EQU "65" echo. Presionaste A & ping -n 2 localhost > nul
if "!k_p!" EQU "66" echo. Presionaste B & ping -n 2 localhost > nul
1>nul 2>&1,del /f /q @
)
echo: Mientras tanto, mostramos mensajes.
goto :_keypress
:_code[keypress]
keyboard.com & echo.!errorlevel!>@ 2>nul
goto:_code[keypress]
:_code[keymake]
(ECHO.N KEYBOARD.COM
ECHO.E 0000 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
ECHO.R CX
ECHO.000E
ECHO.W0
ECHO.Q)|DEBUG 1>NUL 2>&1
GOTO:EOF
¡Un saludo!
PD: Lo malo es que no funciona con ansi.sys ni siquiera sé bien por qué, pero parece ser que el command.com interrumpe la ejecución del hilo principal y se la da al hilo secundario, es algo raro, pero bueh, usando el método de toda la vida para los batch games no hay ningún problema.