Lazarus uses a different method to preview the key and does not use CM_DIALOGCHAR.
For example, see TWinControl.DoKeyDownBeforeInterface.
I'm working on converting an old Delphi 5 project where some
custom made components do use CM_DIALOGCHAR / CM_DIALOGKEY.
It will take some time to find out what the original author wanted to do with these messages.
I will have a look at this TWinControl.DoKeyDownBeforeInterface !
Maybe I can make "these things" working in lazarus.
For example ..
procedure TMySpeedButton.CMDialogChar(var aMessage: TCMDialogChar);
begin
with aMessage do
if IsAccel(CharCode, Caption) and CanFocus then
begin
Click;
Result := 1;
end else
inherited;
end;