cht電腦資訊gcin
adm Find login register

GCIN + Emacs

料功益
1 GCIN + Emacs
Promote 0 Bookmark 02010-01-17quote  

不知道Gcin可不可以像Scim-bridge那樣,可以從別的程式呼叫輸入法。

我想用gcin來寫一個給Emacs用的輸入法,我有發現gcin提供了

libgcin-im-client.so.1但我不知道如何寫一個程式來呼叫這個lib

如不棄, 煩請各位提供建議

 謝謝!

eliu
2
Promote 0 Bookmark 02010-01-17quote  

可以參考 gcin source 裏面的 gcin-x.x.x/gtk-im/gtkimcontextgcin.c

也就是 gcin's GTK  IM module

與 scim 比一下大小 就知道困難度,應該是不難。有問題再問。

/usr/lib/gtk-2.0/immodules/im-gcin.so: 11140
/usr/lib/gtk-2.0/immodules/im-scim.so: 133360

/usr/lib/gcin/libgcin-im-client.so.1.2.1 13388

edited: 1
料功益
3
Promote 0 Bookmark 02010-01-17quote  

我想我可能不必作到像 im-gcin.so那麼複雜的功能, 

只要知道gcin的socket在哪, 連上去,輸入中文,

結束,關掉client

如此而已, 不知有什麼比較簡單的approach?

eliu
4
Promote 0 Bookmark 02010-01-17quote  

可以直接看 gcin-im-client.h裏面的 function,不明白再參考 gtkimcontextgcin.c。

直接連上 gcin 的 socket 操作不是正確的作法,這就等於做了 libgcin-im-client.so 裏面的事, 透過 libgcin-im-client.so 的 function 應該比較簡單。

料功益
5
Promote 0 Bookmark 02010-01-17quote  

看來要跟SCIM一樣,要寫一個agent,讓這個agent當handler,再讓Emacs連到這個handler了

eliu
6
Promote 0 Bookmark 02010-01-17quote  
Gong-Yi

看來要跟SCIM一樣,要寫一個agent,讓這個agent當handler,再讓Emacs連到這個handler了

為什麼要那麼複雜?emacs 的 plugin 不可以 call C function ?

料功益
7
Promote 0 Bookmark 02010-01-17quote  

好像是沒辦法,要寫一個agent執行,然後再讓Emacs以IPC的方式連上去 

gcin支援dbus嗎?

eliu
8
Promote 0 Bookmark 02010-01-17quote  

如果真的不行,把 im-client/gcin-im-client.cpp

改成用 emacs 直接用 socket IPC,只是 protocol有變動,必須也跟著變。目前是很少有變動。

caleb
9
Promote 0 Bookmark 02010-01-18quote  

uim 也有 emacs plugin 可以查查看。

不過我沒研究 uim/scim 是怎麼實作的。 

料功益
10
Promote 0 Bookmark 02010-01-18quote  
感謝,我試試看能不能改改UIM的Lisp給gcin用

cht電腦資訊gcin
adm Find login register
views:22747