Una buena aplicaci¢n de los c¢digos ANSI...Bombas!...
-------------------------------------------------------------------------------

       Bueno, por si no lo sab¡an, el ANSI es un controlador que posee varias
funciones de manejo de pantalla y teclado. Esto £ltimo es lo que nos interesa a
nosotros. [Si no tienen el ANSI.SYS, por favor llamen a Microsoft y compren el
MS_DOS (original por supuesto :-)]...Si consiguieron el controlador, empezamos:
La gran ventaja de ‚ste driver, es la funci¢n de redireccionamiento del tecla_
do. Qu‚ significa esto?? Bueno, esto significa, que ‚ste driver, programado de
una manera tal, puede CAMBIAR LA FUNCION de una tecla espec¡fica. Got it?
       A lo que voy es, que una vez que se carg¢ un ANSI, puedo redefinir las
las teclas de ese sistema.. Por ejemplo : en vez de escribir "DIR C:\WORKS",
podr¡a tocar la tecla "A" directamente. La l¢gica ser¡a ‚sta:

       A <== DIR C:\WORKS <ENTER>

Entonces cada vez que toque la "A", me va a aperecer el contenido de ese dir.
Esta propiedad, se podr¡a utilizar en otro tipo de aplicaciones :-) Por ese mo_
tivo, las "bombas" ANSI son de gran utilidad... Si nosotros logramos incorporar
una de estas bombas en un sistema, podemos tener el control del sistema, para
futuras necesidades.
       Un ejemplo: Tengo un mal d¡a.....todo me sale mal.....y biene un ‚nte
computacional a joder las pelotas. Entonces yo, ya ducho en el tema de las bom_
bas ANSI, le programo una bombita r pida, cosa que apenas la corra, le redirec_
cione la barra espaciadora para que le format‚e el disco. Este tipo no te puede
echar la culpa, ya que lo £nico que le diste fue una linda pantalla de presen_
taci¢n .ANS, pero siempre corremos el riego de que esta persona conozca el tema
de las bombas ANSI y te cague....entonces nos jodemos.

Ac  biene la sint xis de los c¢digos ANSI:

Ojo, no hay que asustarse por los c¢digos raros que aparezcan, la sint xis de
los c¢digos es as¡ y punto.

ESC[x,yH
  Mover el cursor a una posicion absoluta de la pantalla.
  Donde 'x' es la Columna del cursor y 'y' es la Fila de cursor.
  En caso de que no se expliciten par metros, el cursor es movido al principio
  de la pantalla.

ESC[nA
  Mover el cursor en forma relativa para arriba.
  Donde 'n' es la cantidad de lineas que el cursor va a subir.
  En caso de que se llegue al tope de la pantalla, el cursor queda ah¡ quieto.

ESC[nB
  Mover el cursor en forma relativa para abajo.
  Donde 'n' es la cantidad de lineas que el cursor va a bajar.
  En caso de que se llegue al fondo de la pantalla, el cursor queda ah¡ duro.

ESC[nC
  Mover el cursor en forma relativa para la derecha.
  Donde 'n' es la cantidad de columnas que el cursor se va a adelantar.
  En caso de que llegue al fin de la linea, se queda ah¡.

ESC[nD
  Mover el cursor en forma relativa para la izquierda.
  Donde 'n' es la cantidad de columnas que el cursor va a retroceder.
  En caso de que llegue al principio de la pantalla, se queda ah¡.

ESC[s
  Salvar la posicion actual del cursor.
  Esta funci¢n no lleva par metros. Al ejecutarse, la posici¢n del cursor que_
  da grabada, para ser restitu¡da mas tarde con la pr¢x. funci¢n:

ESC[u
  Restaurar la posicion anterior del cursor.
  Esta funci¢n tampoco lleva par metros. Lo que hace es mover el cursor a don_
  de estaba en el momento de ejecutarse la funci¢n anterior.

ESC[2J
  Borrar la pantalla.
  Ning£n par metro... Al ejecutarse borra la pantalla y mueve el cursor al
  principio de la pantalla. (0,0)

ESC[K
  Borrar hacia abajo.
  Otra vez sin par metros... Al ejecutarse borra desde la posici¢n actual del
  cursor, hasta el fin de la pantalla. (Borra tambi‚n el byte a donde apuntaba
  el cursor)

ESC[tecla;"comando";13p
  Redireccionamiento del teclado.
  Ahora bien, ESTA es la funci¢n que nos interesa...
  En TECLA, va el c¢digo de la tecla que queremos redireccionar... Va el c¢di_
  go, NO la tecla en s¡, ok?? Cada tecla tiene un c¢digo, y cada combinaci¢n
  (por ejemplo ALT_Q) tiene otro distinto. Ahora les mandamos una lista con
  los c¢digos de TODAS las combinaci¢nes. (Si se nos olvid¢ alguna, pl¡s ha_
  gannoslo saber).
  Separada de la TECLA por un ; (punto y coma), empieza el string con el que
  queremos reemplazar la tecla...Este string o comando va entre comillas dob_
  les o simples ('' ¢ ""), es lo mismo.
  Ese 13 que est  entre "COMANDO"; y p (min£scula) es el c¢digo de ENTER, ya
  que el Enter no lo podemos representar con ASCIIs.
  Y esa p min£scula, es la funci¢n.
  Por ejemplo si queremos asignarle a F1 (c¢digo 0;59) que pida un directorio,
  quedar¡a esto:

          ESC[0;59;"dir";13p
  Y si queremos que format‚e el disco, quedar¡a esto:

          ESC[0;59;"Echo S|format c:/u";13p
  (El ECHO S|, es para la confirmaci¢n del format, en Castellano obvio. Si
  fuera en Ingl‚s, seria ECHO Y|.)
  Para poder juntar 2 comandos se esriben directamente, sin dejar espacio, Ej:
  Con esto estar¡a redireccionando F1 y F2 para que formateen 2 drives:

ESC[0;59;"Echo S|format c:/u >nul";13pESC[0;60;"Echo S|format d:/u >nul";13p

Tecla                         C¢digo CAPS&+c¢digo CTRL+c¢digo   ALT+c¢digo
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
F1                            0;59      0;84         0;94         0;104
F2                            0;60      0;85         0;95         0;105
F3                            0;61      0;86         0;96         0;106
F4                            0;62      0;87         0;97         0;107
F5                            0;63      0;88         0;98         0;108
F6                            0;64      0;89         0;99         0;109
F7                            0;65      0;90         0;100        0;110
F8                            0;66      0;91         0;101        0;111
F9                            0;67      0;92         0;102        0;112
F10                           0;68      0;93         0;103        0;113
F11                           0;133     0;135        0;137        0;139
F12                           0;134     0;136        0;138        0;140
Home        (Numeric Keypad)  0;71      55           0;119        ÄÄ
Up Arrow    (Numeric Keypad)  0;72      56           (0;141)      ÄÄ
Page Up     (Numeric Keypad)  0;73      57           0;132        ÄÄ
Left Arrow  (Numeric Keypad)  0;75      52           0;115        ÄÄ
Right Arrow (Numeric Keypad)  0;77      54           0;116        ÄÄ
End         (Numeric Keypad)  0;79      49           0;117        ÄÄ
Down Arrow  (Numeric Keypad)  0;80      50           (0;145)      ÄÄ
Page Down   (Numeric Keypad)  0;81      51           0;118        ÄÄ
Insert      (Numeric Keypad)  0;82      48           (0;146)      ÄÄ
Del         (Numeric Keypad)  0;83      46           (0;147)      ÄÄ
Home        (Gray Keypad)     (224;71)  (224;71)     (224;119)    (224;151)
Up Arrow    (Gray Keypad)     (224;72)  (224;72)     (224;141)    (224;152)
Page Up     (Gray Keypad)     (224;73)  (224;73)     (224;132)    (224;153)
Left Arrow  (Gray Keypad)     (224;75)  (224;75)     (224;115)    (224;155)
Right Arrow (Gray Keypad)     (224;77)  (224;77)     (224;116)    (224;157)
End         (Gray Keypad)     (224;79)  (224;79)     (224;117)    (224;159)
Down Arrow  (Gray Keypad)     (224;80)  (224;80)     (224;145)    (224;154)
Page Down   (Gray Keypad)     (224;81)  (224;81)     (224;118)    (224;161)
Insert      (Gray Keypad)     (224;82)  (224;82)     (224;146)    (224;162)
Del         (Gray Keypad)     (224;83)  (224;83)     (224;147)    (224;163)
Print Scrn                    ÄÄ        ÄÄ           0;114        ÄÄ
Pause/Break                   ÄÄ        ÄÄ           0;0          ÄÄ
BackSpace                     8         8            127          (0)
Enter                         13        ÄÄ-          10           (0
Tab                           9         0;15         (0;148)      (0;165)
Nul                           0;3       ÄÄ           ÄÄ           ÄÄ
a                             97        65           1            0;30
b                             98        66           2            0;48
c                             99        66           3            0;46
d                             100       68           4            0;32
e                             101       69           5            0;18
f                             102       70           6            0;33
g                             103       71           7            0;34
h                             104       72           8            0;35
i                             105       73           9            0;23
j                             106       74           10           0;36
k                             107       75           11           0;37
l                             108       76           12           0;38
m                             109       77           13           0;50
n                             110       78           14           0;49
o                             111       79           15           0;24
p                             112       80           16           0;25
q                             113       81           17           0;16
r                             114       82           18           0;19
s                             115       83           19           0;31
t                             116       84           20           0;20
u                             117       85           21           0;22
v                             118       86           22           0;47
w                             119       87           23           0;17
x                             120       88           24           0;45
y                             121       89           25           0;21
z                             122       90           26           0;44
1                             49        33           ÄÄ-          0;120
2                             50        64           0            0;121
3                             51        35           ÄÄ-          0;122
4                             52        36           ÄÄ-          0;123
5                             53        37           ÄÄ-          0;124
6                             54        94           30           0;125
7                             55        38           ÄÄ-          0;126
8                             56        42           ÄÄ-          0;126
9                             57        40           ÄÄ-          0;127
0                             48        41           ÄÄ-          0;129
-                             45        95           31           0;130
=                             61        43           ÄÄ-          0;131
[                             91        123          27           0;26
]                             93        125          29           0;27
                             92        124          28           0;43
;                             59        58           ÄÄ-          0;39
'                             39        34           ÄÄ-          0;40
,                             44        60           ÄÄ-          0;51
                            46        62           ÄÄ-          0;52
/                             47        63           ÄÄ-          0;53
`                             96        126          ÄÄ-          (0;41)
Enter (Numeric Keypad)        13        ÄÄ-          10           (0;166)
/     (Numeric Keypad)        47        47           (0;142)      (0;74)
*     (Numeric Keypad)        42        (0;144)      (0;78)       ÄÄ-
-     (Numeric Keypad)        45        45           (0;149)      (0;164)
+     (Numeric Keypad)        43        43           (0;150)      (0;55)
5     (Numeric Keypad)        (0;76)    53           (0;143)      ÄÄ-

Aclaraci¢nes:
^^^^^^^^^^^^^
       Si alguien ya conoce los c¢digos ANSI, sabr  que hay mas funciones, pe_
ro no vienen al caso. En t¢dos los c¢digos puse ESC.. Relamente no es ESC, sino
que su ASCII. Su ASCII es el 27 decimal (1b hexa), el s¡mbolo es la flecha a_
puntando a la izquierda. Para que un .ANS tome efecto, hay que TYPEarlo.
       Un consejo....no manden la bomba 'pelada', sino va a ser MUY obvio...
M ndenla en alguna pantalla ANSI ya hecha (preferiblemente al final, por si
por una de esas casualidades, ese ANSI ya redirecciona esa tecla).

  Esto es todo por hoy.
  Hasta el pr¢ximo cap¡tulo..... Drako.