sublime 中文输入【求助】
Tofloor
poster avatar
mamy920
deepin
2015-12-17 05:15
Author
百度上sublime中文输入,在ubuntu 、linux mint编译都过去了。但是在deepin上编译报错,源码如下:
  1. /*
  2. sublime-imfix.c
  3. Use LD_PRELOAD to interpose some function to fix sublime input method support for linux.
  4. By Cjacker Huang

  5. gcc -shared -o libsublime-imfix.so sublime_imfix.c  `pkg-config --libs --cflags gtk+-2.0` -fPIC
  6. LD_PRELOAD=./libsublime-imfix.so sublime_text
  7. */
  8. #include
  9. #include
  10. typedef GdkSegment GdkRegionBox;

  11. struct _GdkRegion
  12. {
  13.   long size;
  14.   long numRects;
  15.   GdkRegionBox *rects;
  16.   GdkRegionBox extents;
  17. };

  18. GtkIMContext *local_context;

  19. void
  20. gdk_region_get_clipbox (const GdkRegion *region,
  21.             GdkRectangle    *rectangle)
  22. {
  23.   g_return_if_fail (region != NULL);
  24.   g_return_if_fail (rectangle != NULL);

  25.   rectangle->x = region->extents.x1;
  26.   rectangle->y = region->extents.y1;
  27.   rectangle->width = region->extents.x2 - region->extents.x1;
  28.   rectangle->height = region->extents.y2 - region->extents.y1;
  29.   GdkRectangle rect;
  30.   rect.x = rectangle->x;
  31.   rect.y = rectangle->y;
  32.   rect.width = 0;
  33.   rect.height = rectangle->height;
  34.   //The caret width is 2;
  35.   //Maybe sometimes we will make a mistake, but for most of the time, it should be the caret.
  36.   if(rectangle->width == 2 && GTK_IS_IM_CONTEXT(local_context)) {
  37.         gtk_im_context_set_cursor_location(local_context, rectangle);
  38.   }
  39. }

  40. //this is needed, for example, if you input something in file dialog and return back the edit area
  41. //context will lost, so here we set it again.

  42. static GdkFilterReturn event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer im_context)
  43. {
  44.     XEvent *xev = (XEvent *)xevent;
  45.     if(xev->type == KeyRelease && GTK_IS_IM_CONTEXT(im_context)) {
  46.        GdkWindow * win = g_object_get_data(G_OBJECT(im_context),"window");
  47.        if(GDK_IS_WINDOW(win))
  48.          gtk_im_context_set_client_window(im_context, win);
  49.     }
  50.     return GDK_FILTER_CONTINUE;
  51. }

  52. void gtk_im_context_set_client_window (GtkIMContext *context,
  53.           GdkWindow    *window)
  54. {
  55.   GtkIMContextClass *klass;
  56.   g_return_if_fail (GTK_IS_IM_CONTEXT (context));
  57.   klass = GTK_IM_CONTEXT_GET_CLASS (context);
  58.   if (klass->set_client_window)
  59.     klass->set_client_window (context, window);

  60.   if(!GDK_IS_WINDOW (window))
  61.     return;
  62.   g_object_set_data(G_OBJECT(context),"window",window);
  63.   int width = gdk_window_get_width(window);
  64.   int height = gdk_window_get_height(window);
  65.   if(width != 0 && height !=0) {
  66.     gtk_im_context_focus_in(context);
  67.     local_context = context;
  68.   }
  69.   gdk_window_add_filter (window, event_filter, context);
  70. }
Copy the Code



编译命令:gcc -shared -o libsublime-imfix.so sublime_imfix.c  `pkg-config --libs --cflags gtk+-2.0` -fPIC
依赖包:libgtk2.0-dev
编码报错如下:
  1. meyer@Meyer-pc:~$ gcc -shared -o libsublime-imfix.so sublime_imfix.c  `pkg-config --libs --cflags gtk+-2.0` -fPIC
  2. /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreetype.a(ftinit.o): relocation R_X86_64_32 against `tt_driver_class' can not be used when making a shared object; recompile with -fPIC
  3. /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreetype.a: 无法添加符号: 错误的值
  4. collect2: error: ld returned 1 exit status
Copy the Code

求大神帮忙,是不是缺少什么包

Reply Favorite View the author
All Replies
1 / 2
To page
macaiyun0629
deepin
2015-12-17 05:52
#1
应用商店有这个软件,直接安装并没有什么问题,而且也可以在官方下载已编译版
Reply View the author
mamy920
deepin
2015-12-17 05:54
#2
https://bbs.deepin.org/post/34133
应用商店有这个软件,直接安装并没有什么问题,而且也可以在官方下载已编译版 ...

官方的不能中文输入。我这个是 编译中文输入的lib。
Reply View the author
macaiyun0629
deepin
2015-12-17 05:57
#3
如图,此处只为充字数
Reply View the author
mamy920
deepin
2015-12-17 18:10
#4
https://bbs.deepin.org/post/34133
如图,此处只为充字数

你这是在 deepin上么?是2015 bate上安装的么,中文输入是怎么解决的。
Reply View the author
cxbii
deepin
2015-12-17 18:57
#5
请直接安装深度商店中的版本。

这个版本我们确定没有问题
Reply View the author
mamy920
deepin
2015-12-17 19:15
#6
https://bbs.deepin.org/post/34133
请直接安装深度商店中的版本。

这个版本我们确定没有问题

可是不能切换中文输入。
Reply View the author
cxbii
deepin
2015-12-17 19:47
#7
https://bbs.deepin.org/post/34133
可是不能切换中文输入。




没问题啊
Reply View the author
mamy920
deepin
2015-12-17 19:50
#8
{:4_108:} 我的  打死按ctrl+空格,就是不切换。。。。。
Reply View the author
cxbii
deepin
2015-12-17 21:19
#9
https://bbs.deepin.org/post/34133
我的  打死按ctrl+空格,就是不切换。。。。。

这样吧,我说下我的环境,我是15 beta,在商店安装的sublime ,版本是2.0的
你的呢?
Reply View the author
mamy920
deepin
2015-12-18 00:02
#10
https://bbs.deepin.org/post/34133
这样吧,我说下我的环境,我是15 beta,在商店安装的sublime ,版本是2.0的
你的呢? ...

我的也是  环境 15 bate 商店安装的 sublime 版本2.0.2-7,我可能大概知道为什么我不能中文输入了,跟环境应该有关系,因为是我昨天晚上干了一些坏事可能导致的,设置了一些东西,可能会导致.o文件有缺失什么的。
Reply View the author
cxbii
deepin
2015-12-18 00:16
#11
https://bbs.deepin.org/post/34133
我的也是  环境 15 bate 商店安装的 sublime 版本2.0.2-7,我可能大概知道为什么我不能中文输入了,跟环 ...

{:4_97:} 你在逗我
Reply View the author
mamy920
deepin
2015-12-18 00:56
#12
本帖最后由 mamy920 于 2015-12-17 16:57 编辑

好吧。。刚刚重装系统,还是不能输入。
系统版本:

系统安装时间:

我也不知道神马情况了。。。。

Reply View the author
mamy920
deepin
2015-12-18 01:01
#13

看日志一直出现这个错误:
(sublime_text:1160): Gdk-WARNING **: /build/gtk+2.0-GqlFUP/gtk+2.0-2.24.29/gdk/x11/gdkdrawable-x11.c:952 drawable is not a pixmap or window

详细日志:
.xsession-errors
Reply View the author
macaiyun0629
deepin
2015-12-18 03:16
#14
卸了,并把配置文件也删了,然后重装
Reply View the author
mamy920
deepin
2015-12-18 03:49
#15
https://bbs.deepin.org/post/34133
卸了,并把配置文件也删了,然后重装

卸载后,把系统中所有关于与sublime的文件全部干掉。然后重启,然后在安装。还是不行。算了 不弄了。
Reply View the author
Lyvnee
deepin
2015-12-18 04:12
#16
我这边subl也无法输入中文
Reply View the author
cxbii
deepin
2015-12-18 19:15
#17
https://bbs.deepin.org/post/34133
卸载后,把系统中所有关于与sublime的文件全部干掉。然后重启,然后在安装。还是不行。算了 不弄了。 ...

我上报下吧,你的那个日志文件应该可以帮我们解决问题
Reply View the author
cxbii
deepin
2015-12-21 19:08
#18
楼主,请终端执行:
env

然后把终端的输出全部粘贴上来,我们的开发者在确定问题
Reply View the author
mamy920
deepin
2015-12-22 06:26
#19
本帖最后由 mamy920 于 2015-12-21 22:29 编辑
https://bbs.deepin.org/post/34133
楼主,请终端执行:
env

我按照https://bbs.deepin.org/post/34253这个升级fcitx 又变的可以输入了。不知道是神马情况。。。
执行以后:
  1. XDG_VTNR=7
  2. SSH_AGENT_PID=1053
  3. XDG_SESSION_ID=1
  4. CLUTTER_IM_MODULE=xim
  5. XDG_GREETER_DATA_DIR=/var/lib/lightdm/data/meyer
  6. TERM=xterm
  7. SHELL=/bin/bash
  8. QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
  9. USER=meyer
  10. LS_COLORS=bd=38;5;68;1:ca=38;5;17:cd=38;5;132;1:di=38;5;105:do=38;5;127:ex=38;5;80:pi=38;5;126:fi=38;5;167:ln=38;5;63:mh=38;5;99;1:or=48;5;197;38;5;228;1:ow=38;5;220;1:sg=48;5;234;38;5;100;1:su=38;5;9;1:so=38;5;197:st=38;5;86;48;5;234:tw=48;5;235;38;5;139;3:*LS_COLORS=48;5;89;38;5;197;1;3;4;7:*.BAT=38;5;108:*.exe=38;5;196:*.PL=38;5;160:*.asm=38;5;240;1:*.awk=38;5;148;1:*.bash=38;5;173:*.bat=38;5;108:*.c=38;5;110:*.cc=38;5;24;1:*.ii=38;5;24;1:*.cfg=1:*.cl=38;5;204;1:*.coffee=38;5;100;1:*.conf=38;5;221:*.C=38;5;24;1:*.cp=38;5;24;1:*.cpp=38;5;24;1:*.cxx=38;5;24;1:*.c++=38;5;24;1:*.ii=38;5;24;1:*.cs=38;5;74;1:*.css=38;5;91:*.csv=38;5;78:*.ctp=38;5;95:*.diff=48;5;197;38;5;232:*.enc=38;5;192;3:*.eps=38;5;33;1:*.etx=38;5;172:*.ex=38;5;148;1:*.example=38;5;225;1:*.git=38;5;197:*.gitignore=38;5;240:*.go=38;5;111:*.h=38;5;81:*.H=38;5;81:*.hpp=38;5;81:*.hxx=38;5;81:*.h++=38;5;81:*.tcc=38;5;81:*.f=38;5;81:*.for=38;5;81:*.ftn=38;5;81:*.s=38;5;81:*.S=38;5;81:*.sx=38;5;81:*.hi=38;5;240:*.hs=38;5;199;1:*.htm=38;5;125;1:*.html=38;5;9;1:*.info=38;5;101:*.ini=38;5;123:*.java=38;5;142;1:*.jhtm=38;5;125;1:*.js=38;5;42:*.jsm=38;5;42:*.jsm=38;5;42:*.json=38;5;213:*.jsp=38;5;45:*.lisp=38;5;204;1:*.log=38;5;190:*.lua=38;5;34;1:*.m=38;5;130;3:*.mht=38;5;129:*.mm=38;5;130;3:*.M=38;5;130;3:*.map=38;5;58;3:*.markdown=38;5;184:*.md=38;5;184:*.mf=38;5;220;3:*.mfasl=38;5;73:*.mi=38;5;124:*.mkd=38;5;184:*.mtx=38;5;36;3:*.nfo=38;5;220:*.o=38;5;240:*.pacnew=38;5;33:*.patch=48;5;197;38;5;232;1:*.pc=38;5;100:*.pfa=38;5;43:*.pgsql=38;5;222:*.php=38;5;99:*.pl=38;5;214:*.po=38;5;176:*.pot=38;5;206;1:*.plt=38;5;204;1:*.pm=38;5;197;1:*.pod=38;5;172;1:*.py=38;5;41:*.pyc=38;5;245:*.rb=38;5;192:*.rdf=38;5;144:*.rst=38;5;67:*.ru=38;5;142:*.scm=38;5;204;1:*.sed=38;5;130;1:*.sfv=38;5;197:*.sh=38;5;113:*.signature=38;5;206:*.sql=38;5;222:*.srt=38;5;116:*.sty=38;5;58:*.sug=38;5;44:*.t=38;5;28;1:*.tcl=38;5;64;1:*.tdy=38;5;214:*.tex=38;5;172:*.textile=38;5;106:*.tfm=38;5;64:*.tfnt=38;5;140:*.theme=38;5;109:*.txt=38;5;192:*.list=38;5;44:*.save=38;5;240:*.urlview=38;5;85:*.vim=38;5;14:*.vimrc=38;5;13:*.viminfo=38;5;240;1:*.xml=38;5;199:*.yml=38;5;208:*.zsh=38;5;173:*.bashrc=38;5;5:*README=38;5;220;1:*Makefile=38;5;196:*MANIFEST=38;5;243:*pm_to_blib=38;5;240:*.1=38;5;240;1:*.2=38;5;220;1:*.3=38;5;196;1:*.7=38;5;196;1:*.1p=38;5;160:*.3p=38;5;160:*.am=38;5;242:*.in=38;5;242:*.old=38;5;242:*.out=38;5;44;1:*.bmp=38;5;33:*.cdr=38;5;33:*.gif=38;5;33:*.ico=38;5;33:*.jpeg=38;5;33:*.jpg=38;5;33:*.JPG=38;5;33:*.png=38;5;33:*.svg=38;5;33;1:*.xpm=38;5;33:*.32x=38;5;137:*.A64=38;5;82:*.a00=38;5;11:*.a52=38;5;112:*.a64=38;5;82:*.a78=38;5;112:*.adf=38;5;35:*.atr=38;5;213:*.cdi=38;5;124:*.fm2=38;5;35:*.gb=38;5;203:*.gba=38;5;205:*.gbc=38;5;204:*.gel=38;5;83:*.gg=38;5;138:*.ggl=38;5;83:*.j64=38;5;102:*.nds=38;5;199:*.nes=38;5;160:*.rom=38;5;59;1:*.sav=38;5;220:*.sms=38;5;33:*.st=38;5;208;1:*.iso=38;5;9;1:*.nrg=38;5;124:*.qcow=38;5;141:*.VOB=38;5;99:*.IFO=38;5;99:*.BUP=38;5;99:*.MOV=38;5;99:*.3gp=38;5;99:*.3g2=38;5;99:*.asf=38;5;99:*.avi=38;5;99:*.divx=38;5;99:*.f4v=38;5;99:*.flv=38;5;99:*.m2v=38;5;99:*.mkv=38;5;99:*.mov=38;5;99:*.mp4=38;5;99:*.mpg=38;5;99:*.mpeg=38;5;99:*.ogm=38;5;99:*.ogv=38;5;99:*.rmvb=38;5;99:*.sample=38;5;99;1:*.ts=38;5;99:*.vob=38;5;99:*.webm=38;5;99:*.wmv=38;5;99:*.S3M=38;5;69;1:*.aac=38;5;69:*.cue=38;5;69:*.dat=38;5;69:*.dts=38;5;69;1:*.fcm=38;5;69:*.flac=38;5;69;1:*.m3u=38;5;69:*.m3u8=38;5;69:*.m4=38;5;69;3:*.m4a=38;5;69;1:*.mid=38;5;69:*.midi=38;5;69:*.mod=38;5;69:*.mp3=38;5;69:*.oga=38;5;69:*.ogg=38;5;69:*.s3m=38;5;69;1:*.sid=38;5;69;1:*.spl=38;5;69:*.wv=38;5;69:*.wvc=38;5;69:*.ape=38;5;69:*.afm=38;5;58:*.pfb=38;5;58:*.pfm=38;5;58:*.ttf=38;5;66:*.ttc=38;5;66:*.pcf=38;5;65:*.psf=38;5;64:*.bak=38;5;222;1:*.bin=38;5;228:*.pid=38;5;228:*.state=38;5;228:*.swo=38;5;228:*.swp=38;5;228:*.tmp=38;5;228:*.un~=38;5;228:*.zcompdump=38;5;228:*.zwc=38;5;228:*.db=38;5;147:*.dump=38;5;147:*.sqlite=38;5;147:*.typelib=38;5;147:*.7z=38;5;140:*.a=38;5;220:*.apk=38;5;148;3:*.arj=38;5;220:*.bz2=38;5;220:*.deb=38;5;215;1:*.ipk=38;5;220:*.jad=38;5;220:*.jar=38;5;220:*.nth=38;5;220:*.sis=38;5;220:*.part=38;5;220;1:*.r00=38;5;220:*.r01=38;5;220:*.r02=38;5;220:*.r03=38;5;220:*.r04=38;5;220:*.r05=38;5;220:*.r06=38;5;220:*.r07=38;5;220:*.r08=38;5;220:*.r09=38;5;220:*.r10=38;5;220:*.r100=38;5;220:*.r101=38;5;220:*.r102=38;5;220:*.r103=38;5;220:*.r104=38;5;220:*.r105=38;5;220:*.r106=38;5;220:*.r107=38;5;220:*.r108=38;5;220:*.r109=38;5;220:*.r11=38;5;220:*.r110=38;5;220:*.r111=38;5;220:*.r112=38;5;220:*.r113=38;5;220:*.r114=38;5;220:*.r115=38;5;220:*.r116=38;5;220:*.r12=38;5;220:*.r13=38;5;220:*.r14=38;5;220:*.r15=38;5;220:*.r16=38;5;220:*.r17=38;5;220:*.r18=38;5;220:*.r19=38;5;220:*.r20=38;5;220:*.r21=38;5;220:*.r22=38;5;220:*.r25=38;5;220:*.r26=38;5;220:*.r27=38;5;220:*.r28=38;5;220:*.r29=38;5;220:*.r30=38;5;220:*.r31=38;5;220:*.r32=38;5;220:*.r33=38;5;220:*.r34=38;5;220:*.r35=38;5;220:*.r36=38;5;220:*.r37=38;5;220:*.r38=38;5;220:*.r39=38;5;220:*.r40=38;5;220:*.r41=38;5;220:*.r42=38;5;220:*.r43=38;5;220:*.r44=38;5;220:*.r45=38;5;220:*.r46=38;5;220:*.r47=38;5;220:*.r48=38;5;220:*.r49=38;5;220:*.r50=38;5;220:*.r51=38;5;220:*.r52=38;5;220:*.r53=38;5;220:*.r54=38;5;220:*.r99=38;5;220:*.r56=38;5;220:*.r69=38;5;220:*.r58=38;5;220:*.r59=38;5;220:*.r60=38;5;220:*.r61=38;5;220:*.r62=38;5;220:*.r63=38;5;220:*.r64=38;5;220:*.r65=38;5;220:*.r66=38;5;220:*.r67=38;5;220:*.r68=38;5;220:*.r69=38;5;220:*.r69=38;5;220:*.r70=38;5;220:*.r71=38;5;220:*.r72=38;5;220:*.r73=38;5;220:*.r74=38;5;220:*.r75=38;5;220:*.r76=38;5;220:*.r77=38;5;220:*.r78=38;5;220:*.r79=38;5;220:*.r80=38;5;220:*.r81=38;5;220:*.r82=38;5;220:*.r83=38;5;220:*.r84=38;5;220:*.r85=38;5;220:*.r86=38;5;220:*.r87=38;5;220:*.r88=38;5;220:*.r89=38;5;220:*.r90=38;5;220:*.r91=38;5;220:*.r92=38;5;220:*.r99=38;5;220:*.r94=38;5;220:*.r95=38;5;220:*.r96=38;5;220:*.r97=38;5;220:*.r98=38;5;220:*.r99=38;5;220:*.rar=38;5;217;1:*.tar=38;5;222:*.tar.gz=38;5;216:*.tgz=38;5;214;1:*.gz=38;5;224:*.xz=38;5;182:*.zip=38;5;208:*.doc=38;5;190:*.wps=38;5;190:*.docx=38;5;190:*.xls=38;5;190:*.xlsx=38;5;190:*.ppt=38;5;190:*.pptx=38;5;190:*.pdf=38;5;190:*.djvu=38;5;190:*.cbr=38;5;190:*.cbz=38;5;190:*.chm=38;5;190:*.odt=38;5;112:*.ods=38;5;112:*.odp=38;5;112:*.odb=38;5;112:*.allow=38;5;112:*.deny=38;5;203:*.SKIP=38;5;244:*.def=38;5;136:*.directory=38;5;69:*.err=38;5;160;1:*.error=38;5;160;1:*.pi=38;5;126:*.properties=38;5;197;1:*.torrent=38;5;105:*.gp3=38;5;114:*.gp4=38;5;115:*.tg=38;5;99:*.pcap=38;5;29:*.cap=38;5;29:*.dmp=38;5;29:*.service=38;5;81:*@.service=38;5;45:*.socket=38;5;75:*.device=38;5;24:*.mount=38;5;115:*.automount=38;5;114:*.swap=38;5;113:*.target=38;5;73:*.path=38;5;116:*.timer=38;5;111:*.snapshot=38;5;139:*.desktop=38;5;113:*.crdownload=38;5;38:*.crx=38;5;13:
  11. QT_ACCESSIBILITY=1
  12. XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
  13. XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
  14. SSH_AUTH_SOCK=/tmp/ssh-BX4vAoksjc9q/agent.1027
  15. PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/java/jdk1.8.0_45/bin:/opt/maven/bin
  16. DESKTOP_SESSION=deepin
  17. QT_IM_MODULE=fcitx
  18. XDG_SESSION_TYPE=x11
  19. PWD=/home/meyer
  20. JAVA_HOME=/usr/java/jdk1.8.0_45
  21. XMODIFIERS=@im=fcitx
  22. LANG=zh_CN.UTF-8
  23. GDMSESSION=deepin
  24. M2_HOME=/opt/maven
  25. SHLVL=1
  26. XDG_SEAT=seat0
  27. HOME=/home/meyer
  28. LANGUAGE=zh_CN
  29. GNOME_DESKTOP_SESSION_ID=this-is-deprecated
  30. CUR_WIDTH=0
  31. XDG_SESSION_DESKTOP=deepin
  32. LOGNAME=meyer
  33. CLASSPATH=.:/usr/java/jdk1.8.0_45/lib/tools.jar:/usr/java/jdk1.8.0_45/lib/dt.jar
  34. QT4_IM_MODULE=fcitx
  35. DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-oZFivL4EFV,guid=07854c7dda7f4c11e1fb188156780c32
  36. TEXTDOMAIN=im-config
  37. XDG_RUNTIME_DIR=/run/user/1000
  38. DISPLAY=:0
  39. XDG_CURRENT_DESKTOP=Deepin
  40. GTK_IM_MODULE=fcitx
  41. TEXTDOMAINDIR=/usr/share/locale/
  42. XAUTHORITY=/home/meyer/.Xauthority
  43. _=/usr/bin/env
Copy the Code

Reply View the author
cxbii
deepin
2015-12-22 17:10
#20
https://bbs.deepin.org/post/34133
我按照http://bbs.deepin.org/index# 4253&extra=page%3D5这个升级fcitx 又变的可以输入了。不知 ...

好的,我发给开发者来判断问题吧
Reply View the author
1 / 2
To page