Linux下使用aMsn详解


amsn这一款在linux下的Msn就不多介绍了,0.95版出来后加入了摄像头,在加上其文件传输功能,你还留恋于gaim么?

 

  经过多天的搜索和尝试,终于在Fedora Core3里用上amsn了。其实安装amsn并run起来不难(不过我基本上从不能运行到能运行,不能输入任何字符到能输入英文,不能输入中文到能输入中文的问题都遇到了,还遇到程序段错误等等,也够衰的了),尤其是中文输入的问题是有点麻烦,因为开发amsn的语言是Tcl/tk, 对中文的支持不是太好,加之amsn-0.95需要tcl/tk 8.4以上支持,故以前jserv兄的tcl/tk 8.3 XIM patch不能用了,不过前几天他推出了一个diff,总算让偶找到了,活活。ok,闲话不多说了。
安装amsn的必要条件:

  1.gcc之类编译工具必不可少,涉及相应类库,如果你在编译时出错,烦请自己上网搜相应的包安装.

  2.tcl8.5a3-src.tar.gz

  3.tk8.5a3-src.tar.gz 以上两个包都可以在tcl/tk的官方网站下载得到

  4.amsn-0.95.tar.gz 这里需要说明一下,amsn.sourceforge.net上有很多amsn的版本诸如bin,rpm等,甚至有专为Fedora的rpm包,不过鄙人不推荐使用那些,在列表里选取“other”,下载amsn-0.95.tar.gz。

  5. tk-cvs-xim-fixes.diff 下载地址http://jserv.sayya.org/tcl-i18n/tk-cvs-xim-fixes.diff

  当获取这些文件后,我们将之放在/home目录下

  为了造成不必要的困扰,先删除系统中自带的tcl和tk


CODE:[root@localhost ~]#rpm -qa|grep tcl
tcl8.4*****
[root@localhost ~]#rpm -e tcl
[root@localhost ~]#rpm -qa|grep tk
tk8.4*****
[root@localhost ~]#rpm -e tk
  如果卸载tcl发现有其他安装包依赖于tcl,如果那些包不重要,就先删那些包,当然你也可以rpm -e --nodeps tcl卸载。


CODE:[root@localhost home]# tar xvzf tcl8.5a3-src.tar.gz
[root@localhost home]# tar xvzf tk8.5a3-src.tar.gz
  在安装它们之前需要先进行diff打patch,命令很简单:patch -p0 < tk-cvs-xim-fixes.diff
不过为大家解析一下jserv大大的这个patch文件内容,这样理解起来大家更容易些,中文输入都是我说的话(针对Linux菜鸟,汗!其实偶也是菜鸟)


CODE:Index: generic/tkEvent.c
===================================================================
RCS file: /home/tk8.5a3/generic/tkEvent.c,v      //遭修改的文件 tkEvent.c
retrieving revision 1.31
diff -u -p -r1.31 tkEvent.c
--- generic/tkEvent.c        4 Nov 2005 11:52:50 -0000        1.31
+++ generic/tkEvent.c        4 Jan 2006 06:31:19 -0000
@@ -449,8 +449,10 @@ InvokeInputMethods(         //大概在449行左右的位置,在InvokeInputMethods方法里
                XSetICFocus(winPtr->inputContext);
            }
        }
-        if (XFilterEvent(eventPtr, None)) {        // 删
-            return 1;                              //删
+        if (eventPtr->type == KeyPress || eventPtr->type == KeyRelease) { //增加的内容
+            if (XFilterEvent(eventPtr, None)) {    //增加
+                return 1;                          //增加
+            }                                                 //增加
        }
     }
     return 0;
Index: unix/tkUnixEvent.c
===================================================================
RCS file: /home/tk8.5a3/unix/tkUnixEvent.c,v    
retrieving revision 1.19
diff -u -p -r1.19 tkUnixEvent.c
--- unix/tkUnixEvent.c        7 Dec 2005 17:32:52 -0000        1.19
+++ unix/tkUnixEvent.c        4 Jan 2006 06:31:20 -0000
@@ -334,19 +334,22 @@ static void
TransferXEventsToTcl(
     Display *display)
{
-    int numFound;
     XEvent event;

-    numFound = QLength(display);
-
     /*
-     * Transfer events from the X event queue to the Tk event queue.
+     * Transfer events from the X event queue to the Tk event queue
+     * after XIM event filtering.  KeyPress and KeyRelease events
+     * are filtered in Tk_HandleEvent instead of here, so that Tk's
+     * focus management code can redirect them.
      */
-
-    while (numFound > 0) {
+    while (QLength(display) > 0) {
        XNextEvent(display, &event);
+        if (event.type != KeyPress && event.type != KeyRelease) {
+            if (XFilterEvent(&event, None)) {
+                continue;
+            }
+        }
        Tk_QueueWindowEvent(&event, TCL_QUEUE_TAIL);
-        numFound--;
     }
}

下面安装这些软件:


CODE:[root@localhost home]# cd tcl8.5a3
[root@localhost home]# cd unix
[root@localhost home]# ./configure --prefix=/usr \
                                   --enable-gcc \
                                   --disable-threads \
                                   --disable-shared       
[root@localhost home]# make clean                  
[root@localhost home]# make
[root@localhost home]# make install

 

CODE:[root@localhost home]# cd tk8.5a3
[root@localhost home]# cd unix
[root@localhost home]# ./configure --prefix=/usr \
                                   --enable-gcc \
                                   --disable-threads \
                                   --disable-shared \
                                   --enable-xft \
                                   --disable-symbols
[root@localhost home]# make clean
[root@localhost home]# make
[root@localhost home]# make install
非常关键的两个link!!!


CODE:[root@localhost home]#ln -s /usr/bin/wish8.5 /usr/bin/wish
[root@localhost home]#ln -s /usr/bin/tclsh8.5 /usr/bin/tclsh
最后解压amsn-0.95.tar.gz


CODE:[root@localhost home]# tar xvzf amsn-0.95.tar.gz
[root@localhost home]# cd amsn -0.95
[root@localhost home]# ./configure --with-tcl=/usr/lib && make clean && make
最后运行amsn ,大功告成!


CODE:[root@localhost home]# ./amsn

本文作者:



相关阅读:
一起学WP7 XNA游戏开发(三.二 Sprite Texture Font)
一个css transform效果 很有图片的感觉
ASP.NET通过使页面动态加载不同CSS实现多界面
Ubuntu 7.10 Linux系统绑定IP及MAC地址
mysql筛选GROUP BY多个字段组合时的用法分享
JavaScript中值类型与引用类型实例说明
实现javascript的延期执行或者重复执行的两个函数
JavaScript 中的 this, call, apply, bind...
JAVASCRIPT中的window.location和document.location
ASP.NET Internet安全Forms身份验证方法
PHP匹配变音使404页面更加智能化
帝国CMS 功能解密 网站安全防火墙使用说明
使用os3grid做一个基于Web和Ajax的工资表录入界面
Oracle 9i中自动撤销管理的优点分析
快速导航

Copyright © 2016 phpStudy |