Qt5,Qt6: map unicode chars to lcl keys where possible. issue #41452

This commit is contained in:
zeljan1 2025-02-22 18:18:03 +01:00
parent baef0f2c7a
commit 17407a1e4d
2 changed files with 26 additions and 2 deletions

View File

@ -3496,7 +3496,19 @@ begin
// Translates a Qt4 Key to a LCL VK_* key
if KeyMsg.CharCode = 0 then
begin
ACharCode := QtKeyToLCLKey(QKeyEvent_key(QKeyEventH(Event)), Text, QKeyEventH(Event));
{$IFDEF HASX11}
//key is unicode char, nativeVirtualKey is XKey.
if (QKeyEvent_key(QKeyEventH(Event)) >= $100) and (QKeyEvent_key(QKeyEventH(Event)) < $017f) then
ACharCode := QtKeyToLCLKey((QKeyEvent_nativeVirtualKey(QKeyEventH(Event)) - $0100) or $0080, Text, QKeyEventH(Event))
else
if (QKeyEvent_key(QKeyEventH(Event)) >= $0180) and (QKeyEvent_key(QKeyEventH(Event)) <= $024F) then
ACharCode := QtKeyToLCLKey((QKeyEvent_nativeVirtualKey(QKeyEventH(Event)) - $0180) or $0080, Text, QKeyEventH(Event))
else
if (QKeyEvent_key(QKeyEventH(Event)) >= $0400) and (QKeyEvent_key(QKeyEventH(Event)) <= $04ff) then
ACharCode := QtKeyToLCLKey((QKeyEvent_key(QKeyEventH(Event)) - $0360), Text, QKeyEventH(Event))
else
{$ENDIF}
ACharCode := QtKeyToLCLKey(QKeyEvent_key(QKeyEventH(Event)), Text, QKeyEventH(Event));
KeyMsg.CharCode := ACharCode;
end;

View File

@ -3494,7 +3494,19 @@ begin
// Translates a Qt4 Key to a LCL VK_* key
if KeyMsg.CharCode = 0 then
begin
ACharCode := QtKeyToLCLKey(QKeyEvent_key(QKeyEventH(Event)), Text, QKeyEventH(Event));
{$IFDEF HASX11}
//key is unicode char, nativeVirtualKey is XKey.
if (QKeyEvent_key(QKeyEventH(Event)) >= $100) and (QKeyEvent_key(QKeyEventH(Event)) < $017f) then
ACharCode := QtKeyToLCLKey((QKeyEvent_nativeVirtualKey(QKeyEventH(Event)) - $0100) or $0080, Text, QKeyEventH(Event))
else
if (QKeyEvent_key(QKeyEventH(Event)) >= $0180) and (QKeyEvent_key(QKeyEventH(Event)) <= $024F) then
ACharCode := QtKeyToLCLKey((QKeyEvent_nativeVirtualKey(QKeyEventH(Event)) - $0180) or $0080, Text, QKeyEventH(Event))
else
if (QKeyEvent_key(QKeyEventH(Event)) >= $0400) and (QKeyEvent_key(QKeyEventH(Event)) <= $04ff) then
ACharCode := QtKeyToLCLKey((QKeyEvent_key(QKeyEventH(Event)) - $0360), Text, QKeyEventH(Event))
else
{$ENDIF}
ACharCode := QtKeyToLCLKey(QKeyEvent_key(QKeyEventH(Event)), Text, QKeyEventH(Event));
KeyMsg.CharCode := ACharCode;
end;