首页 > 系统相关 >终于解决lazarus在linux使用搜狗输入法词组只能输入第一个字的Bug

终于解决lazarus在linux使用搜狗输入法词组只能输入第一个字的Bug

时间:2023-01-29 17:26:44浏览次数:56  
标签:搜狗 输入法 Str string lazarus im context linux commit

之前的lazarus在linux下使用搜狗输入法输入词组时只能输入第一个字,经网友yoozaa和谐^_^提醒,今天终于解决词组输入的Bug。
打开/lazarus/lcl/interfaces/gtk2/gtk2widgetset.inc
将第247--249注释,第251行添加:

im_context_string:='';//添加这行

最后重新编译lazarus就可以完美兼容搜狗输入法。

procedure gtk_commit_cb ({%H-}context: PGtkIMContext; const Str: Pgchar;
  {%H-}Data: Pointer); cdecl;
{$IFDEF WITH_GTK2_IM}
var
  control:TWinControl;
  i:Integer;
{$ENDIF}
begin
  {$IFDEF WITH_GTK2_IM}
  //DebugLn(['gtk_commit_cb ',dbgstr(Str),'="',Str,'"']);
  { fix double normal character input }
  //if not im_context_use then                           //将这3行注释
  //  im_context_string:=Str // key at non-composition   //将这3行注释
  //  else                                               //将这3行注释 
      im_context_string_commit:=Str; // key at composition
  im_context_string:='';//添加这行
  { commit composition string, not key }
  if (im_context_widget<>nil) then
      begin
        im_context_skipdelete:=True;
        Control:=TWinControl(GetNearestLCLObject(im_context_widget));
        SendMessage(control.Handle,LM_IM_COMPOSITION,GTK_IM_FLAG_COMMIT,LPARAM(pchar(im_context_string_commit)));
        im_context_string_commit:='';
      end;
  {$ELSE}
  im_context_string:=Str;
  {$ENDIF}
end;  

 

标签:搜狗,输入法,Str,string,lazarus,im,context,linux,commit
From: https://www.cnblogs.com/qiufeng2014/p/17073239.html

相关文章

  • Linux串口编程
    在嵌入式应用领域中,串口是最为常见的一种硬件通信接口。因为其具备协议简单,硬件电路精简等优势使得串口基本成为MCU、计算机或嵌入式产品的标配接口。本文仅介绍在Linux系......
  • linux--ntp时间同步
    一、ntp时间同步大数据产生与处理系统是各种计算设备集群的,计算设备将统一、同步的标准时间用于记录各种事件发生时序,若计算机时间不同步,这些应用或操作或将无法正常进行......
  • linux--centos制作yum源
    一、制作本地yum源的步骤1、  创建iso存放目录和挂载目录[root@desktop~]#cd/mnt/[root@desktopmnt]#mkdirisoyum_mirror2、  将iso文件上传到iso存放目录......
  • 【Linux命令----版本升级】Golang 在linux升级版本
    原文:http://turbock79.cn/?p=3859在vscode中使用go1.15模块智能加载显示代码时,存在问题,可能是兼容性或其他问题。通过升级golang到1.16以上,可以实现VScode自动加载的正......
  • linux 中awk命令从fasta文件中提取指定的scaffold数据
     awk实现001、awk实现,提取第一个scaffold[root@PC1test]#lsa.fa[root@PC1test]#cata.fa##测试数据>chr1aattccgg>chr2ttccggaaggccttg......
  • CentOS Linux release 7.6 zabbix5.0 安装
    #zabbix安装关方文档https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=centos&os_version=7&components=server_frontend_agent&db=mysql&ws=nginx安......
  • linux网络名词--ip、域名、主机名、uri、url、
    一、ip、域名、主机名定义ip:IP地址就可以访问到每一台主机域名:与ip之间存在对应关系主机名:服务器名+域名主机名和域名区别:1、域名的范围要比主机名大,一个域名下可以有......
  • linux--systemctl、service和chkconfig
    一、systemctl1、centos7下,systemctl可以理解为systemd的一个工具。也可以认为systemctl命令将service和chkconfig命令结合在了一起,它永久性或只在当前会话中启用/禁用服务......
  • Linux 命令 | nslookup
    nslookup(NameServerLookup)是一种网络管理命令。用于从DNS服务器查询域名、IP或其他DNS记录信息。命令格式nslookup[-OPTION][SERVER|IP][DNSSERVER]OP......
  • Linux删除软连接
    概述:如何在linux服务器上正确且安全的删除软连接?例子:touchabc.txttouchzzz.txtecho'testtesttest'>zzz.txtln-szzz.txtzcw示例图:软连接已生效,可以......