Sublime Text 2 is a code editor. If you want to input Chinese, you need to use the fcitx input method. Recently, some netizens have encountered the situation that Sublime Text 2 cannot use the fcitx input method. The following small series will introduce you to Ubuntu. Sublime Text 2 cannot switch the solution to the fcitx input method.
Save to save this following code ~ /sublime-imfix.c
/*
sublime-imfix.c
Use LD_PRELOAD To interpose some function to fix sublime input method support for linux.
By Cjacker Huang "jianzhong.huang at i-soft.com.cn"
gcc -shared -o libsublime-imfix. So sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
LD_PRELOAD=. /libsublime-imfix.so sublime_text
*/
#include "gtk/gtk.h"
#include "gdk/gdkx.h"
typedef GdkSegment GdkRegionBox;
struct _GdkRegion
{
long size;
long numRects;
GdkRegionBox *rects;
GdkRegionBox extents;
};
GtkIMContext *local_context;
void
gdk_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;
//The caret width is 2;
//Maybe sometimes we will make a mistake, but for most of the time, it should be the caret.
if(rectangle-"width == 2 && GTK_IS_IM_CONTEXT(local_context)) {
gtk_im_context_set_cursor_location(local_context, rectangle);
}
}
//this is needed, for example, if you input something in file dialog And return back the edit area
//context will lost, so here we set it again.
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;
}< Br>
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);
Install C/C++ build environment and gtk libgtk2.0-dev
sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev
Use the terminal to enter the sublime-imfix.c directory, run the following command
gcc -shared -o libsublime-imfix.so sublime-imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
Modify /usr/share/with a text editor Applications/sublime.desktop file (this is what you built when you installed sublime text 2), found at the beginning of & Ldquo;Exec=” lines (with two lines), modify subl to
bash -c ‘LD_PRELOAD=~/libsublime-imfix.so subl’
OK, at startup Click on sublime text 2 to enter Chinese! (Note: The Chinese input method cannot be switched when the terminal input subl is turned on.)
The above is the introduction of the Ubuntu Sublime Text 2 solution that cannot use the fcitx input method. After modifying the subl according to the method described in this article, The launcher launches Sublime Text 2.
Linux system network performance can be tested with tools. The main test tools are
After installing Linux system with vps, I found that there are not enough available partitions. This
A lot of users have problems when using the 3.16 kernel Linux system. The solution
In order to protect the security of computer data, you need to periodically back up
Using Linux routing and forwarding function to share the Internet
Linux installation VMware Tools virtual machine graphic tutorial
Linux settings wget download http /https proxy method
Summary of methods for entering the Linux terminal interface
What is the meaning of Linux beginners learning commands?
Linux how to install and configure rz/sz command
Linux can not completely remove LibreOffice how to solve?
How does Linux modify the PATH path of sudo?
Ubuntu wireless network card search can not find a solution
Linux rename command file renaming usage summary
What should I do if the Windows and Virtualbox port number mapping fails?
How to use win8 speech recognition
Win7 Task Manager error has been disabled by the system administrator What to do
Windows Server 2008 initial login password modification skills
Win8 system can not connect to the network solution
Win10 sets the batch processing method for timed shutdown
Building an unlimited capacity mail server
Win10 system how to set the default browser does not like the default IE