2025-11-30:
修正后实则ibus和fcitx这2种输入法都可以正常输入中文。
TRichView在linux同样也存在不支持中文的bug,不过修复方法还是一样,增加输入法事件就可以,修改方法很简单:
打开RVEdit.pas
找到 procedure WMSysChar(var Message: TRVMSysChar); message RVM_SYSCHAR; ,在这行下添加红色代码行:
修正后实则ibus和fcitx这2种输入法都可以正常输入中文。
TRichView在linux同样也存在不支持中文的bug,不过修复方法还是一样,增加输入法事件就可以,修改方法很简单:
打开RVEdit.pas
找到 procedure WMSysChar(var Message: TRVMSysChar); message RVM_SYSCHAR; ,在这行下添加红色代码行:
procedure CMWantSpecialKey(var Message: TCMWantSpecialKey); message CM_WANTSPECIALKEY; procedure WMSysChar(var Message: TRVMSysChar); message RVM_SYSCHAR; {$ifdef LCLGTK2} procedure WMImeComposition (var Message: TLMessage); message LM_IM_COMPOSITION; {$endif} {$IFnDEF RVUNICODEWINDOW} {$IFnDEF USERVTNT_WINDOWHANDLE} procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN; {$ENDIF} procedure WMChar(var Message: TWMChar); message WM_CHAR; {$ENDIF} procedure WMClear(var Message: TRVMessage); message RVM_CLEAR;
在2835行添加以下代码:
{$ifdef LCLGTK2} procedure TCustomRichViewEdit.WMImeComposition (var Message: TLMessage); var IMStr:string; begin if Message.WParam=GTK_IM_FLAG_COMMIT then begin IMStr:=UTF8Decode(pchar(Message.LParam)); //输入的中文字符 if IMStr<>'' then begin InsertTextW(IMStr, False); end; end; inherited; end; {$endif}
最后重新编译就可以输入中文了:


浙公网安备 33010602011771号