Индикация статуса клавиш

Где найти код, который помог бы мне связать текст строки состояния с состоянием клавиш , и др.?

Событие OnIdle происходит каждый раз, когда приложение "не работает". С помощью обработчика данного события можно сделать так, чтобы во время «простоя» приложение могло выполнять второстепенные задачи. В это время оно находится в ожидании какого-то события, например, ввода пользователем новой команды.

TIdleEvent – процедурный тип, имеющий логический параметр Done со значением по умолчанию True. Если Done равен True, после обработки события OnIdle вызывается функция Windows API WaitMessage, передающая управление другим приложениям до тех пор, пока в очереди сообщений вашего приложения не появится новое сообщение. Если Done равно False, WaitMessage не вызывается.

Как же решить нашу задачу в свете вышесказанного?

Добавьте четыре компонента CheckBox к вашему компоненту StatusBar и включите следующее объявление в секцию Private вашей формы:

procedure AppOnIdle(Sender: TObject; var Done: Boolean);
Добавьте в секцию реализации:
procedure TForm1.AppOnIdle(Sender: TObject; var Done: Boolean);
begin
  CheckBox1.Checked := Odd(GetKeyState(VK_CAPITAL));
  CheckBox2.Checked := Odd(GetKeyState(VK_SHIFT));
  CheckBox3.Checked := Odd(GetKeyState(VK_NUMLOCK));
  CheckBox4.Checked := Odd(GetKeyState(VK_SCROLL));
  Done := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnIdle := AppOnIdle;
end;