key down

From Free Pascal wiki

Deutsch (de) | English (en)


The OnKeyDown event of an object allows you to check what key the user has pressed.

Note that the procedure keeps track of shift/alt/ctrl etc keys separately (in Shift) from the "regular" keys (in Key) - see the procedure signature in the example.


Note: OnKeyDown doesn't support Unicode characters. If you need Unicode characters but no control characters, use OnUTF8KeyPress.


Note: When a key is hold down the OnKeyDown event is re-triggered. The first re-triggering event is after approx 500 ms and the next ones cycle between 30 and 50 ms.


  ...LCLType, Dialogs, ...;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  // Example: checking for simple keys:
  if (Key = VK_DOWN) or
     (Key = VK_UP) then
    ShowMessage('Pressed arrow up or down key');
  // Check for Alt-F2
  if (Key = VK_F2) and (ssAlt in Shift) then
    ShowMessage('Alt F2 was pressed')
  Key := 0; // Necessary for some widgetsets, e.g. Cocoa, in order to disable processing in subsequent elements.

See also