Exacto, lo que xassiz decia

Sunny, a ver si entiendes.
Primero creamos un archivo con
debug, que podemos o no renombrarlo a .exe (puede ser exe o com).
(echo n keyboard.dat
echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
echo rcx
echo 002E
echo w0
echo q
echo.)>keyboard.dat
type keyboard.dat|debug>NUL 2>&1
del /f/q/a "keyboard.exe">NUL 2>&1
rename "keyboard.dat" "keyboard.exe"
(echo n keyboard.com
echo e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
echo e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
echo e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
echo rcx
echo 002E
echo w0
echo q
echo.)>keyboard.com
type keyboard.com|debug>NUL 2>&1
Este archivo lo utilizamos como comando. Al usarlo, te pide que le de a una tecla.
Luego no pasa nada

Pero lo que sí paso, fue que el valor de
%errorlevel% cambio al valor de la tecla

Así con unos cuantos if..
if %errorlevel%==65 (echo:Es una A)
Podríamos saber todas las letras
