隨筆 - 67  文章 - 79  trackbacks - 0
          <2008年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          相冊(cè)

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          雖然以前籌劃過(guò)很多項(xiàng)目,但動(dòng)手去做的實(shí)在不多,能做出來(lái)的就更少了,這個(gè)scim的dbus前端算是我做的最認(rèn)真的一個(gè)了。

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

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

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

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

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



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

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

          我也想做一個(gè)scoketfrontend可是沒能成功.

          生成出來(lái)libMyfrontend.so的方法也不知道對(duì)不對(duì).
          我scim -f libMyfrontend.so后

          說(shuō)libMyfrontend.so 載入失敗.很是頭痛.希望你能看到我經(jīng)你的留言.來(lái)幫幫我~!  回復(fù)  更多評(píng)論
            
          # re: scim dbus前端 2009-03-03 16:56 趙梓安!
          這位仁兄我下載了這個(gè)東西,make通過(guò)了。我要怎么執(zhí)行呢?????  回復(fù)  更多評(píng)論
            
          # re: scim dbus前端 2009-03-03 17:05 趙梓安!
          我能看出來(lái)你這個(gè)是用python寫的。

          我python pygame_scim.py
          說(shuō)找不到

          pygame

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

          我寫的那個(gè) 基本輸入功能都有 穩(wěn)定性沒測(cè)試過(guò)...

          我留個(gè)地址 zarraxx@gmail.com   回復(fù)  更多評(píng)論
            
          # re: scim dbus前端 2009-03-04 08:41 趙梓安!
          真高興能與你取得聯(lián)系。

          我寫的frontend成功了。現(xiàn)在是早上八點(diǎn)多剛上班。

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


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

          我也做了一個(gè) frontend。通過(guò)scim -f ./libm.so實(shí)現(xiàn)了我想要的。

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

          我決定試試。再此謝過(guò)!
            回復(fù)  更多評(píng)論
            
          # re: scim dbus前端 2009-03-04 10:39 趙梓安!
          你的東西我運(yùn)行了.

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

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

          你讓我認(rèn)識(shí)了python這個(gè)腳本  回復(fù)  更多評(píng)論
            
          # re: scim dbus前端 2009-03-04 12:27 趙梓安!
          呵呵,果真好使,你這樣的天才難遇呀!

          能不能加我個(gè)好友.

          fhqsuhpv@163.com

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

          我想問(wèn)一下哦。你那面的fronend有一個(gè)配置器scim-adaptor.h
          我想這個(gè)是C++的對(duì)吧!

          那我想為QT提供一個(gè)接口我應(yīng)怎么辦。

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

          結(jié)果出現(xiàn)了scim-intrf.h scim-intrf.cpp 文件。

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

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

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

          import locale, sye 為什么要引他,他是哪來(lái)的,有什么用?

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

          這是什么意思呢!我要用QT怎么獲取呢?????  回復(fù)  更多評(píng)論
            
          # re: scim dbus前端 2009-03-06 16:10 
          我的同事問(wèn)我問(wèn)題時(shí),我一下想起來(lái)!

          我感覺是從系統(tǒng)上獲取的.語(yǔ)言和編碼!

          你的邏輯思維真不一般.  回復(fù)  更多評(píng)論
            
          # re: scim dbus前端 2009-03-07 22:06 zarra
          scim輸入法服務(wù)器 這東西是支持多語(yǔ)言的,在語(yǔ)言下還支持多編碼
          作frontend 當(dāng)然應(yīng)該找到系統(tǒng)當(dāng)前的語(yǔ)言和編碼 作為默認(rèn)值
          難不成在中文locale里 每次調(diào)出來(lái)的都是默認(rèn)的en 要手動(dòng)切下語(yǔ)言  回復(fù)  更多評(píng)論
            
          # re: scim dbus前端 2009-03-09 09:00 
          不是說(shuō)你獲取這一行寫的代碼不一般。。。。是你正個(gè)的邏輯思維!~  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 华亭县| 内江市| 武安市| 手机| 蕉岭县| 涡阳县| 昌江| 赤水市| 竹溪县| 慈利县| 昆明市| 临猗县| 富锦市| 黎川县| 成都市| 宜君县| 无棣县| 武宣县| 扶风县| 沙坪坝区| 安康市| 屏边| 铁力市| 清河县| 高碑店市| 甘孜| 长顺县| 内黄县| 莱州市| 广丰县| 清水河县| 渭源县| 田阳县| 黄冈市| 滨海县| 贵阳市| 响水县| 城口县| 阿拉尔市| 石棉县| 台中市|