Когда ваша клавиатурная форма получает фокус, часть получаемого сообщения является дескриптором окна, потерявшего фокус (wParam). Сделайте то, что вам нужно, и верните фокус в окно, которое потеряло фокус.
РЕДАКТИРОВАТЬ: см. Документацию по WM_SETFOCUS
РЕДАКТИРОВАТЬ 2:
Кроме того, вы можете использовать следующее при создании вашей пользовательской формы:
procedure TMainForm.CreateParams(var Params: TCreateParams) ;
//const WS_EX_NOACTIVATE = $8000000;
begin
inherited;
Params.ExStyle := Params.ExStyle + WS_EX_NOACTIVATE;
end;
Чтобы предотвратить активацию вашей формы (если сфокусироваться на другой форме). Как я уже упоминал в своем комментарии, вам, вероятно, следует использовать неоконные элементы управления для ключей.