RE:Como detecto Ctrl, F11 F12
Como sabrás la función readkey de la Unit CRT devuelve el codigo ASCII de la tecla presionada, si se trata de una tecla especial (las grises) primero devuelve 0 y hay que volver a llamar a esta función para tomar el segundo codigo pero lamentablemente no reconoce las teclas F11 y F12 pues readkey fue diseñada para teclados estandar y no extendidos.
Hay varias formas de solucionar esto, una de ellas es leer directamente el puerto del teclado, algo asi como
codigo:=port[$60];
o bien programar una interrupción que se dispare cuando ocurre la interrupción $9 de la BIOS, esto es lo mejor ya que podrás tomar el codigo de rastreo de la tecla y luego hacer una conversión a ASCII (por ejemplo la tecla ESC tiene codigo de rastreo 1 pero devuelve el codigo ASCII 27).
Pero para no complicarte la vida y no reinventar la rueda puedes buscar una Unit que haga todo esto por tí.
Esta es una:
http://www.devq.net/pascal/src/keybrd.pas (comentarios en inglés)