Нужно смотреть в сторону таких событий формы как:
procedure
 FormKeyDownprocedure 
FormKeyUpи внутри этих фунций разобрав посланую комбинацию делать нужную команду.
параметры в этих функции такие 
Key - это номер (индекс) зажатой клавиши см Гугл или пользуйся командой Ord('C')- даст номер (индекс) клавиши с буквой С.  
Shift - множество определено в classesh.inc как:
TShiftState = set of TShiftStateEnum;  где  
TShiftStateEnum = (ssShift, ssAlt, ssCtrl,
    ssLeft, ssRight, ssMiddle, ssDouble,
    // Extra additions
    ssMeta, ssSuper, ssHyper, ssAltGr, ssCaps, ssNum,
    ssScroll,ssTriple,ssQuad,ssExtra1,ssExtra2);      
Пример формы:
- Код: Выделить всё
- unit Unit1; 
 
 {$mode objfpc}{$H+}
 
 interface
 
 uses
 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs;
 
 type
 
 { TForm1 }
 
 TForm1 = class(TForm)
 procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
 private
 { private declarations }
 public
 { public declarations }
 end;
 
 var
 Form1: TForm1;
 
 implementation
 
 {$R *.lfm}
 
 { TForm1 }
 
 procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
 );
 begin
 if  Key= 27 then  //если нажали ESC то выходим из программы
 close;
 if (Key=76) and (ssAlt in Shift) then //если Alt+L - то минимизировать
 application.Minimize;
 end;
 
 end.
 
 
Если же нужно думать про глобальное сочетание клавишь то смотри в сторону глобальных Хуков (Hook) ловушек (но это для винды) как уже написано поищи на форуме.
Ну если консоль то в винде Нужен Hook ^)