Sublime Text is a code editor with powerful features, but Sublime Text can't input Chinese when running under Linux. How to solve this problem? The following small series will introduce you to the solution that Sublime Text can't input Chinese under Linux.
1. Save the following code sublime_imfix.c
code is as follows:
/*
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);
}
2. Compile the dynamic library:
Code is as follows:
gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
3. Set LD_PRELOAD And start Sublime Text:
The code is as follows:
LD_PRELOAD=. /libsublime-imfix.so sublime_text
In order not to play a long list of things every time you start Sublime Text, write a script to start Sublime:
The code is as follows:
#! /bin/bash
SUBLIME_HOME=“/opt/sublime_text”
LD_LIB=$SUBLIME_HOME/libsublime-imfix.so
sh -c “LD_PRELOAD=$LD_LIB $SUBLIME_HOME/sublime_text $@”
Put libsublime-imfix.so in the Sublime Text directory and modify the SUBLIME_HOME in the script so that Sublime Text can be entered in Chinese.
The above is the introduction of the solution that Sublime Text can't input Chinese under Linux. Just follow the above steps and you can input Chinese in Sublime Text. Is it very simple? Give it a try.
When you want to use the Ubuntu system, you dont have to reinstall the Ubuntu syste
Windows 10 is the latest Windows system. At present, only the trial version has bee
Users in the Linux system found that the iptables could not be started in the linode, and the follow
Usually the network card name is automatically recognized by the system and exists
How to identify the useradd and adduser commands in Ubuntu
Usage of the Linux tail command
View the Linux version of the skill
Linux can not delete users with urserdel?
How to compile and install Mono notes in Linux system
Steps for installing Go language on Linux system
What should I do if I install a graphics card driver error on Ubuntu 13.10?
Linux settings wget download http /https proxy method
How to modify the SSH port number in Linux?
Win7 system cmd can not run the error and solution after the input eccmd -info command error 4319.
What should I do if the Win7 computer search function is not available?
Dapai mobile assistant to connect the phone without a solution
Win7 "can not measure video playback performance" how to do
Win7 comes with desktop notes how to set off reminder tutorial
Win8 system one button to close the Metro interface trick
Win10 Mobile Preview 14332 update content summary and function demonstration
Tianya Mingyue knife Qinchuan Lingxi point distribution specific location
Why is the system's task manager locked?
Play Win 7 must understand 52 English words and abbreviations