Ubuntu下sublime中文无法输入的处理方案
作者:hebedich 发布时间:2023-05-23 16:54:40
注:
只测试了了fcitx,没有测试ibus
因为不是新手教程,所以安装sublime,fcitx,gcc等等的就不说了
若看不懂请留言
下面为实现过程:
copy下列代码,保存为sublime_fix.c
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
typedef GdkSegment GdkRegionBox;
struct _GdkRegion
{
long size;
long numRects;
GdkRegionBox *rects;
GdkRegionBox extents;
};
GtkIMContext *local_context;
voidgdk_region_get_clipbox (const GdkRegion *region , GdkRectangle *rectangle)
{
g_return_if_fail (region != NULL);
g_return_if_fail (rectangle != NULL);
rectangle->x = region->extents.x1;
rectangle->y = region->extents.y1;
rectangle->width = region->extents.x2 - region->extents.x1;
rectangle->height = region->extents.y2 - region->extents.y1;
GdkRectangle rect;
rect.x = rectangle->x;
rect.y = rectangle->y;
rect.width = 0;
rect.height = rectangle->height;
if(rectangle->width == 2 && GTK_IS_IM_CONTEXT(local_context)) {
gtk_im_context_set_cursor_location(local_context, rectangle);
}
}
static GdkFilterReturn event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer im_context)
{
XEvent *xev = (XEvent *)xevent;
if(xev->type == KeyRelease && GTK_IS_IM_CONTEXT(im_context)) {
GdkWindow * win = g_object_get_data(G_OBJECT(im_context),"window");
if(GDK_IS_WINDOW(win))
gtk_im_context_set_client_window(im_context, win);
}
return GDK_FILTER_CONTINUE;
}
void gtk_im_context_set_client_window (GtkIMContext *context , GdkWindow *window)
{
GtkIMContextClass *klass;
g_return_if_fail (GTK_IS_IM_CONTEXT (context));
klass = GTK_IM_CONTEXT_GET_CLASS (context);
if (klass->set_client_window)
klass->set_client_window (context, window);
if(!GDK_IS_WINDOW (window))
return;
g_object_set_data(G_OBJECT(context),"window",window);
int width = gdk_window_get_width(window);
int height = gdk_window_get_height(window);
if(width != 0 && height !=0) {
gtk_im_context_focus_in(context);
local_context = context;
}
gdk_window_add_filter (window, event_filter, context);
}
使用下列命令编译它
gcc -shared -o libsublime-imfix.so sublime_fix.c `pkg-config --libs --cflags gtk+-2.0/` -fPIC
添加运行权限给libsublime-imfix.so
chmod +x libsublime-imfix.so
将编译后的文件libsublime-imfix.so复制到sublime的文件夹下面
在sublime安装目录下新建文件为sublime_sh.sh,copy内容如下:
#!/bin/bash
SUBLIME_HOME="~/software" #你的sublime安装目录
LD_LIB="$SUBLIME_HOME/libsublime-imfix.so"
sh -c "LD_PRELOAD=$LD_LIB $SUBLIME_HOME/sublime $@"
你已经可以通过teminal启动sublime了,运行./sublime_sh.sh即可
若要通过启动器启动sublime,请将你sublime.desktop里面的exec路径修改为sublime_sh.sh所在路径
猜你喜欢
- 最近几年来,基于Web的免费Email系统非常流行,当前,几个著名的免费Email网站基本上已经成为大多数人的选择,建立单纯提供免费Emai
- 人之患在好为人师。陈国华邀请我加入“创业圈”群,并讲讲创业,其实我没什么资格给大家讲创业。我只是觉得现在的年轻人在理解别人说过的话的方面比较
- 从今年1月份韩国正式开通IPTV服务至今,经过9个月的发展,韩国IPTV用户数量已经突破超过100万。韩国数码传媒产业协会近日公布,韩国IP
- perl是一种功能非常强大的脚本语言。主要用于文本的处理,程序员还可以通过perl脚本使用系统调用。如果程序编写的不好,就会为攻击者闯入服务
- 今天我们来讨论一下GoDaddy主机的安全信息问题独立服务器与共享托管账户相比,力量更为强大,也更为多样。你可以在你的服务器上运行及安装几乎
- 目前,利用网上随处可见的攻击软件,攻击者不需要对网络协议的深厚理解基础,即可完成诸如更换Web网站主页,盗取管理员密码,数据库注入和破坏整个
- 前言本文主要给大家介绍了SSH登录服务器后显示基础信息的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:方法如下:安装landsca
- 核心提示:如何让攻击者无缘Webshell那是代码部分的问题,我们做为管理员应该如何加固Web服务器,让攻击者在获得了Webshell之后无
- 全新推出的Discuz! 7.2版本从用户注册登陆应用、社区论坛前后管理两方面着眼,增加和改进了30多处与社区门户运营密切的功能与细节,实现
- 许多坛友常常问我,做Google adsense能赚多少钱?以前,我常这样回答,收入的多少与网站类型、内容有关,与访问量有关,还与广告是否经
- 据国外媒体报道,上周在北京举行的国际万维网大会上,两位Google的工程师展示了下一代的图片搜索。值得注意的是,新的图片搜索不再只是由图片相
- Windows Server自带的互联网信息服务器(Internet Information Server,IIS)是架设网站服务器的常用工
- 信息技术和创新基金会(ITIF)近日公布了一份统计图,列举了全球20大国家互联网的接入情况,包括平均网速和网费两个指标。日本、韩国均处于遥遥
- 内容摘要:本文列出了SQL 注入一些常用语句,站长朋友请注意了,看看您的网站程序是否存在这样的漏洞,一般过滤post或get过滤的
- 1、锚文字:用于链接的文字;可直接影响SEO效果。锚文字可以不同,但是每个锚文字都应该是跟网站主题相关的,而且最好是我们所希望的目标关键词。
- 套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行。套接字的特性有三个属性确定,它们是:
- 下面是一个关键字标签"Keywords"的使用样例:<meta name="keywords"
- 一. jira的简介JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、
- 一、.htaccess的基本作用 .htaccess是一个纯文本文件
- 网站空间是我们做站必不可少的一部分,在这次网络整改的风暴中,倒下了一批IDC服务商,很多站长因为受不了国内的政策,更受不了运营商“一刀切”的