秋·风

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
2025-11-30:
修正后实则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}

最后重新编译就可以输入中文了:

QQ_1764298252208

 

posted on 2025-11-28 10:51  秋·风  阅读(37)  评论(0)    收藏  举报