diff --git a/demos/Lazarus_Linux_QT6/SimpleOSRBrowser/umainform.pas b/demos/Lazarus_Linux_QT6/SimpleOSRBrowser/umainform.pas index 41da1edb..030f30d8 100644 --- a/demos/Lazarus_Linux_QT6/SimpleOSRBrowser/umainform.pas +++ b/demos/Lazarus_Linux_QT6/SimpleOSRBrowser/umainform.pas @@ -259,9 +259,15 @@ begin QTKeyEventToCEFKeyEvent(QKeyEventH(Event_), TempCefEvent); TempCefEvent.kind := KEYEVENT_RAWKEYDOWN; - Chromium1.SendKeyEvent(@TempCefEvent); CefKeyEventLog(TempCefEvent); - TempCefEvent.kind := KEYEVENT_CHAR; - Chromium1.SendKeyEvent(@TempCefEvent); CefKeyEventLog(TempCefEvent); + //CefKeyEventLog(TempCefEvent); + Chromium1.SendKeyEvent(@TempCefEvent); + + if AdjustCefKeyCharEvent(QKeyEventH(Event_), TempCefEvent) then + begin + TempCefEvent.kind := KEYEVENT_CHAR; + //CefKeyEventLog(TempCefEvent); + Chromium1.SendKeyEvent(@TempCefEvent); + end; end; procedure TMainForm.Panel1QTKeyRelease(Sender: TObject; Event_: QEventH); @@ -271,7 +277,8 @@ begin QTKeyEventToCEFKeyEvent(QKeyEventH(Event_), TempCefEvent); TempCefEvent.kind := KEYEVENT_KEYUP; - Chromium1.SendKeyEvent(@TempCefEvent); CefKeyEventLog(TempCefEvent); + //CefKeyEventLog(TempCefEvent); + Chromium1.SendKeyEvent(@TempCefEvent); end; procedure TMainForm.Panel1Resize(Sender: TObject); diff --git a/source/uCEFLinuxFunctions.pas b/source/uCEFLinuxFunctions.pas index 94f21328..5755141b 100644 --- a/source/uCEFLinuxFunctions.pas +++ b/source/uCEFLinuxFunctions.pas @@ -48,6 +48,7 @@ function GdkEventToWindowsKeyCode(Event: PGdkEventKey) : integer; function GetCefStateModifiers(KeyboardModifiers : QtKeyboardModifiers; NativeModifiers : LongWord) : TCefEventFlags; function GetCefWindowsKeyCode(key : QtKey) : integer; procedure QTKeyEventToCEFKeyEvent(Event_ : QKeyEventH; var aCEFKeyEvent : TCEFKeyEvent); +function AdjustCefKeyCharEvent(Event_ : QKeyEventH; var aCEFKeyEvent : TCEFKeyEvent): boolean; {$IFEND} {$IFDEF FMX} @@ -739,6 +740,23 @@ begin else aCEFKeyEvent.character := aCEFKeyEvent.unmodified_character; end; + +function AdjustCefKeyCharEvent(Event_ : QKeyEventH; var aCEFKeyEvent : TCEFKeyEvent): boolean; +var + TempKey : WideString; +begin + Result := False; + + QKeyEvent_text(Event_, @TempKey); + if (length(TempKey) > 0) then + begin + aCEFKeyEvent.windows_key_code := ord(TempKey[1]); + aCEFKeyEvent.unmodified_character := TempKey[1]; + aCEFKeyEvent.character := aCEFKeyEvent.unmodified_character; + Result := True; + end; +end; + {$IFEND} {$IFDEF FMX} diff --git a/update_CEF4Delphi.json b/update_CEF4Delphi.json index 2e01a96c..a48e2971 100644 --- a/update_CEF4Delphi.json +++ b/update_CEF4Delphi.json @@ -2,7 +2,7 @@ "UpdateLazPackages" : [ { "ForceNotify" : true, - "InternalVersion" : 788, + "InternalVersion" : 789, "Name" : "cef4delphi_lazarus.lpk", "Version" : "140.1.14" }