隨筆 - 67  文章 - 79  trackbacks - 0
          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          雖然以前籌劃過很多項目,但動手去做的實在不多,能做出來的就更少了,這個scim的dbus前端算是我做的最認真的一個了。

          這個項目是為了解決linux環境下,一些特殊的應用(比如游戲程序)i18n文字輸入問題。雖然SDL從1.2.13開始支持了xim,但還是很不完善,至少我不能解決全屏模式下的輸入法問題。所以我想沿用win32下的游戲模式,傳遞鍵盤事件給輸入法引擎,得到一組lookup字符串,再自己畫出IM Panel。

          XIM好像很難這樣作(這年頭講xlib的書難找,我看過《Xlib Programming Manual》的i18n部分后,還是沒有找到基于xim的解決方法)。
          SCIM的SocketFrontEnd有點這個意思,不過還是不行。所以我想自己作一個scim的frontEnd 來提供類似候選字符串的查找的功能。本來想基于SocketFrontEnd的,但是發覺這樣做的話,客戶端的程序勢必要依賴scim(或者抄寫一遍scim的frontEnd和socket頭文件),并且也不利于其他語言的binging,所以決定作一個dbus模式server。選擇scim而不是xim的一個附帶效果就是,client可以不依賴X,這樣即使是console或者是fb下的i18n環境也可以簡單的調用scim輸入法服務。

          關于scim,dbus的文檔不多,所以了解他們的結構和用法多半只能看代碼。scim的頭文件的注釋很詳細,代碼的結構也清晰,基本上花了2天時間就了解了scim的FrontEnd。但是dbus就不容易了,雖然有glib和qt的binging,但是我想這應該是GP和元編成大展身手的地方。看著freedesktop上的Reference寫了一些Pure C++ binging后,才發現自己重復造輪子了。早有個Pure C++ dbus binging在freedesktop的git上http://www.freedesktop.org/wiki/Software/dbus-c%2B%2B 。所以雖然tarball里面自己寫的代碼沒幾K,一大半還是從freedesktop上git來的dbus-c++ binging。

          由于全部是在用業余時間在做,目前的代碼僅能做到在我的機器上完成大部分功能。構建方面我也不是很懂,所以目前make文件慘不忍睹、極不規范。目前自己設計的scim-introspection.xml中,提出的接口里還是幾個冷門的方法沒實現,scim中還有幾個方法和信號不清楚怎么用dbus傳,有些應該是用object的參數(比如lookup對象)被我用StringList簡化了,這些都是要繼續完善的部分。我希望將來dbus能成為scim默認提供的frontend之一。

          代碼:http://www.aygfsteel.com/Files/zarra/scim-dbus-frontend.zip
          pygame 演示:



          posted on 2008-07-11 09:40 zarra 閱讀(876) 評論(17)  編輯  收藏

          FeedBack:
          # re: scim dbus前端[未登錄] 2008-07-28 10:47 apple
          這個界面還是相當熟悉的.......
          代碼還是看不懂,幾個月來發現自己一點長進也沒有
          慚愧啊~~`  回復  更多評論
            
          # re: scim dbus前端 2009-03-03 10:58 趙梓安!
          真是不好意思。我是09年2月看到你這個博文的。事隔半年了.不知道這位人兄對scim的前端開發是否還有趣興.

          我也想做一個scoketfrontend可是沒能成功.

          生成出來libMyfrontend.so的方法也不知道對不對.
          我scim -f libMyfrontend.so后

          說libMyfrontend.so 載入失敗.很是頭痛.希望你能看到我經你的留言.來幫幫我~!  回復  更多評論
            
          # re: scim dbus前端 2009-03-03 16:56 趙梓安!
          這位仁兄我下載了這個東西,make通過了。我要怎么執行呢?????  回復  更多評論
            
          # re: scim dbus前端 2009-03-03 17:05 趙梓安!
          我能看出來你這個是用python寫的。

          我python pygame_scim.py
          說找不到

          pygame

          這個東西。你能不能把完全包借小弟用一用。
          我想用QTE寫一個界面~!  回復  更多評論
            
          # re: scim dbus前端 2009-03-03 21:39 zarra
          scim 的dbus 前端是用C++寫的 用了dbusc++ 這個庫 已經包含在代碼中
          一個python 程序是使用 dbus來和scim通訊的一個演示,使用了pygame
          基本所有的發行版都有它 #>apt-get install pygame
          不過 我后來發現了 ibus 這個項目 也是一個dbus 接口的輸入法服務器 但是依賴很多

          我寫的那個 基本輸入功能都有 穩定性沒測試過...

          我留個地址 zarraxx@gmail.com   回復  更多評論
            
          # re: scim dbus前端 2009-03-04 08:41 趙梓安!
          真高興能與你取得聯系。

          我寫的frontend成功了。現在是早上八點多剛上班。

          我非常興奮能看到你的留言。


          我決定試一下你給的見意!謝謝!  回復  更多評論
            
          # re: scim dbus前端 2009-03-04 08:45 趙梓安!
          真的很高興能與你取得聯系。

          我也做了一個 frontend。通過scim -f ./libm.so實現了我想要的。

          現在是早是八點多,我剛上班一打開你的博看到你的留言后我非常高興。

          我決定試試。再此謝過!
            回復  更多評論
            
          # re: scim dbus前端 2009-03-04 10:39 趙梓安!
          你的東西我運行了.

          是好使的但我沒有YaHei.Consolas.1.12.ttf字休.所以我用了None這個代替之后我看到的都是小格子.

          我正下載它,不知道下來之后要放在哪個路徑下!  回復  更多評論
            
          # re: scim dbus前端[未登錄] 2009-03-04 12:09 zarra
          不一定要用 YaHei.Consolas.1.12.ttf 隨便放個中文字體文件在 py 文件同目錄下就好了
          同時別忘記改下 py 文件中的 font=pygame.font.Font('YaHei.Consolas.1.12.ttf',12) 這行   回復  更多評論
            
          # re: scim dbus前端 2009-03-04 12:12 趙梓安!
          我這個字體已經下來了.

          你讓我認識了python這個腳本  回復  更多評論
            
          # re: scim dbus前端 2009-03-04 12:27 趙梓安!
          呵呵,果真好使,你這樣的天才難遇呀!

          能不能加我個好友.

          fhqsuhpv@163.com

          我在努力吧你的python改寫為QTE4的程序!  回復  更多評論
            
          # re: scim dbus前端 2009-03-04 15:04 趙梓安!
          我想改成QT這個想法現實嗎?  回復  更多評論
            
          # re: scim dbus前端 2009-03-06 10:11 
          你好,還是我~!

          我想問一下哦。你那面的fronend有一個配置器scim-adaptor.h
          我想這個是C++的對吧!

          那我想為QT提供一個接口我應怎么辦。

          我用了qdbusxml2cpp (你好那個)scim-introspection.xml -p scim-intrf

          結果出現了scim-intrf.h scim-intrf.cpp 文件。

          當我把他們當成QT的接口make時。出現了scim-intrf.o:(許多)**未定義的引用

          我該怎么辦!!!  回復  更多評論
            
          # re: scim dbus前端 2009-03-06 15:42 
          我在我的Makefile中加入了-lQtDBus之后上面的那個錯誤就沒有了.

          同在我又在分析你的那個python的程序.大多都注上的注解.有一個地方我不明白.

          import locale, sye 為什么要引他,他是哪來的,有什么用?

          self.language,self.encoding =locale.getdefaultlocale()
          這句我能從字面上理解是獲取默認的locale....

          這是什么意思呢!我要用QT怎么獲取呢?????  回復  更多評論
            
          # re: scim dbus前端 2009-03-06 16:10 
          我的同事問我問題時,我一下想起來!

          我感覺是從系統上獲取的.語言和編碼!

          你的邏輯思維真不一般.  回復  更多評論
            
          # re: scim dbus前端 2009-03-07 22:06 zarra
          scim輸入法服務器 這東西是支持多語言的,在語言下還支持多編碼
          作frontend 當然應該找到系統當前的語言和編碼 作為默認值
          難不成在中文locale里 每次調出來的都是默認的en 要手動切下語言  回復  更多評論
            
          # re: scim dbus前端 2009-03-09 09:00 
          不是說你獲取這一行寫的代碼不一般。。。。是你正個的邏輯思維!~  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 青州市| 通州市| 杭锦后旗| 富裕县| 江口县| 清涧县| 若羌县| 嘉禾县| 平和县| 普洱| 防城港市| 峡江县| 临夏县| 宜州市| 库伦旗| 中方县| 芒康县| 青田县| 靖安县| 新野县| 和平县| 宜兰市| 洮南市| 增城市| 施秉县| 五常市| 山西省| 庄河市| 安吉县| 南陵县| 普兰店市| 孝昌县| 无棣县| 景谷| 个旧市| 萨迦县| 南安市| 壤塘县| 孟津县| 新竹县| 建湖县|